Index: third_party/WebKit/LayoutTests/custom-elements/imports/connected-callback.html |
diff --git a/third_party/WebKit/LayoutTests/custom-elements/imports/connected-callback.html b/third_party/WebKit/LayoutTests/custom-elements/imports/connected-callback.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3f3fb5897cf87a21837daced4bba971c6370023e |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/custom-elements/imports/connected-callback.html |
@@ -0,0 +1,70 @@ |
+<!DOCTYPE html> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<link id="import1" rel="import" href="resources/connected-upgrade.html"> |
+<script> |
+'use strict'; |
+ |
+let reactions = []; |
+ |
+customElements.define('a-a', class extends HTMLElement { |
+ connectedCallback() { |
+ reactions.push(this); |
+ } |
+ disconnectedCallback() { |
+ reactions.push(this); |
+ } |
+}); |
+</script> |
+<link id="import2" rel="import" href="resources/connected-parsercreate.html"> |
+<script> |
+'use strict'; |
+ |
+test(() => { |
+ let importDoc1 = import1.import; |
+ let importDoc2 = import2.import; |
+ |
+ let a = importDoc1.querySelector('#a'); |
+ let b = importDoc1.querySelector('#b'); |
+ let c = importDoc2.querySelector('#c'); |
+ let d = importDoc2.querySelector('#d'); |
+ |
+ assert_array_equals(reactions, [a, b, c, d], |
+ 'connectedCallback should be called for both upgrade and create.'); |
+ |
+ reactions = []; |
+ |
+ d.remove(); |
+ c.remove(); |
+ b.remove(); |
+ a.remove(); |
+ |
+ assert_array_equals(reactions, [d, c, b, a], |
+ 'disconnectedCallback should be called in imports.'); |
+ |
+ reactions = []; |
+ |
+ let div1 = document.createElement('div'); |
+ let div2 = document.createElement('div'); |
+ let div3 = document.createElement('div'); |
+ |
+ div1.appendChild(div2); |
+ div1.appendChild(a); |
+ div1.appendChild(div3); |
+ |
+ div2.appendChild(d); |
+ div2.appendChild(c); |
+ div3.appendChild(b); |
+ |
+ importDoc1.body.appendChild(div1); |
+ |
+ assert_array_equals(reactions, [d, c, a, b], |
+ 'connectedCallback should be called in document order.'); |
+ |
+ reactions = []; |
+ |
+ div1.remove(); |
+ assert_array_equals(reactions, [d, c, a, b], |
+ 'disconnectedCallback should be called in document order.'); |
+}, 'connectedCallback and disconnectedCallback should be invoked for elements in import'); |
+</script> |