Bug 1315403-no whitespace between "!" and "important" in Declaration::AppendPropertyAndValueToString and Declaration::AppendVariableAndValueToStr, r=xidorn draft
authorConache Cristian <cconache@gmail.com>
Sun, 20 Nov 2016 14:42:11 +0200
changeset 442187 dab61f244d5ca7ec13603d55cbf091b9dd6400d7
parent 441589 57a8cde3f08ca9d60bcd8bdd698ceec687f0aed2
child 537731 f2a2bdf765d780edf4cf9432538cb1304c810c93
push id36621
push userbmo:cconache@gmail.com
push dateTue, 22 Nov 2016 00:58:07 +0000
reviewersxidorn
bugs1315403
milestone53.0a1
Bug 1315403-no whitespace between "!" and "important" in Declaration::AppendPropertyAndValueToString and Declaration::AppendVariableAndValueToStr, r=xidorn MozReview-Commit-ID: BKGqEpn0utp
layout/style/Declaration.cpp
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/cssom/serialization-CSSDeclaration-with-important.html
--- a/layout/style/Declaration.cpp
+++ b/layout/style/Declaration.cpp
@@ -1585,17 +1585,17 @@ Declaration::AppendPropertyAndValueToStr
              "aValue should be given for shorthands but not longhands");
   AppendASCIItoUTF16(nsCSSProps::GetStringValue(aProperty), aResult);
   aResult.AppendLiteral(": ");
   if (aValue.IsEmpty())
     AppendValueToString(aProperty, aResult, nsCSSValue::eNormalized);
   else
     aResult.Append(aValue);
   if (GetPropertyIsImportantByID(aProperty)) {
-    aResult.AppendLiteral(" ! important");
+    aResult.AppendLiteral(" !important");
   }
   aResult.AppendLiteral("; ");
 }
 
 void
 Declaration::AppendVariableAndValueToString(const nsAString& aName,
                                             nsAString& aResult) const
 {
@@ -1638,17 +1638,17 @@ Declaration::AppendVariableAndValueToStr
       aResult.AppendLiteral("unset");
       break;
 
     default:
       MOZ_ASSERT(false, "unexpected variable value type");
   }
 
   if (important) {
-    aResult.AppendLiteral("! important");
+    aResult.AppendLiteral("!important");
   }
   aResult.AppendLiteral("; ");
 }
 
 void
 Declaration::ToString(nsAString& aString) const
 {
   // Someone cares about this declaration's contents, so don't let it
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -14895,16 +14895,20 @@
         "path": "cors/status-preflight.htm",
         "url": "/cors/status-preflight.htm"
       },
       {
         "path": "cors/status.htm",
         "url": "/cors/status.htm"
       },
       {
+        "path": "cssom/serialization-CSSDeclaration-with-important.html",
+        "url": "/cssom/serialization-CSSDeclaration-with-important.html"
+      },
+      {
         "path": "cssom-view/HTMLBody-ScrollArea_quirksmode.html",
         "url": "/cssom-view/HTMLBody-ScrollArea_quirksmode.html"
       },
       {
         "path": "cssom-view/elementFromPoint.html",
         "url": "/cssom-view/elementFromPoint.html"
       },
       {
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/cssom/serialization-CSSDeclaration-with-important.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>cssom - Serialization of CSS declaration with "important" flag</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id="noWhitespace" style="display: inline !important;"></div>
+<div id="whitespace" style="background-color: blue !important; color: red ! important;"></div>
+<div id="dinamicallyStyle"></div>
+<script>
+    test(function () {
+        var css_style = document.querySelector('#noWhitespace').style.cssText;
+        assert_equals(css_style, "display: inline !important;");
+    }, "Inline style declaration without whitespace between '!' and 'important'.");
+
+    test(function () {
+        var css_style = document.querySelector('#whitespace').style.cssText;
+        assert_equals(css_style, "background-color: blue !important; color: red !important;");
+    }, "Inline style declaration with whitespace between '!' and 'important'.");
+
+    test(function () {
+        document.querySelector('#dinamicallyStyle').style.cssText = "color: black !important;";
+        var css_style = document.querySelector('#dinamicallyStyle').style.cssText;
+        assert_equals(css_style, "color: black !important;");
+    }, "Style set dynamically via cssText without whitespace between '!' and 'important'.");
+
+    test(function () {
+        document.querySelector('#dinamicallyStyle').style.cssText = "color: black ! important;";
+        var css_style = document.querySelector('#dinamicallyStyle').style.cssText;
+        assert_equals(css_style, "color: black !important;");
+    }, "Style set dynamically via cssText with whitespace between '!' and 'important'.");
+</script>
\ No newline at end of file