WebKit Bugzilla
Attachment 349736 Details for
Bug 184307
: Custom elements in a reaction queue can lose its JS wrapper and become HTMLUnknownElement
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
Reproduction for trunk
bug184307.html (text/html), 1.01 KB, created by
Ryosuke Niwa
on 2018-09-13 23:05:48 PDT
(
hide
)
Description:
Reproduction for trunk
Filename:
MIME Type:
Creator:
Ryosuke Niwa
Created:
2018-09-13 23:05:48 PDT
Size:
1.01 KB
patch
obsolete
><!DOCTYPE html> ><html> ><body> ><pre id="log"></pre> ><div id="container"><script> >let failCount = 0; >class MyComponent extends HTMLElement { > disconnectedCallback() { > if (first) { > document.getElementById('container').innerHTML = content; > first = false; > } > if (!(this instanceof MyComponent)) > failCount++; > } >} >customElements.define("my-component", MyComponent); > >if (window.testRunner) > testRunner.dumpAsText(); > >let content = ''; >for (let i = 0; i < 1000; i++) > content += '<my-component></my-component>' > >let first = true; >for (let test = 0; test < 20; test++) { > failCount = 0; > for (let i = 0; i < 50; i++) { > first = true; > document.getElementById('container').textContent = ''; > document.write(`<div>${content}</div>`); > } > document.getElementById('log').append(failCount ? `FAIL - ${failCount} elements lost wrappers\n` : 'PASS\n'); >} >document.getElementById('container').textContent = ''; > ></script></div> ></body> ></html> >
<!DOCTYPE html> <html> <body> <pre id="log"></pre> <div id="container"><script> let failCount = 0; class MyComponent extends HTMLElement { disconnectedCallback() { if (first) { document.getElementById('container').innerHTML = content; first = false; } if (!(this instanceof MyComponent)) failCount++; } } customElements.define("my-component", MyComponent); if (window.testRunner) testRunner.dumpAsText(); let content = ''; for (let i = 0; i < 1000; i++) content += '<my-component></my-component>' let first = true; for (let test = 0; test < 20; test++) { failCount = 0; for (let i = 0; i < 50; i++) { first = true; document.getElementById('container').textContent = ''; document.write(`<div>${content}</div>`); } document.getElementById('log').append(failCount ? `FAIL - ${failCount} elements lost wrappers\n` : 'PASS\n'); } document.getElementById('container').textContent = ''; </script></div> </body> </html>
View Attachment As Raw
Actions:
View
Attachments on
bug 184307
:
337178
|
345910
|
349736
|
349740
|
349844
|
350093
|
350146
|
350157
|
350178