Bug 1255378 - fix getCSSValuesForProperty for box-shadow and text-shadow; r?jryans
This fixes InspectorUtils.getCSSValuesForProperty to return the
correct values for box-shadow and text-shadow. It also takes a small
step toward the goal of getting rid of
InspectorUtils.cpp:PropertySupportsVariant, in favor of having all
variants listed in nsCSSPropList.h.
MozReview-Commit-ID: Dwh5s0IvYTX
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -2016,19 +2016,28 @@ exports.CSS_PROPERTIES = {
"subproperties": [
"box-shadow"
],
"supports": [
2,
6
],
"values": [
+ "COLOR",
+ "calc",
+ "currentColor",
+ "hsl",
+ "hsla",
"inherit",
"initial",
"inset",
+ "none",
+ "rgb",
+ "rgba",
+ "transparent",
"unset"
]
},
"-webkit-box-sizing": {
"isInherited": false,
"subproperties": [
"box-sizing"
],
@@ -4864,19 +4873,28 @@ exports.CSS_PROPERTIES = {
"subproperties": [
"box-shadow"
],
"supports": [
2,
6
],
"values": [
+ "COLOR",
+ "calc",
+ "currentColor",
+ "hsl",
+ "hsla",
"inherit",
"initial",
"inset",
+ "none",
+ "rgb",
+ "rgba",
+ "transparent",
"unset"
]
},
"box-sizing": {
"isInherited": false,
"subproperties": [
"box-sizing"
],
@@ -8833,18 +8851,27 @@ exports.CSS_PROPERTIES = {
"subproperties": [
"text-shadow"
],
"supports": [
2,
6
],
"values": [
- "inherit",
- "initial",
+ "COLOR",
+ "calc",
+ "currentColor",
+ "hsl",
+ "hsla",
+ "inherit",
+ "initial",
+ "none",
+ "rgb",
+ "rgba",
+ "transparent",
"unset"
]
},
"text-transform": {
"isInherited": true,
"subproperties": [
"text-transform"
],
--- a/layout/inspector/InspectorUtils.cpp
+++ b/layout/inspector/InspectorUtils.cpp
@@ -606,36 +606,37 @@ PropertySupportsVariant(nsCSSPropertyID
*props != eCSSProperty_UNKNOWN; ++props) {
if (PropertySupportsVariant(*props, aVariant)) {
return true;
}
}
return false;
}
- // Properties that are parsed by functions must have their
- // attributes hand-maintained here.
+ uint32_t supported = nsCSSProps::ParserVariant(aPropertyID);
+
+ // For the time being, properties that are parsed by functions must
+ // have some of their attributes hand-maintained here.
if (nsCSSProps::PropHasFlags(aPropertyID, CSS_PROPERTY_VALUE_PARSER_FUNCTION) ||
nsCSSProps::PropertyParseType(aPropertyID) == CSS_PROPERTY_PARSE_FUNCTION) {
// These must all be special-cased.
- uint32_t supported;
switch (aPropertyID) {
case eCSSProperty_border_image_slice:
case eCSSProperty_grid_template:
case eCSSProperty_grid:
- supported = VARIANT_PN;
+ supported |= VARIANT_PN;
break;
case eCSSProperty_border_image_outset:
- supported = VARIANT_LN;
+ supported |= VARIANT_LN;
break;
case eCSSProperty_border_image_width:
case eCSSProperty_stroke_dasharray:
- supported = VARIANT_LPN;
+ supported |= VARIANT_LPN;
break;
case eCSSProperty_border_top_left_radius:
case eCSSProperty_border_top_right_radius:
case eCSSProperty_border_bottom_left_radius:
case eCSSProperty_border_bottom_right_radius:
case eCSSProperty_background_position:
case eCSSProperty_background_position_x:
@@ -654,69 +655,66 @@ PropertySupportsVariant(nsCSSPropertyID
case eCSSProperty_scroll_snap_destination:
case eCSSProperty_transform_origin:
case eCSSProperty_perspective_origin:
case eCSSProperty__moz_outline_radius_topleft:
case eCSSProperty__moz_outline_radius_topright:
case eCSSProperty__moz_outline_radius_bottomleft:
case eCSSProperty__moz_outline_radius_bottomright:
case eCSSProperty__moz_window_transform_origin:
- supported = VARIANT_LP;
+ supported |= VARIANT_LP;
break;
case eCSSProperty_text_shadow:
case eCSSProperty_box_shadow:
- supported = VARIANT_LENGTH | VARIANT_COLOR;
+ supported |= VARIANT_LENGTH | VARIANT_COLOR;
break;
case eCSSProperty_border_spacing:
- supported = VARIANT_LENGTH;
+ supported |= VARIANT_LENGTH;
break;
case eCSSProperty_content:
case eCSSProperty_cursor:
case eCSSProperty_clip_path:
- supported = VARIANT_URL;
+ supported |= VARIANT_URL;
break;
case eCSSProperty_shape_outside:
- supported = VARIANT_IMAGE;
+ supported |= VARIANT_IMAGE;
break;
case eCSSProperty_fill:
case eCSSProperty_stroke:
- supported = VARIANT_COLOR | VARIANT_URL;
+ supported |= VARIANT_COLOR | VARIANT_URL;
break;
case eCSSProperty_image_orientation:
- supported = VARIANT_ANGLE;
+ supported |= VARIANT_ANGLE;
break;
case eCSSProperty_filter:
- supported = VARIANT_URL;
+ supported |= VARIANT_URL;
break;
case eCSSProperty_grid_column_start:
case eCSSProperty_grid_column_end:
case eCSSProperty_grid_row_start:
case eCSSProperty_grid_row_end:
case eCSSProperty_font_weight:
case eCSSProperty_initial_letter:
- supported = VARIANT_NUMBER;
+ supported |= VARIANT_NUMBER;
break;
default:
- supported = 0;
break;
}
-
- return (supported & aVariant) != 0;
}
- return (nsCSSProps::ParserVariant(aPropertyID) & aVariant) != 0;
+ return (supported & aVariant) != 0;
}
bool
InspectorUtils::CssPropertySupportsType(GlobalObject& aGlobalObject,
const nsAString& aProperty,
uint32_t aType,
ErrorResult& aRv)
{
--- a/layout/inspector/tests/test_bug877690.html
+++ b/layout/inspector/tests/test_bug877690.html
@@ -182,16 +182,25 @@ function do_test() {
// Regression test for bug 1255402.
var expected = [ "inherit", "initial", "unset", "left", "right",
"top", "center", "bottom", "calc" ];
for (prop of ["object-position", "perspective-origin"]) {
var values = InspectorUtils.getCSSValuesForProperty(prop);
ok(testValues(values, expected), "property " + prop + "'s values");
}
+ // Regression test for bug 1255378.
+ var expected = [ "inherit", "initial", "unset", "none", "calc", ...allColors ];
+ var values = InspectorUtils.getCSSValuesForProperty("text-shadow");
+ ok(testValues(values, expected), "property text-shadow's values");
+
+ var expected = [ "inherit", "initial", "unset", "inset", "none", "calc", ...allColors ];
+ var values = InspectorUtils.getCSSValuesForProperty("box-shadow");
+ ok(testValues(values, expected), "property box-shadow's values");
+
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
addLoadEvent(do_test);
</script>
</head>
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -1305,17 +1305,17 @@ CSS_PROP_EFFECTS(
box_shadow,
BoxShadow,
CSS_PROPERTY_PARSE_FUNCTION |
CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
CSS_PROPERTY_VALUE_LIST_USES_COMMAS |
CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
// NOTE: some components must be nonnegative
"",
- 0,
+ VARIANT_COLOR | VARIANT_LENGTH | VARIANT_CALC | VARIANT_INHERIT | VARIANT_NONE,
kBoxShadowTypeKTable,
offsetof(nsStyleEffects, mBoxShadow),
eStyleAnimType_Shadow)
CSS_PROP_POSITION(
box-sizing,
box_sizing,
BoxSizing,
CSS_PROPERTY_PARSE_VALUE,
@@ -4125,17 +4125,17 @@ CSS_PROP_TEXT(
TextShadow,
CSS_PROPERTY_PARSE_FUNCTION |
CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE |
CSS_PROPERTY_APPLIES_TO_PLACEHOLDER |
CSS_PROPERTY_VALUE_LIST_USES_COMMAS |
CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
// NOTE: some components must be nonnegative
"",
- 0,
+ VARIANT_COLOR | VARIANT_LENGTH | VARIANT_CALC | VARIANT_INHERIT | VARIANT_NONE,
nullptr,
offsetof(nsStyleText, mTextShadow),
eStyleAnimType_Shadow)
CSS_PROP_TEXT(
-moz-text-size-adjust,
_moz_text_size_adjust,
CSS_PROP_DOMPROP_PREFIXED(TextSizeAdjust),
CSS_PROPERTY_PARSE_VALUE,