43 lines
1.2 KiB
HTML
43 lines
1.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<p>This tests removing an iframe with a custom element inside a callback. WebKit should not hit assertions.<br>
|
|
WebKit should not hit any assertions.</p>
|
|
<script>
|
|
|
|
customElements.define('test-element', class extends HTMLElement {
|
|
disconnectedCallback() { }
|
|
attributeChangedCallback(name, oldValue, newValue) {
|
|
if (newValue != 'bar')
|
|
return;
|
|
removeIframe();
|
|
GCController.collect();
|
|
}
|
|
static get observedAttributes() { return ['id']; }
|
|
});
|
|
|
|
function insertIframe() {
|
|
let iframe = document.createElement('iframe');
|
|
document.body.appendChild(iframe);
|
|
let container = document.createElement('div');
|
|
container.innerHTML = '<test-element></test-element><test-element id="foo"></test-element>';
|
|
iframe.contentDocument.body.appendChild(container);
|
|
}
|
|
|
|
function removeIframe() {
|
|
document.querySelector('iframe').remove();
|
|
}
|
|
|
|
if (!window.GCController)
|
|
document.write('This test requires GCController');
|
|
else {
|
|
testRunner.dumpAsText();
|
|
insertIframe();
|
|
document.createElement('test-element').id = 'bar';
|
|
document.write(`<p>PASS. WebKit did not hit any assertions.</p>`);
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|