Bug 1339619 - Refactor parsing code for '-moz-text-size-adjust' to use the (more conventional) keyword table approach to calculate computed style. r?dholbert
MozReview-Commit-ID: 2mawqnlUh8t
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -4100,18 +4100,18 @@ CSS_PROP_TEXT(
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,
"",
- VARIANT_AUTO | VARIANT_NONE | VARIANT_INHERIT,
- nullptr,
+ VARIANT_HK,
+ kTextSizeAdjustKTable,
CSS_PROP_NO_OFFSET,
eStyleAnimType_Discrete)
CSS_PROP_SHORTHAND(
-webkit-text-stroke,
_webkit_text_stroke,
WebkitTextStroke,
CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.prefixes.webkit")
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -2059,16 +2059,22 @@ const KTableEntry nsCSSProps::kTextEmpha
};
const KTableEntry nsCSSProps::kTextOverflowKTable[] = {
{ eCSSKeyword_clip, NS_STYLE_TEXT_OVERFLOW_CLIP },
{ eCSSKeyword_ellipsis, NS_STYLE_TEXT_OVERFLOW_ELLIPSIS },
{ eCSSKeyword_UNKNOWN, -1 }
};
+const KTableEntry nsCSSProps::kTextSizeAdjustKTable[] = {
+ { eCSSKeyword_none, NS_STYLE_TEXT_SIZE_ADJUST_NONE },
+ { eCSSKeyword_auto, NS_STYLE_TEXT_SIZE_ADJUST_AUTO },
+ { eCSSKeyword_UNKNOWN, -1 }
+};
+
const KTableEntry nsCSSProps::kTextTransformKTable[] = {
{ eCSSKeyword_none, NS_STYLE_TEXT_TRANSFORM_NONE },
{ eCSSKeyword_capitalize, NS_STYLE_TEXT_TRANSFORM_CAPITALIZE },
{ eCSSKeyword_lowercase, NS_STYLE_TEXT_TRANSFORM_LOWERCASE },
{ eCSSKeyword_uppercase, NS_STYLE_TEXT_TRANSFORM_UPPERCASE },
{ eCSSKeyword_full_width, NS_STYLE_TEXT_TRANSFORM_FULL_WIDTH },
{ eCSSKeyword_UNKNOWN, -1 }
};
--- a/layout/style/nsCSSProps.h
+++ b/layout/style/nsCSSProps.h
@@ -844,16 +844,17 @@ public:
static const KTableEntry kTextCombineUprightKTable[];
static const KTableEntry kTextDecorationLineKTable[];
static const KTableEntry kTextDecorationStyleKTable[];
static const KTableEntry kTextEmphasisPositionKTable[];
static const KTableEntry kTextEmphasisStyleFillKTable[];
static const KTableEntry kTextEmphasisStyleShapeKTable[];
static const KTableEntry kTextOrientationKTable[];
static const KTableEntry kTextOverflowKTable[];
+ static const KTableEntry kTextSizeAdjustKTable[];
static const KTableEntry kTextTransformKTable[];
static const KTableEntry kTouchActionKTable[];
static const KTableEntry kTopLayerKTable[];
static const KTableEntry kTransformBoxKTable[];
static const KTableEntry kTransitionTimingFunctionKTable[];
static const KTableEntry kUnicodeBidiKTable[];
static const KTableEntry kUserFocusKTable[];
static const KTableEntry kUserInputKTable[];
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -4104,16 +4104,25 @@ already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetTextShadow()
{
return GetCSSShadowArray(StyleText()->mTextShadow,
StyleColor()->mColor,
false);
}
already_AddRefed<CSSValue>
+nsComputedDOMStyle::DoGetTextSizeAdjust()
+{
+ RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
+ val->SetIdent(nsCSSProps::ValueToKeywordEnum(StyleText()->mTextSizeAdjust,
+ nsCSSProps::kTextSizeAdjustKTable));
+ return val.forget();
+}
+
+already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetTextTransform()
{
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
val->SetIdent(
nsCSSProps::ValueToKeywordEnum(StyleText()->mTextTransform,
nsCSSProps::kTextTransformKTable));
return val.forget();
}
@@ -4198,34 +4207,16 @@ nsComputedDOMStyle::DoGetHyphens()
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
val->SetIdent(
nsCSSProps::ValueToKeywordEnum(StyleText()->mHyphens,
nsCSSProps::kHyphensKTable));
return val.forget();
}
already_AddRefed<CSSValue>
-nsComputedDOMStyle::DoGetTextSizeAdjust()
-{
- RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
- switch (StyleText()->mTextSizeAdjust) {
- default:
- NS_NOTREACHED("unexpected value");
- MOZ_FALLTHROUGH;
- case NS_STYLE_TEXT_SIZE_ADJUST_AUTO:
- val->SetIdent(eCSSKeyword_auto);
- break;
- case NS_STYLE_TEXT_SIZE_ADJUST_NONE:
- val->SetIdent(eCSSKeyword_none);
- break;
- }
- return val.forget();
-}
-
-already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetWebkitTextFillColor()
{
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
SetValueFromComplexColor(val, StyleText()->mWebkitTextFillColor);
return val.forget();
}
already_AddRefed<CSSValue>
--- a/layout/style/nsComputedDOMStyle.h
+++ b/layout/style/nsComputedDOMStyle.h
@@ -431,26 +431,26 @@ private:
already_AddRefed<CSSValue> DoGetTextDecorationLine();
already_AddRefed<CSSValue> DoGetTextDecorationStyle();
already_AddRefed<CSSValue> DoGetTextEmphasisColor();
already_AddRefed<CSSValue> DoGetTextEmphasisPosition();
already_AddRefed<CSSValue> DoGetTextEmphasisStyle();
already_AddRefed<CSSValue> DoGetTextIndent();
already_AddRefed<CSSValue> DoGetTextOrientation();
already_AddRefed<CSSValue> DoGetTextOverflow();
+ already_AddRefed<CSSValue> DoGetTextShadow();
+ already_AddRefed<CSSValue> DoGetTextSizeAdjust();
already_AddRefed<CSSValue> DoGetTextTransform();
- already_AddRefed<CSSValue> DoGetTextShadow();
already_AddRefed<CSSValue> DoGetLetterSpacing();
already_AddRefed<CSSValue> DoGetWordSpacing();
already_AddRefed<CSSValue> DoGetWhiteSpace();
already_AddRefed<CSSValue> DoGetWordBreak();
already_AddRefed<CSSValue> DoGetOverflowWrap();
already_AddRefed<CSSValue> DoGetHyphens();
already_AddRefed<CSSValue> DoGetTabSize();
- already_AddRefed<CSSValue> DoGetTextSizeAdjust();
already_AddRefed<CSSValue> DoGetWebkitTextFillColor();
already_AddRefed<CSSValue> DoGetWebkitTextStrokeColor();
already_AddRefed<CSSValue> DoGetWebkitTextStrokeWidth();
/* Visibility properties */
already_AddRefed<CSSValue> DoGetColorAdjust();
already_AddRefed<CSSValue> DoGetOpacity();
already_AddRefed<CSSValue> DoGetPointerEvents();
--- a/layout/style/nsRuleNode.cpp
+++ b/layout/style/nsRuleNode.cpp
@@ -4926,23 +4926,22 @@ nsRuleNode::ComputeTextData(void* aStart
// ruby-position: enum, inherit, initial
SetValue(*aRuleData->ValueForRubyPosition(),
text->mRubyPosition, conditions,
SETVAL_ENUMERATED | SETVAL_UNSET_INHERIT,
parentText->mRubyPosition,
NS_STYLE_RUBY_POSITION_OVER);
- // text-size-adjust: none, auto, inherit, initial
- SetValue(*aRuleData->ValueForTextSizeAdjust(), text->mTextSizeAdjust,
- conditions, SETVAL_UNSET_INHERIT,
+ // text-size-adjust: enum, inherit, initial
+ SetValue(*aRuleData->ValueForTextSizeAdjust(),
+ text->mTextSizeAdjust, conditions,
+ SETVAL_ENUMERATED | SETVAL_UNSET_INHERIT,
parentText->mTextSizeAdjust,
- /* initial */ NS_STYLE_TEXT_SIZE_ADJUST_AUTO,
- /* auto */ NS_STYLE_TEXT_SIZE_ADJUST_AUTO,
- /* none */ NS_STYLE_TEXT_SIZE_ADJUST_NONE, Unused, Unused);
+ NS_STYLE_TEXT_SIZE_ADJUST_AUTO);
// text-combine-upright: enum, inherit, initial
SetValue(*aRuleData->ValueForTextCombineUpright(),
text->mTextCombineUpright,
conditions,
SETVAL_ENUMERATED | SETVAL_UNSET_INHERIT,
parentText->mTextCombineUpright,
NS_STYLE_TEXT_COMBINE_UPRIGHT_NONE);