Title: [189788] releases/WebKitGTK/webkit-2.10
Revision
189788
Author
carlo...@webkit.org
Date
2015-09-15 00:41:31 -0700 (Tue, 15 Sep 2015)

Log Message

Merge r189560 - CSS general sibling selectors does not work without CSS JIT
https://bugs.webkit.org/show_bug.cgi?id=148987
rdar://problem/22559860

Patch by Benjamin Poulain <bpoul...@apple.com> on 2015-09-09
Reviewed by Andreas Kling.

Source/WebCore:

When traversing with the indirect adjacent combinator, SelectorChecker
was not setting the style invalidation flag on the right element.

Tests: fast/css/indirect-adjacent-style-invalidation-1.html
       fast/css/indirect-adjacent-style-invalidation-2.html
       fast/css/indirect-adjacent-style-invalidation-3.html

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

LayoutTests:

There are multiple variations of the same tests to test
cases where we JIT and cases without JIT.

* fast/css/indirect-adjacent-style-invalidation-1-expected.txt: Added.
* fast/css/indirect-adjacent-style-invalidation-1.html: Added.
* fast/css/indirect-adjacent-style-invalidation-2-expected.txt: Added.
* fast/css/indirect-adjacent-style-invalidation-2.html: Added.
* fast/css/indirect-adjacent-style-invalidation-3-expected.txt: Added.
* fast/css/indirect-adjacent-style-invalidation-3.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog (189787 => 189788)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog	2015-09-15 07:38:08 UTC (rev 189787)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog	2015-09-15 07:41:31 UTC (rev 189788)
@@ -1,3 +1,21 @@
+2015-09-09  Benjamin Poulain  <bpoul...@apple.com>
+
+        CSS general sibling selectors does not work without CSS JIT
+        https://bugs.webkit.org/show_bug.cgi?id=148987
+        rdar://problem/22559860
+
+        Reviewed by Andreas Kling.
+
+        There are multiple variations of the same tests to test
+        cases where we JIT and cases without JIT. 
+
+        * fast/css/indirect-adjacent-style-invalidation-1-expected.txt: Added.
+        * fast/css/indirect-adjacent-style-invalidation-1.html: Added.
+        * fast/css/indirect-adjacent-style-invalidation-2-expected.txt: Added.
+        * fast/css/indirect-adjacent-style-invalidation-2.html: Added.
+        * fast/css/indirect-adjacent-style-invalidation-3-expected.txt: Added.
+        * fast/css/indirect-adjacent-style-invalidation-3.html: Added.
+
 2015-09-09  Alexey Proskuryakov  <a...@apple.com>
 
         fast/dom/rtl-scroll-to-leftmost-and-resize.html is a flaky timeout - IPC drops messages

Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-1-expected.txt (0 => 189788)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-1-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-1-expected.txt	2015-09-15 07:41:31 UTC (rev 189788)
@@ -0,0 +1,35 @@
+Test the style invalidation of elements affected by an indirect adjacent.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 0, 0)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 1, 2)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 1, 2)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 0, 0)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-1.html (0 => 189788)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-1.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-1.html	2015-09-15 07:41:31 UTC (rev 189788)
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<style>
+* {
+    color: black;
+}
+:checked ~ target {
+    color: rgb(0, 1, 2);
+}
+</style>
+</head>
+<body>
+    <div>
+        <!-- With renderer -->
+        <input class="activator" type="checkbox">
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <target></target>
+    </div>
+    <div style="display:none;">
+        <!-- Without renderer -->
+        <input class="activator" type="radio">
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <target></target>
+    </div>
+</body>
+<script>
+
+description('Test the style invalidation of elements affected by an indirect adjacent.');
+
+function shouldNeedStyleRecalc(expected) {
+    var testFunction = expected ? shouldBeTrue : shouldBeFalse;
+    testFunction("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\".activator\")[0])");
+    testFunction("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\".activator\")[1])");
+    shouldBeFalse("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\"target\")[0])");
+    shouldBeFalse("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\"target\")[1])");
+}
+
+function setId(name) {
+    var allTargets = document.querySelectorAll("target");
+    allTargets[0].id = name;
+    allTargets[1].id = name;
+}
+
+function checkStyle(expectedColor) {
+    var allTargets = document.querySelectorAll("target");
+    shouldBeEqualToString('getComputedStyle(document.querySelectorAll("target")[0]).color', expectedColor);
+    shouldBeEqualToString('getComputedStyle(document.querySelectorAll("target")[1]).color', expectedColor);
+}
+// Force a layout to ensure we don't have dirty styles.
+var offsetTop = document.documentElement.offsetTop;
+
+// Initial state.
+shouldNeedStyleRecalc(false);
+checkStyle("rgb(0, 0, 0)");
+
+// Check the input fields.
+var allActivators = document.querySelectorAll("input.activator:matches([type=checkbox], [type=radio])");
+for (let i = 0; i < allActivators.length; ++i) {
+    allActivators[i].checked = true;
+}
+shouldNeedStyleRecalc(true);
+checkStyle("rgb(0, 1, 2)");
+shouldNeedStyleRecalc(false);
+
+// Uncheck the input fields.
+var allActivators = document.querySelectorAll("input.activator:matches([type=checkbox], [type=radio])");
+for (let i = 0; i < allActivators.length; ++i) {
+    allActivators[i].checked = false;
+}
+shouldNeedStyleRecalc(true);
+checkStyle("rgb(0, 0, 0)");
+shouldNeedStyleRecalc(false);
+
+</script>
+<script src=""
+</html>

Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-2-expected.txt (0 => 189788)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-2-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-2-expected.txt	2015-09-15 07:41:31 UTC (rev 189788)
@@ -0,0 +1,35 @@
+Test the style invalidation of elements affected by an indirect adjacent.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 0, 0)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 1, 2)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 1, 2)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 0, 0)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-2.html (0 => 189788)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-2.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-2.html	2015-09-15 07:41:31 UTC (rev 189788)
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<style>
+* {
+    color: black;
+}
+:checked:first-of-type ~ target {
+    color: rgb(0, 1, 2);
+}
+</style>
+</head>
+<body>
+    <div>
+        <!-- With renderer -->
+        <input class="activator" type="checkbox">
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <target></target>
+    </div>
+    <div style="display:none;">
+        <!-- Without renderer -->
+        <input class="activator" type="radio">
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <target></target>
+    </div>
+</body>
+<script>
+
+description('Test the style invalidation of elements affected by an indirect adjacent.');
+
+function shouldNeedStyleRecalc(expected) {
+    var testFunction = expected ? shouldBeTrue : shouldBeFalse;
+    testFunction("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\".activator\")[0])");
+    testFunction("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\".activator\")[1])");
+    shouldBeFalse("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\"target\")[0])");
+    shouldBeFalse("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\"target\")[1])");
+}
+
+function setId(name) {
+    var allTargets = document.querySelectorAll("target");
+    allTargets[0].id = name;
+    allTargets[1].id = name;
+}
+
+function checkStyle(expectedColor) {
+    var allTargets = document.querySelectorAll("target");
+    shouldBeEqualToString('getComputedStyle(document.querySelectorAll("target")[0]).color', expectedColor);
+    shouldBeEqualToString('getComputedStyle(document.querySelectorAll("target")[1]).color', expectedColor);
+}
+// Force a layout to ensure we don't have dirty styles.
+var offsetTop = document.documentElement.offsetTop;
+
+// Initial state.
+shouldNeedStyleRecalc(false);
+checkStyle("rgb(0, 0, 0)");
+
+// Check the input fields.
+var allActivators = document.querySelectorAll("input.activator:matches([type=checkbox], [type=radio])");
+for (let i = 0; i < allActivators.length; ++i) {
+    allActivators[i].checked = true;
+}
+shouldNeedStyleRecalc(true);
+checkStyle("rgb(0, 1, 2)");
+shouldNeedStyleRecalc(false);
+
+// Uncheck the input fields.
+var allActivators = document.querySelectorAll("input.activator:matches([type=checkbox], [type=radio])");
+for (let i = 0; i < allActivators.length; ++i) {
+    allActivators[i].checked = false;
+}
+shouldNeedStyleRecalc(true);
+checkStyle("rgb(0, 0, 0)");
+shouldNeedStyleRecalc(false);
+
+</script>
+<script src=""
+</html>

Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-3-expected.txt (0 => 189788)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-3-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-3-expected.txt	2015-09-15 07:41:31 UTC (rev 189788)
@@ -0,0 +1,35 @@
+Test the style invalidation of elements affected by an indirect adjacent.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 0, 0)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 1, 2)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 1, 2)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is true
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS getComputedStyle(document.querySelectorAll("target")[0]).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.querySelectorAll("target")[1]).color is "rgb(0, 0, 0)"
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(".activator")[1]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[0]) is false
+PASS window.internals.nodeNeedsStyleRecalc(document.querySelectorAll("target")[1]) is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-3.html (0 => 189788)


--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-3.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/css/indirect-adjacent-style-invalidation-3.html	2015-09-15 07:41:31 UTC (rev 189788)
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<style>
+* {
+    color: black;
+}
+:checked:matches(*, :last-of-type, *) ~ target {
+    color: rgb(0, 1, 2);
+}
+</style>
+</head>
+<body>
+    <div>
+        <!-- With renderer -->
+        <input class="activator" type="checkbox">
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <target></target>
+    </div>
+    <div style="display:none;">
+        <!-- Without renderer -->
+        <input class="activator" type="radio">
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <padding></padding>
+        <target></target>
+    </div>
+</body>
+<script>
+
+description('Test the style invalidation of elements affected by an indirect adjacent.');
+
+function shouldNeedStyleRecalc(expected) {
+    var testFunction = expected ? shouldBeTrue : shouldBeFalse;
+    testFunction("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\".activator\")[0])");
+    testFunction("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\".activator\")[1])");
+    shouldBeFalse("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\"target\")[0])");
+    shouldBeFalse("window.internals.nodeNeedsStyleRecalc(document.querySelectorAll(\"target\")[1])");
+}
+
+function setId(name) {
+    var allTargets = document.querySelectorAll("target");
+    allTargets[0].id = name;
+    allTargets[1].id = name;
+}
+
+function checkStyle(expectedColor) {
+    var allTargets = document.querySelectorAll("target");
+    shouldBeEqualToString('getComputedStyle(document.querySelectorAll("target")[0]).color', expectedColor);
+    shouldBeEqualToString('getComputedStyle(document.querySelectorAll("target")[1]).color', expectedColor);
+}
+// Force a layout to ensure we don't have dirty styles.
+var offsetTop = document.documentElement.offsetTop;
+
+// Initial state.
+shouldNeedStyleRecalc(false);
+checkStyle("rgb(0, 0, 0)");
+
+// Check the input fields.
+var allActivators = document.querySelectorAll("input.activator:matches([type=checkbox], [type=radio])");
+for (let i = 0; i < allActivators.length; ++i) {
+    allActivators[i].checked = true;
+}
+shouldNeedStyleRecalc(true);
+checkStyle("rgb(0, 1, 2)");
+shouldNeedStyleRecalc(false);
+
+// Uncheck the input fields.
+var allActivators = document.querySelectorAll("input.activator:matches([type=checkbox], [type=radio])");
+for (let i = 0; i < allActivators.length; ++i) {
+    allActivators[i].checked = false;
+}
+shouldNeedStyleRecalc(true);
+checkStyle("rgb(0, 0, 0)");
+shouldNeedStyleRecalc(false);
+
+</script>
+<script src=""
+</html>

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog (189787 => 189788)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog	2015-09-15 07:38:08 UTC (rev 189787)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog	2015-09-15 07:41:31 UTC (rev 189788)
@@ -1,3 +1,21 @@
+2015-09-09  Benjamin Poulain  <bpoul...@apple.com>
+
+        CSS general sibling selectors does not work without CSS JIT
+        https://bugs.webkit.org/show_bug.cgi?id=148987
+        rdar://problem/22559860
+
+        Reviewed by Andreas Kling.
+
+        When traversing with the indirect adjacent combinator, SelectorChecker
+        was not setting the style invalidation flag on the right element.
+
+        Tests: fast/css/indirect-adjacent-style-invalidation-1.html
+               fast/css/indirect-adjacent-style-invalidation-2.html
+               fast/css/indirect-adjacent-style-invalidation-3.html
+
+        * css/SelectorChecker.cpp:
+        (WebCore::SelectorChecker::matchRecursively):
+
 2015-09-09  Chris Dumez  <cdu...@apple.com>
 
         Setting document.title when there is no title and no head element should no nothing

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/css/SelectorChecker.cpp (189787 => 189788)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/css/SelectorChecker.cpp	2015-09-15 07:38:08 UTC (rev 189787)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/css/SelectorChecker.cpp	2015-09-15 07:41:31 UTC (rev 189788)
@@ -353,7 +353,7 @@
         nextContext.elementStyle = nullptr;
         for (; nextContext.element; nextContext.element = nextContext.element->previousElementSibling()) {
             if (context.resolvingMode == Mode::ResolvingStyle)
-                context.element->setAffectsNextSiblingElementStyle();
+                nextContext.element->setAffectsNextSiblingElementStyle();
 
             PseudoIdSet ignoreDynamicPseudo;
             unsigned indirectAdjacentSpecificity = 0;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to