Bug 925626 - Parse general_enclosed in @supports conditions properly. r=dbaron
authorCameron McCormack <cam@mcc.id.au>
Fri, 06 Dec 2013 19:13:26 +1100
changeset 159127 7a7cd1f765a03f35f01fe5db16df35b9046bda98
parent 159126 9a92e42151dcf172808130cb3183970625dd18d6
child 159128 f7d7744e05b11661b7aa04e2c61697ca360231c3
push id37193
push usercmccormack@mozilla.com
push dateFri, 06 Dec 2013 08:14:13 +0000
treeherdermozilla-inbound@7a7cd1f765a0 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdbaron
bugs925626
milestone28.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 925626 - Parse general_enclosed in @supports conditions properly. r=dbaron
layout/reftests/w3c-css/submitted/conditional3/css-supports-042.xht
layout/reftests/w3c-css/submitted/conditional3/reftest.list
layout/style/nsCSSParser.cpp
new file mode 100644
--- /dev/null
+++ b/layout/reftests/w3c-css/submitted/conditional3/css-supports-042.xht
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <title>CSS Test: An @supports rule condition with an unexpected token before the closing paren of a supports_condition_in_parens should parse as a general_enclosed</title>
+  <link rel="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au" />
+  <link rel="help" href="http://www.w3.org/TR/css3-conditional/#at-supports" />
+  <meta name="flags" content="" />
+  <meta name="assert" content="An @supports rule condition that has an unexpected token before the closing paren of a supports_condition_in_parens should parse as a general_enclosed and evaluate to false rather than fail to parse."/>
+  <link rel="match" href="support/pass.xht" />
+  <style type="text/css"><![CDATA[
+    @supports ((color: green) bad) or (color: green) {
+      html { background-color: green }
+    }
+  ]]></style>
+ </head>
+ <body>
+ </body>
+</html>
--- a/layout/reftests/w3c-css/submitted/conditional3/reftest.list
+++ b/layout/reftests/w3c-css/submitted/conditional3/reftest.list
@@ -36,8 +36,9 @@ default-preferences pref(layout.css.supp
 == css-supports-034.xht support/pass.xht
 == css-supports-035.xht support/pass.xht
 == css-supports-036.xht support/pass.xht
 == css-supports-037.xht support/pass.xht
 == css-supports-038.xht support/pass.xht
 == css-supports-039.xht support/pass.xht
 == css-supports-040.xht support/pass.xht
 == css-supports-041.xht support/pass.xht
+== css-supports-042.xht support/pass.xht
--- a/layout/style/nsCSSParser.cpp
+++ b/layout/style/nsCSSParser.cpp
@@ -2784,19 +2784,19 @@ CSSParserImpl::ParseSupportsConditionInP
       REPORT_UNEXPECTED_EOF(PESupportsConditionInParensEOF);
       return false;
     }
     aConditionMet = false;
     return true;
   }
 
   if (!(ExpectSymbol(')', true))) {
-    REPORT_UNEXPECTED_TOKEN(PESupportsConditionExpectedCloseParen);
     SkipUntil(')');
-    return false;
+    aConditionMet = false;
+    return true;
   }
 
   return true;
 }
 
 // supports_condition_in_parens_inside_parens
 //   : core_declaration
 //   | supports_condition_negation