--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -2101,19 +2101,21 @@ nsComputedDOMStyle::DoGetFontSynthesis()
int32_t intValue = StyleFont()->mFont.synthesis;
if (0 == intValue) {
val->SetIdent(eCSSKeyword_none);
} else {
nsAutoString valueStr;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_font_synthesis,
- intValue, NS_FONT_SYNTHESIS_WEIGHT,
- NS_FONT_SYNTHESIS_STYLE, valueStr);
+ nsStyleUtil::AppendBitmaskCSSValue(nsCSSProps::kFontSynthesisKTable,
+ intValue,
+ NS_FONT_SYNTHESIS_WEIGHT,
+ NS_FONT_SYNTHESIS_STYLE,
+ valueStr);
val->SetString(valueStr);
}
return val.forget();
}
// return a value *only* for valid longhand values from CSS 2.1, either
// normal or small-caps only
@@ -2156,17 +2158,18 @@ nsComputedDOMStyle::DoGetFontVariantAlte
if (0 == intValue) {
val->SetIdent(eCSSKeyword_normal);
return val.forget();
}
// first, include enumerated values
nsAutoString valueStr;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_font_variant_alternates,
+ nsStyleUtil::AppendBitmaskCSSValue(
+ nsCSSProps::kFontVariantAlternatesKTable,
intValue & NS_FONT_VARIANT_ALTERNATES_ENUMERATED_MASK,
NS_FONT_VARIANT_ALTERNATES_HISTORICAL,
NS_FONT_VARIANT_ALTERNATES_HISTORICAL, valueStr);
// next, include functional values if present
if (intValue & NS_FONT_VARIANT_ALTERNATES_FUNCTIONAL_MASK) {
nsStyleUtil::SerializeFunctionalAlternates(StyleFont()->mFont.alternateValues,
valueStr);
@@ -2201,19 +2204,21 @@ nsComputedDOMStyle::DoGetFontVariantEast
int32_t intValue = StyleFont()->mFont.variantEastAsian;
if (0 == intValue) {
val->SetIdent(eCSSKeyword_normal);
} else {
nsAutoString valueStr;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_font_variant_east_asian,
- intValue, NS_FONT_VARIANT_EAST_ASIAN_JIS78,
- NS_FONT_VARIANT_EAST_ASIAN_RUBY, valueStr);
+ nsStyleUtil::AppendBitmaskCSSValue(nsCSSProps::kFontVariantEastAsianKTable,
+ intValue,
+ NS_FONT_VARIANT_EAST_ASIAN_JIS78,
+ NS_FONT_VARIANT_EAST_ASIAN_RUBY,
+ valueStr);
val->SetString(valueStr);
}
return val.forget();
}
already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetFontVariantLigatures()
@@ -2224,19 +2229,21 @@ nsComputedDOMStyle::DoGetFontVariantLiga
if (0 == intValue) {
val->SetIdent(eCSSKeyword_normal);
} else if (NS_FONT_VARIANT_LIGATURES_NONE == intValue) {
val->SetIdent(eCSSKeyword_none);
} else {
nsAutoString valueStr;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_font_variant_ligatures,
- intValue, NS_FONT_VARIANT_LIGATURES_NONE,
- NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL, valueStr);
+ nsStyleUtil::AppendBitmaskCSSValue(nsCSSProps::kFontVariantLigaturesKTable,
+ intValue,
+ NS_FONT_VARIANT_LIGATURES_NONE,
+ NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL,
+ valueStr);
val->SetString(valueStr);
}
return val.forget();
}
already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetFontVariantNumeric()
@@ -2245,19 +2252,21 @@ nsComputedDOMStyle::DoGetFontVariantNume
int32_t intValue = StyleFont()->mFont.variantNumeric;
if (0 == intValue) {
val->SetIdent(eCSSKeyword_normal);
} else {
nsAutoString valueStr;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_font_variant_numeric,
- intValue, NS_FONT_VARIANT_NUMERIC_LINING,
- NS_FONT_VARIANT_NUMERIC_ORDINAL, valueStr);
+ nsStyleUtil::AppendBitmaskCSSValue(nsCSSProps::kFontVariantNumericKTable,
+ intValue,
+ NS_FONT_VARIANT_NUMERIC_LINING,
+ NS_FONT_VARIANT_NUMERIC_ORDINAL,
+ valueStr);
val->SetString(valueStr);
}
return val.forget();
}
already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetFontVariantPosition()
@@ -3292,17 +3301,17 @@ nsComputedDOMStyle::GetGridTemplateColum
return valueList.forget();
}
already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetGridAutoFlow()
{
nsAutoString str;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_grid_auto_flow,
+ nsStyleUtil::AppendBitmaskCSSValue(nsCSSProps::kGridAutoFlowKTable,
StylePosition()->mGridAutoFlow,
NS_STYLE_GRID_AUTO_FLOW_ROW,
NS_STYLE_GRID_AUTO_FLOW_DENSE,
str);
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
val->SetString(str);
return val.forget();
}
@@ -4203,19 +4212,21 @@ nsComputedDOMStyle::DoGetTextDecorationL
if (NS_STYLE_TEXT_DECORATION_LINE_NONE == intValue) {
val->SetIdent(eCSSKeyword_none);
} else {
nsAutoString decorationLineString;
// Clear the OVERRIDE_ALL bits -- we don't want these to appear in
// the computed style.
intValue &= ~NS_STYLE_TEXT_DECORATION_LINE_OVERRIDE_ALL;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_text_decoration_line,
- intValue, NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE,
- NS_STYLE_TEXT_DECORATION_LINE_BLINK, decorationLineString);
+ nsStyleUtil::AppendBitmaskCSSValue(nsCSSProps::kTextDecorationLineKTable,
+ intValue,
+ NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE,
+ NS_STYLE_TEXT_DECORATION_LINE_BLINK,
+ decorationLineString);
val->SetString(decorationLineString);
}
return val.forget();
}
already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetTextDecorationStyle()
@@ -5052,17 +5063,17 @@ nsComputedDOMStyle::DoGetContain()
val->SetIdent(eCSSKeyword_none);
} else if (mask & NS_STYLE_CONTAIN_STRICT) {
NS_ASSERTION(mask == (NS_STYLE_CONTAIN_STRICT | NS_STYLE_CONTAIN_ALL_BITS),
"contain: strict should imply contain: layout style paint");
val->SetIdent(eCSSKeyword_strict);
} else {
nsAutoString valueStr;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_contain,
+ nsStyleUtil::AppendBitmaskCSSValue(nsCSSProps::kContainKTable,
mask, NS_STYLE_CONTAIN_LAYOUT,
NS_STYLE_CONTAIN_PAINT, valueStr);
val->SetString(valueStr);
}
return val.forget();
}
@@ -5262,19 +5273,21 @@ nsComputedDOMStyle::DoGetTouchAction()
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
int32_t intValue = StyleDisplay()->mTouchAction;
// None and Auto and Manipulation values aren't allowed
// to be in conjunction with other values.
// But there are all checks in CSSParserImpl::ParseTouchAction
nsAutoString valueStr;
- nsStyleUtil::AppendBitmaskCSSValue(eCSSProperty_touch_action, intValue,
- NS_STYLE_TOUCH_ACTION_NONE, NS_STYLE_TOUCH_ACTION_MANIPULATION,
- valueStr);
+ nsStyleUtil::AppendBitmaskCSSValue(nsCSSProps::kTouchActionKTable,
+ intValue,
+ NS_STYLE_TOUCH_ACTION_NONE,
+ NS_STYLE_TOUCH_ACTION_MANIPULATION,
+ valueStr);
val->SetString(valueStr);
return val.forget();
}
already_AddRefed<CSSValue>
nsComputedDOMStyle::DoGetHeight()
{
RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
--- a/layout/style/nsStyleUtil.cpp
+++ b/layout/style/nsStyleUtil.cpp
@@ -247,26 +247,25 @@ nsStyleUtil::AppendEscapedCSSFontFamilyL
return;
}
AppendEscapedCSSFontFamilyList(aFamilyList.GetFontlist().get(), aResult);
}
/* static */ void
-nsStyleUtil::AppendBitmaskCSSValue(nsCSSPropertyID aProperty,
+nsStyleUtil::AppendBitmaskCSSValue(const nsCSSKTableEntry aTable[],
int32_t aMaskedValue,
int32_t aFirstMask,
int32_t aLastMask,
nsAString& aResult)
{
for (int32_t mask = aFirstMask; mask <= aLastMask; mask <<= 1) {
if (mask & aMaskedValue) {
- AppendASCIItoUTF16(nsCSSProps::LookupPropertyValue(aProperty, mask),
- aResult);
+ AppendASCIItoUTF16(nsCSSProps::ValueToKeyword(mask, aTable), aResult);
aMaskedValue &= ~mask;
if (aMaskedValue) { // more left
aResult.Append(char16_t(' '));
}
}
}
MOZ_ASSERT(aMaskedValue == 0, "unexpected bit remaining in bitfield");
}
--- a/layout/style/nsStyleUtil.h
+++ b/layout/style/nsStyleUtil.h
@@ -16,16 +16,17 @@
class nsCSSValue;
class nsStyleCoord;
class nsIContent;
class nsIPrincipal;
class nsIURI;
struct gfxFontFeature;
struct gfxAlternateValue;
+struct nsCSSKTableEntry;
struct nsCSSValueList;
namespace mozilla {
class FontSlantStyle;
}
// Style utility functions
class nsStyleUtil {
@@ -67,17 +68,17 @@ public:
private:
static void
AppendEscapedCSSFontFamilyList(const nsTArray<mozilla::FontFamilyName>& aNames,
nsAString& aResult);
public:
// Append a bitmask-valued property's value(s) (space-separated) to aResult.
- static void AppendBitmaskCSSValue(nsCSSPropertyID aProperty,
+ static void AppendBitmaskCSSValue(const nsCSSKTableEntry aTable[],
int32_t aMaskedValue,
int32_t aFirstMask,
int32_t aLastMask,
nsAString& aResult);
static void AppendAngleValue(const nsStyleCoord& aValue, nsAString& aResult);
static void AppendPaintOrderValue(uint8_t aValue, nsAString& aResult);