Bug 1255378 - fix getCSSValuesForProperty for box-shadow and text-shadow; r=heycam,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

--HG--
extra : rebase_source : eba2d3e7337af63c264bf3d596740f311c4aa017
This commit is contained in:
Tom Tromey 2018-01-17 10:34:34 -07:00
parent 2172ef0b6f
commit 6dba28ecb2
4 changed files with 55 additions and 21 deletions

View File

@ -2021,9 +2021,18 @@ exports.CSS_PROPERTIES = {
6 6
], ],
"values": [ "values": [
"COLOR",
"calc",
"currentColor",
"hsl",
"hsla",
"inherit", "inherit",
"initial", "initial",
"inset", "inset",
"none",
"rgb",
"rgba",
"transparent",
"unset" "unset"
] ]
}, },
@ -4869,9 +4878,18 @@ exports.CSS_PROPERTIES = {
6 6
], ],
"values": [ "values": [
"COLOR",
"calc",
"currentColor",
"hsl",
"hsla",
"inherit", "inherit",
"initial", "initial",
"inset", "inset",
"none",
"rgb",
"rgba",
"transparent",
"unset" "unset"
] ]
}, },
@ -8838,8 +8856,17 @@ exports.CSS_PROPERTIES = {
6 6
], ],
"values": [ "values": [
"COLOR",
"calc",
"currentColor",
"hsl",
"hsla",
"inherit", "inherit",
"initial", "initial",
"none",
"rgb",
"rgba",
"transparent",
"unset" "unset"
] ]
}, },

View File

@ -611,26 +611,27 @@ PropertySupportsVariant(nsCSSPropertyID aPropertyID, uint32_t aVariant)
return false; return false;
} }
// Properties that are parsed by functions must have their uint32_t supported = nsCSSProps::ParserVariant(aPropertyID);
// attributes hand-maintained here.
// 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) || if (nsCSSProps::PropHasFlags(aPropertyID, CSS_PROPERTY_VALUE_PARSER_FUNCTION) ||
nsCSSProps::PropertyParseType(aPropertyID) == CSS_PROPERTY_PARSE_FUNCTION) { nsCSSProps::PropertyParseType(aPropertyID) == CSS_PROPERTY_PARSE_FUNCTION) {
// These must all be special-cased. // These must all be special-cased.
uint32_t supported;
switch (aPropertyID) { switch (aPropertyID) {
case eCSSProperty_border_image_slice: case eCSSProperty_border_image_slice:
case eCSSProperty_grid_template: case eCSSProperty_grid_template:
case eCSSProperty_grid: case eCSSProperty_grid:
supported = VARIANT_PN; supported |= VARIANT_PN;
break; break;
case eCSSProperty_border_image_outset: case eCSSProperty_border_image_outset:
supported = VARIANT_LN; supported |= VARIANT_LN;
break; break;
case eCSSProperty_border_image_width: case eCSSProperty_border_image_width:
case eCSSProperty_stroke_dasharray: case eCSSProperty_stroke_dasharray:
supported = VARIANT_LPN; supported |= VARIANT_LPN;
break; break;
case eCSSProperty_border_top_left_radius: case eCSSProperty_border_top_left_radius:
@ -659,39 +660,39 @@ PropertySupportsVariant(nsCSSPropertyID aPropertyID, uint32_t aVariant)
case eCSSProperty__moz_outline_radius_bottomleft: case eCSSProperty__moz_outline_radius_bottomleft:
case eCSSProperty__moz_outline_radius_bottomright: case eCSSProperty__moz_outline_radius_bottomright:
case eCSSProperty__moz_window_transform_origin: case eCSSProperty__moz_window_transform_origin:
supported = VARIANT_LP; supported |= VARIANT_LP;
break; break;
case eCSSProperty_text_shadow: case eCSSProperty_text_shadow:
case eCSSProperty_box_shadow: case eCSSProperty_box_shadow:
supported = VARIANT_LENGTH | VARIANT_COLOR; supported |= VARIANT_LENGTH | VARIANT_COLOR;
break; break;
case eCSSProperty_border_spacing: case eCSSProperty_border_spacing:
supported = VARIANT_LENGTH; supported |= VARIANT_LENGTH;
break; break;
case eCSSProperty_content: case eCSSProperty_content:
case eCSSProperty_cursor: case eCSSProperty_cursor:
case eCSSProperty_clip_path: case eCSSProperty_clip_path:
supported = VARIANT_URL; supported |= VARIANT_URL;
break; break;
case eCSSProperty_shape_outside: case eCSSProperty_shape_outside:
supported = VARIANT_IMAGE; supported |= VARIANT_IMAGE;
break; break;
case eCSSProperty_fill: case eCSSProperty_fill:
case eCSSProperty_stroke: case eCSSProperty_stroke:
supported = VARIANT_COLOR | VARIANT_URL; supported |= VARIANT_COLOR | VARIANT_URL;
break; break;
case eCSSProperty_image_orientation: case eCSSProperty_image_orientation:
supported = VARIANT_ANGLE; supported |= VARIANT_ANGLE;
break; break;
case eCSSProperty_filter: case eCSSProperty_filter:
supported = VARIANT_URL; supported |= VARIANT_URL;
break; break;
case eCSSProperty_grid_column_start: case eCSSProperty_grid_column_start:
@ -700,18 +701,15 @@ PropertySupportsVariant(nsCSSPropertyID aPropertyID, uint32_t aVariant)
case eCSSProperty_grid_row_end: case eCSSProperty_grid_row_end:
case eCSSProperty_font_weight: case eCSSProperty_font_weight:
case eCSSProperty_initial_letter: case eCSSProperty_initial_letter:
supported = VARIANT_NUMBER; supported |= VARIANT_NUMBER;
break; break;
default: default:
supported = 0;
break; break;
} }
return (supported & aVariant) != 0;
} }
return (nsCSSProps::ParserVariant(aPropertyID) & aVariant) != 0; return (supported & aVariant) != 0;
} }
bool bool

View File

@ -187,6 +187,15 @@ function do_test() {
ok(testValues(values, expected), "property " + prop + "'s values"); 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.finish();
} }

View File

@ -1310,7 +1310,7 @@ CSS_PROP_EFFECTS(
CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED, CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
// NOTE: some components must be nonnegative // NOTE: some components must be nonnegative
"", "",
0, VARIANT_COLOR | VARIANT_LENGTH | VARIANT_CALC | VARIANT_INHERIT | VARIANT_NONE,
kBoxShadowTypeKTable, kBoxShadowTypeKTable,
offsetof(nsStyleEffects, mBoxShadow), offsetof(nsStyleEffects, mBoxShadow),
eStyleAnimType_Shadow) eStyleAnimType_Shadow)
@ -4130,7 +4130,7 @@ CSS_PROP_TEXT(
CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED, CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
// NOTE: some components must be nonnegative // NOTE: some components must be nonnegative
"", "",
0, VARIANT_COLOR | VARIANT_LENGTH | VARIANT_CALC | VARIANT_INHERIT | VARIANT_NONE,
nullptr, nullptr,
offsetof(nsStyleText, mTextShadow), offsetof(nsStyleText, mTextShadow),
eStyleAnimType_Shadow) eStyleAnimType_Shadow)