Bug 1315403-no whitespace between "!" and "important" in Declaration::AppendPropertyAndValueToString and Declaration::AppendVariableAndValueToStr, r=xidorn
MozReview-Commit-ID: BKGqEpn0utp
--- 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