Title: [119060] trunk/Source/WebCore
Revision
119060
Author
[email protected]
Date
2012-05-30 23:23:53 -0700 (Wed, 30 May 2012)

Log Message

Implement CSSParser::determineNameInNamespace() as a helper function for CSSGrammar.y
https://bugs.webkit.org/show_bug.cgi?id=87799

Reviewed by Darin Adler.

As pointed out by darin@ in https://bugs.webkit.org/show_bug.cgi?id=87627#c12,
we should avoid repeating the following code in CSSGrammar.y:

    if (p->m_styleSheet)
        $$->setTag(QualifiedName(namespacePrefix, $2, p->m_styleSheet->determineNamespace(namespacePrefix)));
    else
        $$->setTag(QualifiedName(namespacePrefix, $2, p->m_defaultNamespace));

This patch implements CSSParser::determineNameInNamespace() as a helper function
and replaces the above code.

Tests: fast/dom/SelectorAPI/*. No change in test results.

* css/CSSGrammar.y:
* css/CSSParser.cpp:
(WebCore::CSSParser::determineNameInNamespace):
(WebCore):
* css/CSSParser.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (119059 => 119060)


--- trunk/Source/WebCore/ChangeLog	2012-05-31 06:15:17 UTC (rev 119059)
+++ trunk/Source/WebCore/ChangeLog	2012-05-31 06:23:53 UTC (rev 119060)
@@ -1,3 +1,29 @@
+2012-05-30  Kentaro Hara  <[email protected]>
+
+        Implement CSSParser::determineNameInNamespace() as a helper function for CSSGrammar.y
+        https://bugs.webkit.org/show_bug.cgi?id=87799
+
+        Reviewed by Darin Adler.
+
+        As pointed out by darin@ in https://bugs.webkit.org/show_bug.cgi?id=87627#c12,
+        we should avoid repeating the following code in CSSGrammar.y:
+
+            if (p->m_styleSheet)
+                $$->setTag(QualifiedName(namespacePrefix, $2, p->m_styleSheet->determineNamespace(namespacePrefix)));
+            else
+                $$->setTag(QualifiedName(namespacePrefix, $2, p->m_defaultNamespace));
+
+        This patch implements CSSParser::determineNameInNamespace() as a helper function
+        and replaces the above code.
+
+        Tests: fast/dom/SelectorAPI/*. No change in test results.
+
+        * css/CSSGrammar.y:
+        * css/CSSParser.cpp:
+        (WebCore::CSSParser::determineNameInNamespace):
+        (WebCore):
+        * css/CSSParser.h:
+
 2012-05-30  Patrick Gansterer  <[email protected]>
 
         Build fix for WinCE after r117697.

Modified: trunk/Source/WebCore/css/CSSGrammar.y (119059 => 119060)


--- trunk/Source/WebCore/css/CSSGrammar.y	2012-05-31 06:15:17 UTC (rev 119059)
+++ trunk/Source/WebCore/css/CSSGrammar.y	2012-05-31 06:23:53 UTC (rev 119060)
@@ -954,13 +954,9 @@
             static_cast<CSSParser*>(parser)->updateSpecifiersWithElementName(nullAtom, starAtom, $$);
     }
     | namespace_selector element_name {
-        AtomicString namespacePrefix = $1;
         CSSParser* p = static_cast<CSSParser*>(parser);
         $$ = p->createFloatingSelector();
-        if (p->m_styleSheet)
-            $$->setTag(QualifiedName(namespacePrefix, $2, p->m_styleSheet->determineNamespace(namespacePrefix)));
-        else
-            $$->setTag(QualifiedName(namespacePrefix, $2, p->m_defaultNamespace));
+        $$->setTag(p->determineNameInNamespace($1, $2));
     }
     | namespace_selector element_name specifier_list {
         $$ = $3;
@@ -1086,23 +1082,15 @@
         $$->setValue($6);
     }
     | '[' maybe_space namespace_selector attr_name ']' {
-        AtomicString namespacePrefix = $3;
         CSSParser* p = static_cast<CSSParser*>(parser);
         $$ = p->createFloatingSelector();
-        if (p->m_styleSheet)
-            $$->setAttribute(QualifiedName(namespacePrefix, $4, p->m_styleSheet->determineNamespace(namespacePrefix)));
-        else
-            $$->setAttribute(QualifiedName(namespacePrefix, $4, p->m_defaultNamespace));
+        $$->setAttribute(p->determineNameInNamespace($3, $4));
         $$->setMatch(CSSSelector::Set);
     }
     | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_string maybe_space ']' {
-        AtomicString namespacePrefix = $3;
         CSSParser* p = static_cast<CSSParser*>(parser);
         $$ = p->createFloatingSelector();
-        if (p->m_styleSheet)
-            $$->setAttribute(QualifiedName(namespacePrefix, $4, p->m_styleSheet->determineNamespace(namespacePrefix)));
-        else
-            $$->setAttribute(QualifiedName(namespacePrefix, $4, p->m_defaultNamespace));
+        $$->setAttribute(p->determineNameInNamespace($3, $4));
         $$->setMatch((CSSSelector::Match)$5);
         $$->setValue($7);
     }

Modified: trunk/Source/WebCore/css/CSSParser.cpp (119059 => 119060)


--- trunk/Source/WebCore/css/CSSParser.cpp	2012-05-31 06:15:17 UTC (rev 119059)
+++ trunk/Source/WebCore/css/CSSParser.cpp	2012-05-31 06:23:53 UTC (rev 119060)
@@ -9192,6 +9192,13 @@
         m_defaultNamespace = uri;
 }
 
+QualifiedName CSSParser::determineNameInNamespace(const AtomicString& prefix, const AtomicString& localName)
+{
+    if (!m_styleSheet)
+        return QualifiedName(prefix, localName, m_defaultNamespace);
+    return QualifiedName(prefix, localName, m_styleSheet->determineNamespace(prefix));
+}
+
 void CSSParser::updateSpecifiersWithElementName(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector* specifiers)
 {
     AtomicString determinedNamespace = namespacePrefix != nullAtom && m_styleSheet ? m_styleSheet->determineNamespace(namespacePrefix) : m_defaultNamespace;

Modified: trunk/Source/WebCore/css/CSSParser.h (119059 => 119060)


--- trunk/Source/WebCore/css/CSSParser.h	2012-05-31 06:15:17 UTC (rev 119059)
+++ trunk/Source/WebCore/css/CSSParser.h	2012-05-31 06:23:53 UTC (rev 119060)
@@ -267,6 +267,7 @@
     PassOwnPtr<MediaQuery> sinkFloatingMediaQuery(MediaQuery*);
 
     void addNamespace(const AtomicString& prefix, const AtomicString& uri);
+    QualifiedName determineNameInNamespace(const AtomicString& prefix, const AtomicString& localName);
     void updateSpecifiersWithElementName(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector*);
     CSSParserSelector* updateSpecifiers(CSSParserSelector*, CSSParserSelector*);
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to