Diff
Modified: releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog (235041 => 235042)
--- releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog 2018-08-20 11:11:16 UTC (rev 235041)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog 2018-08-20 11:11:25 UTC (rev 235042)
@@ -1,3 +1,15 @@
+2018-08-16 Ryosuke Niwa <rn...@webkit.org>
+
+ Custom element doesn't invalidate its style when :defined rule starts to apply
+ https://bugs.webkit.org/show_bug.cgi?id=188637
+
+ Reviewed by Antti Koivisto.
+
+ Added a regression test.
+
+ * fast/custom-elements/defined-update-style-expected.html: Added.
+ * fast/custom-elements/defined-update-style.html: Added.
+
2018-08-16 Joseph Pecoraro <pecor...@apple.com>
LayoutTest inspector/worker/debugger-pause.html sometimes times out
Added: releases/WebKitGTK/webkit-2.22/LayoutTests/fast/custom-elements/defined-update-style-expected.html (0 => 235042)
--- releases/WebKitGTK/webkit-2.22/LayoutTests/fast/custom-elements/defined-update-style-expected.html (rev 0)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/fast/custom-elements/defined-update-style-expected.html 2018-08-20 11:11:25 UTC (rev 235042)
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<body>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <div style="width: 100px; height: 100px; background: green;"></div>
+</body>
+</html>
Added: releases/WebKitGTK/webkit-2.22/LayoutTests/fast/custom-elements/defined-update-style.html (0 => 235042)
--- releases/WebKitGTK/webkit-2.22/LayoutTests/fast/custom-elements/defined-update-style.html (rev 0)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/fast/custom-elements/defined-update-style.html 2018-08-20 11:11:25 UTC (rev 235042)
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<body>
+<style>
+.box {
+ display: block;
+ width: 100px;
+ height: 25px;
+}
+defined-element { background: red; color: green; }
+defined-element:defined { background: green; }
+defined-element:not(:defined) { color: red; }
+
+defined-element div { background: red; color: green; }
+defined-element:defined div { background: green; }
+defined-element:not(:defined) div { color: red; }
+
+defined-element + .sibling { background: red; color: green; }
+defined-element:defined + .sibling { background: green; }
+defined-element:not(:defined) + .sibling { color: red; }
+
+defined-element#foo { background: red; color: green; }
+defined-element#foo:defined { background: green; }
+defined-element#foo:not(:defined) { color: red; }
+
+</style>
+<p>Test passes if you see a single 100px by 100px green box below.</p>
+<defined-element class="box">FAIL</defined-element>
+<defined-element class="box"><div>FAIL</div></defined-element>
+<div class="sibling box">FAIL</div>
+<defined-element id="foo" class="box">FAIL</defined-element>
+<script>
+
+if (window.testRunner)
+ testRunner.waitUntilDone();
+
+setTimeout(() => {
+ customElements.define('defined-element', class extends HTMLElement {});
+ if (window.testRunner)
+ testRunner.notifyDone();
+}, 0);
+
+</script>
+</body>
+</html>
Modified: releases/WebKitGTK/webkit-2.22/LayoutTests/imported/w3c/ChangeLog (235041 => 235042)
--- releases/WebKitGTK/webkit-2.22/LayoutTests/imported/w3c/ChangeLog 2018-08-20 11:11:16 UTC (rev 235041)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/imported/w3c/ChangeLog 2018-08-20 11:11:25 UTC (rev 235042)
@@ -1,3 +1,15 @@
+2018-08-16 Ryosuke Niwa <rn...@webkit.org>
+
+ Custom element doesn't invalidate its style when :defined rule starts to apply
+ https://bugs.webkit.org/show_bug.cgi?id=188637
+
+ Reviewed by Antti Koivisto.
+
+ Rebaselined the test now that all relevant test cases pass. The only remaining test failures
+ are for customized builtins which we do not and shall not implement.
+
+ * web-platform-tests/custom-elements/pseudo-class-defined-expected.txt:
+
2018-08-14 Ryosuke Niwa <rn...@webkit.org>
connectedCallback is invoked by the HTML parser after child nodes had been inserted
Modified: releases/WebKitGTK/webkit-2.22/LayoutTests/imported/w3c/web-platform-tests/custom-elements/pseudo-class-defined-expected.txt (235041 => 235042)
--- releases/WebKitGTK/webkit-2.22/LayoutTests/imported/w3c/web-platform-tests/custom-elements/pseudo-class-defined-expected.txt 2018-08-20 11:11:16 UTC (rev 235041)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/imported/w3c/web-platform-tests/custom-elements/pseudo-class-defined-expected.txt 2018-08-20 11:11:25 UTC (rev 235042)
@@ -11,8 +11,8 @@
PASS createElement("a-a") should not be :defined
PASS createElementNS("http://www.w3.org/1999/xhtml", "a-a") should not be :defined
PASS createElementNS("http://www.w3.org/2000/svg", "a-a") should be :defined
-FAIL Upgraded createElement("a-a") should be :defined assert_equals: getComputedStyle expected "rgb(255, 165, 0)" but got "rgb(0, 0, 255)"
-FAIL Upgraded createElementNS("http://www.w3.org/1999/xhtml", "a-a") should be :defined assert_equals: getComputedStyle expected "rgb(255, 165, 0)" but got "rgb(0, 0, 255)"
+PASS Upgraded createElement("a-a") should be :defined
+PASS Upgraded createElementNS("http://www.w3.org/1999/xhtml", "a-a") should be :defined
PASS Without browsing context: createElement("a-a") should not be :defined
PASS Without browsing context: createElementNS("http://www.w3.org/1999/xhtml", "a-a") should not be :defined
PASS Without browsing context: createElementNS("http://www.w3.org/2000/svg", "a-a") should be :defined
Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog (235041 => 235042)
--- releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog 2018-08-20 11:11:16 UTC (rev 235041)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog 2018-08-20 11:11:25 UTC (rev 235042)
@@ -1,5 +1,19 @@
2018-08-16 Ryosuke Niwa <rn...@webkit.org>
+ Custom element doesn't invalidate its style when :defined rule starts to apply
+ https://bugs.webkit.org/show_bug.cgi?id=188637
+
+ Reviewed by Antti Koivisto.
+
+ Fixed the bug by invalidating the subtree when a custom element gets defined.
+
+ Test: fast/custom-elements/defined-update-style.html
+
+ * dom/Element.cpp:
+ (WebCore::Element::setIsDefinedCustomElement):
+
+2018-08-16 Ryosuke Niwa <rn...@webkit.org>
+
Perform a microtask checkpoint before creating a custom element
https://bugs.webkit.org/show_bug.cgi?id=188189
<rdar://problem/42843022>
Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/dom/Element.cpp (235041 => 235042)
--- releases/WebKitGTK/webkit-2.22/Source/WebCore/dom/Element.cpp 2018-08-20 11:11:16 UTC (rev 235041)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/dom/Element.cpp 2018-08-20 11:11:25 UTC (rev 235042)
@@ -1978,6 +1978,7 @@
auto& data = ""
if (!data.customElementReactionQueue())
data.setCustomElementReactionQueue(std::make_unique<CustomElementReactionQueue>(elementInterface));
+ invalidateStyleForSubtree();
InspectorInstrumentation::didChangeCustomElementState(*this);
}