blob: 3f3fb5897cf87a21837daced4bba971c6370023e [file] [log] [blame]
<!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>