Bug 1381232 - (wip) serialize computed <number-percentage> values to <number> values for filter property. draft
authorJeremy Chen <jeremychen@mozilla.com>
Sat, 15 Jul 2017 17:24:21 +0800
changeset 609331 8e4968e739411beeea2e86089294240d681fa7c5
parent 609288 bd1b6a4e5d8e1184a89ae60a74fd86d3d4a9e95c
child 637552 6773e4b22bd6047a02d94689c62fec3471f5ddb1
push id68555
push userbmo:jeremychen@mozilla.com
push dateSat, 15 Jul 2017 12:57:18 +0000
bugs1381232
milestone56.0a1
Bug 1381232 - (wip) serialize computed <number-percentage> values to <number> values for filter property. MozReview-Commit-ID: Bk1vL8lp4ag
layout/style/nsComputedDOMStyle.cpp
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -6433,17 +6433,31 @@ nsComputedDOMStyle::CreatePrimitiveValue
     RefPtr<CSSValue> shadowValue =
       GetCSSShadowArray(aStyleFilter.GetDropShadow(),
                         StyleColor()->mColor,
                         false);
     ErrorResult dummy;
     shadowValue->GetCssText(argumentString, dummy);
   } else {
     // Filter function argument.
-    SetCssTextToCoord(argumentString, aStyleFilter.GetFilterParameter());
+    if (aStyleFilter.GetType() == NS_STYLE_FILTER_BRIGHTNESS ||
+        aStyleFilter.GetType() == NS_STYLE_FILTER_CONTRAST ||
+        aStyleFilter.GetType() == NS_STYLE_FILTER_GRAYSCALE ||
+        aStyleFilter.GetType() == NS_STYLE_FILTER_INVERT ||
+        aStyleFilter.GetType() == NS_STYLE_FILTER_OPACITY ||
+        aStyleFilter.GetType() == NS_STYLE_FILTER_SATURATE ||
+        aStyleFilter.GetType() == NS_STYLE_FILTER_SEPIA) {
+      // Serialize <number-percentage> to number value.
+      RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
+      val->SetNumber(
+        aStyleFilter.GetFilterParameter().GetFactorOrPercentValue());
+      val->GetCssText(argumentString);
+    } else {
+      SetCssTextToCoord(argumentString, aStyleFilter.GetFilterParameter());
+    }
   }
   filterFunctionString.Append(argumentString);
 
   // Filter function closing parenthesis.
   filterFunctionString.Append(')');
 
   value->SetString(filterFunctionString);
   return value.forget();