Web Inspector: Remove console warnings for *_ prefixed CSS styles
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 25 Mar 2013 16:28:29 +0000 (16:28 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 25 Mar 2013 16:28:29 +0000 (16:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=113175

Patch by Sergey Ryazanov <serya@chromium.org> on 2013-03-25
Reviewed by Pavel Feldman.

Source/WebCore:

Added separate error message for syntax CSS error in declaration list when no property detected.
Added filter for messages starting with '*'.

* css/CSSGrammar.y.in:

LayoutTests:

* inspector/console/console-css-warnings-expected.txt:
* inspector/console/console-css-warnings.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@146781 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/inspector/console/console-css-warnings-expected.txt
LayoutTests/inspector/console/console-css-warnings.html
Source/WebCore/ChangeLog
Source/WebCore/css/CSSGrammar.y.in
Source/WebCore/css/CSSParser.cpp
Source/WebCore/css/CSSParser.h
Source/WebCore/inspector/InspectorConsoleAgent.cpp

index 4ac1544..d11d3ea 100644 (file)
@@ -1,3 +1,13 @@
+2013-03-25  Sergey Ryazanov  <serya@chromium.org>
+
+        Web Inspector: Remove console warnings for *_ prefixed CSS styles
+        https://bugs.webkit.org/show_bug.cgi?id=113175
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/console/console-css-warnings-expected.txt:
+        * inspector/console/console-css-warnings.html:
+
 2013-03-25  Jochen Eisinger  <jochen@chromium.org>
 
         Triage more test failures on content_shell
index 6c7d91f..0ab53cd 100644 (file)
@@ -1,13 +1,15 @@
 Tests CSS warnings are properly exposed.
 
-Unexpected CSS token: # console-css-warnings.html:10
-Unexpected CSS token: { console-css-warnings.html:15
-Unexpected CSS token: # console-css-warnings.html:18
-Unexpected CSS token: # console-css-warnings.html:22
-Unexpected CSS token: # console-css-warnings.html:32
+Invalid CSS property declaration at: # console-css-warnings.html:10
+Invalid CSS property declaration at: { console-css-warnings.html:15
+Invalid CSS property declaration at: # console-css-warnings.html:18
+Invalid CSS property declaration at: # console-css-warnings.html:22
+Invalid CSS property declaration at: # console-css-warnings.html:32
+Unexpected CSS token: @ console-css-warnings.html:33
 Unexpected CSS token: { console-css-warnings.html:37
 Unexpected CSS token: { console-css-warnings.html:38
 Unexpected CSS token: { console-css-warnings.html:39
 Unexpected CSS token: { console-css-warnings.html:40
-Unexpected CSS token: * console-css-warnings.html:44
+Unexpected CSS token: @ console-css-warnings.html:45
+Unexpected CSS token: @ console-css-warnings.html:49
 
index 32d1c83..ba0cb55 100644 (file)
@@ -30,7 +30,7 @@ x {
 x {
    color: red;
    ###;
-   color: #;
+   color: @;
 }
 
 x {
@@ -41,7 +41,12 @@ x {
 }
 
 x {
-    color: *;  /* Test simple error to ensure parsing recovered. */
+    *zoom: @1;  /* IE hack. Ignored */
+    color: @;
+}
+
+x {
+    color: @;  /* Test simple error to ensure parsing recovered. */
 }
 
 </style>
index e0c8ea9..0390dbb 100644 (file)
@@ -1,3 +1,15 @@
+2013-03-25  Sergey Ryazanov  <serya@chromium.org>
+
+        Web Inspector: Remove console warnings for *_ prefixed CSS styles
+        https://bugs.webkit.org/show_bug.cgi?id=113175
+
+        Reviewed by Pavel Feldman.
+
+        Added separate error message for syntax CSS error in declaration list when no property detected.
+        Added filter for messages starting with '*'.
+
+        * css/CSSGrammar.y.in:
+
 2013-03-25  Alexis Hetu  <sugoi@chromium.org>
 
         Integration of the Skia displacement mapping into WebKit
index 5dd1208..2d2eab0 100644 (file)
@@ -1551,19 +1551,19 @@ declaration_list:
         $$ = $1;
     }
     | errors invalid_block_list error {
-        parser->syntaxError($1);
+        parser->syntaxError($1, CSSParser::PropertyDeclarationError);
         $$ = false;
     }
     | errors {
-        parser->syntaxError($1);
+        parser->syntaxError($1, CSSParser::PropertyDeclarationError);
         $$ = false;
     }
     | decl_list errors {
-        parser->syntaxError($2);
+        parser->syntaxError($2, CSSParser::PropertyDeclarationError);
         $$ = $1;
     }
     | decl_list error_location invalid_block_list {
-        parser->syntaxError($2);
+        parser->syntaxError($2, CSSParser::PropertyDeclarationError);
         $$ = $1;
     }
     ;
@@ -1582,12 +1582,12 @@ decl_list:
         $$ = false;
     }
     | errors ';' maybe_space {
-        parser->syntaxError($1);
+        parser->syntaxError($1, CSSParser::PropertyDeclarationError);
         parser->markPropertyStart();
         $$ = false;
     }
     | errors invalid_block_list error ';' maybe_space {
-        parser->syntaxError($1);
+        parser->syntaxError($1, CSSParser::PropertyDeclarationError);
         $$ = false;
     }
     | decl_list declaration ';' maybe_space {
@@ -1597,12 +1597,12 @@ decl_list:
             $$ = $2;
     }
     | decl_list errors ';' maybe_space {
-        parser->syntaxError($2);
+        parser->syntaxError($2, CSSParser::PropertyDeclarationError);
         parser->markPropertyStart();
         $$ = $1;
     }
     | decl_list errors invalid_block_list error ';' maybe_space {
-        parser->syntaxError($2);
+        parser->syntaxError($2, CSSParser::PropertyDeclarationError);
         parser->markPropertyStart();
         $$ = $1;
     }
index 524dc9d..075d0d3 100644 (file)
@@ -11274,16 +11274,25 @@ PassRefPtr<CSSRuleSourceData> CSSParser::popRuleData()
     return data.release();
 }
 
-void CSSParser::syntaxError(Location location)
+void CSSParser::syntaxError(const Location& location, SyntaxErrorType error)
 {
     if (!isLoggingErrors())
         return;
     StringBuilder builder;
-    builder.appendLiteral("Unexpected CSS token: ");
+    switch (error) {
+    case PropertyDeclarationError:
+        builder.appendLiteral("Invalid CSS property declaration at: ");
+        break;
+
+    default:
+        builder.appendLiteral("Unexpected CSS token: ");
+    }
+
     if (location.token.is8Bit())
         builder.append(location.token.characters8(), location.token.length());
     else
         builder.append(location.token.characters16(), location.token.length());
+
     logError(builder.toString(), location.lineNumber);
 }
 
index b06a8a2..d63f55c 100644 (file)
@@ -76,6 +76,10 @@ class CSSParser {
 
 public:
     struct Location;
+    enum SyntaxErrorType {
+        PropertyDeclarationError,
+        GeneralSyntaxError
+    };
 
     CSSParser(const CSSParserContext&);
 
@@ -419,7 +423,7 @@ public:
     PassRefPtr<CSSRuleSourceData> popRuleData();
     void resetPropertyRange() { m_propertyRange.start = m_propertyRange.end = UINT_MAX; }
     bool isExtractingSourceData() const { return !!m_currentRuleDataStack; }
-    void syntaxError(Location);
+    void syntaxError(const Location&, SyntaxErrorType = GeneralSyntaxError);
 
     inline int lex(void* yylval) { return (this->*m_lexFunc)(yylval); }
 
index da92c9e..d70bfcf 100644 (file)
@@ -188,6 +188,10 @@ void InspectorConsoleAgent::addMessageToConsole(MessageSource source, MessageTyp
         clearMessages(&error);
     }
 
+    // Ignore errors like "*property=value". This trick is used for IE7: http://stackoverflow.com/questions/4563651/what-does-an-asterisk-do-in-a-css-property-name
+    if (source == CSSMessageSource && message.contains(": *"))
+        return;
+
     bool canGenerateCallStack = !isWorkerAgent() && m_frontend;
     addConsoleMessage(adoptPtr(new ConsoleMessage(canGenerateCallStack, source, type, level, message, scriptId, lineNumber, state, requestIdentifier)));
 }