:scope should behave as :root outside scoped style sheet
authorrolandsteiner@chromium.org <rolandsteiner@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Mar 2012 09:43:27 +0000 (09:43 +0000)
committerrolandsteiner@chromium.org <rolandsteiner@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Mar 2012 09:43:27 +0000 (09:43 +0000)
https://bugs.webkit.org/show_bug.cgi?id=80389

Source/WebCore:

Fall through to :root implementation if no scope is used.

Reviewed by Antti Koivisto.

Test: fast/css/style-scoped/scope-pseudo.html

* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOneSelector):

LayoutTests:

Update test with :scope in global style sheet

Reviewed by Antti Koivisto.

* fast/css/style-scoped/scope-pseudo-expected.txt:
* fast/css/style-scoped/scope-pseudo.html:

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

LayoutTests/ChangeLog
LayoutTests/fast/css/style-scoped/scope-pseudo-expected.txt
LayoutTests/fast/css/style-scoped/scope-pseudo.html
Source/WebCore/ChangeLog
Source/WebCore/css/SelectorChecker.cpp

index 0030a58..0fe294d 100644 (file)
@@ -1,3 +1,15 @@
+2012-03-06  Roland Steiner  <rolandsteiner@chromium.org>
+
+        :scope should behave as :root outside scoped style sheet
+        https://bugs.webkit.org/show_bug.cgi?id=80389
+
+        Update test with :scope in global style sheet
+
+        Reviewed by Antti Koivisto.
+
+        * fast/css/style-scoped/scope-pseudo-expected.txt:
+        * fast/css/style-scoped/scope-pseudo.html:
+
 2012-03-05  Vsevolod Vlasov  <vsevik@chromium.org>
 
         Web Inspector: [Regression] Message bubbles are not removed from scripts panel source frames after console was cleared.
index 9fc1ba4..83f682b 100644 (file)
@@ -8,6 +8,7 @@ Text
 Text
 Text
 --- COMPUTED STYLES ---
+<html> background: rgb(255, 255, 0)
 outer: rgb(0, 0, 0)
 sibling1: rgb(0, 0, 0)
 scope1: rgb(0, 128, 0)
index ab83720..5a46014 100644 (file)
@@ -20,6 +20,7 @@
 
             log('--- COMPUTED STYLES ---');
 
+            log('<html> background: ' + document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue('background-color'));
             test('outer');
             test('sibling1');
             test('scope1');
@@ -36,6 +37,7 @@
     </script>
     <style type="text/css">
         body { color: black; }
+        :scope { background-color: yellow; }
     </style>
 </head>
 <body onload="runTests();">
index 46b0bb0..3547df2 100644 (file)
@@ -1,3 +1,17 @@
+2012-03-06  Roland Steiner  <rolandsteiner@chromium.org>
+
+        :scope should behave as :root outside scoped style sheet
+        https://bugs.webkit.org/show_bug.cgi?id=80389
+
+        Fall through to :root implementation if no scope is used.
+
+        Reviewed by Antti Koivisto.
+
+        Test: fast/css/style-scoped/scope-pseudo.html
+
+        * css/SelectorChecker.cpp:
+        (WebCore::SelectorChecker::checkOneSelector):
+
 2012-03-05  Vsevolod Vlasov  <vsevik@chromium.org>
 
         Web Inspector: [Regression] Message bubbles are not removed from scripts panel source frames after console was cleared.
index a537aaa..316f446 100644 (file)
@@ -981,8 +981,6 @@ bool SelectorChecker::checkOneSelector(const SelectorCheckingContext& context, P
                     return true;
             }
             break;
-        case CSSSelector::PseudoScope:
-            return element == context.scope;
         case CSSSelector::PseudoTarget:
             if (element == element->document()->cssTarget())
                 return true;
@@ -1110,6 +1108,10 @@ bool SelectorChecker::checkOneSelector(const SelectorCheckingContext& context, P
                     return true;
                 break;
             }
+        case CSSSelector::PseudoScope:
+            if (context.scope)
+                return element == context.scope;
+            // If there is no scope, :scope should behave as :root -> fall through
         case CSSSelector::PseudoRoot:
             if (element == element->document()->documentElement())
                 return true;