Backed out changeset f7e1426249f2 (bug 949651) for mochitest-5 failures.
authorRyan VanderMeulen <ryanvm@gmail.com>
Wed, 15 Oct 2014 18:58:56 -0400
changeset 210641 21caa5dfb494bacb31882115053a8d824c44f0ba
parent 210640 e655fbbc6e9fab9fa942d5d5769f7dba8f53592b
child 210642 a13927f7835342093b3dca3a4e6b0c2a89dd4a29
push id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
bugs949651
milestone36.0a1
backs outf7e1426249f2e2847229cc6962beec76e0be9323
Backed out changeset f7e1426249f2 (bug 949651) for mochitest-5 failures.
layout/style/StyleRule.cpp
layout/style/test/test_selectors.html
--- a/layout/style/StyleRule.cpp
+++ b/layout/style/StyleRule.cpp
@@ -672,20 +672,19 @@ nsCSSSelector::AppendToStringWithoutComb
     nsAutoString tag;
     (isPseudoElement ? mLowercaseTag : mCasedTag)->ToString(tag);
     if (isPseudoElement) {
       if (!mNext) {
         // Lone pseudo-element selector -- toss in a wildcard type selector
         // XXXldb Why?
         aString.Append(char16_t('*'));
       }
-      // While our atoms use one colon, most pseudo-elements require two
-      // colons (those not in CSS level 2) and all pseudo-elements allow
-      // two colons. So serialize to the non-deprecated two colon syntax.
-      aString.Append(char16_t(':'));
+      if (!nsCSSPseudoElements::IsCSS2PseudoElement(mLowercaseTag)) {
+        aString.Append(char16_t(':'));
+      }
       // This should not be escaped since (a) the pseudo-element string
       // has a ":" that can't be escaped and (b) all pseudo-elements at
       // this point are known, and therefore we know they don't need
       // escaping.
       aString.Append(tag);
     } else {
       nsStyleUtil::AppendEscapedCSSIdent(tag, aString);
     }
--- a/layout/style/test/test_selectors.html
+++ b/layout/style/test/test_selectors.html
@@ -862,23 +862,19 @@ function run() {
     test_selector_in_html(".a > .b ~ .nomatch", '<div class="a"><div><div class="b"></div><div class="nomatch"></div></div><div class="nomatch"></div></div>',
                          emptyset, classset(["a", "b", "nomatch"]));
     test_selector_in_html(".a > .b ~ .nomatch", '<div class="a"><div class="b"></div><div><div class="nomatch"></div></div><div></div></div>',
                          emptyset, classset(["a", "b", "nomatch"]));
     test_selector_in_html(".a > .b ~ .nomatch", '<div class="a"><div class="b"></div></div><div class="nomatch"></div>',
                          emptyset, classset(["a", "b", "nomatch"]));
 
     // Test serialization of pseudo-elements.
-    should_serialize_to("p::first-letter", "p::first-letter");
-    should_serialize_to("p:first-letter", "p::first-letter");
-    should_serialize_to("div>p:first-letter", "div > p::first-letter");
-    should_serialize_to("span +div:first-line", "span + div::first-line");
-
-    // Test serialization of non CSS2 pseudo-element.
-    should_serialize_to("input::-moz-placeholder", "input::-moz-placeholder");
+    should_serialize_to("p:first-letter", "p:first-letter");
+    should_serialize_to("div>p:first-letter", "div > p:first-letter");
+    should_serialize_to("span +div:first-line", "span + div:first-line");
 
     // Test default namespaces, including inside :not().
     var html_default_ns = "@namespace url(http://www.w3.org/1999/xhtml);";
     var html_ns = "@namespace html url(http://www.w3.org/1999/xhtml);";
     var xul_default_ns = "@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);";
     var single_a = "<a id='a' href='data:text/plain,this_better_be_unvisited'></a>";
     var set_single = idset(['a']);
     var empty_set = idset([]);