Crash in the hit testing code via HTMLPlugInElement::isReplacementObscured()
[WebKit-https.git] / LayoutTests / plugins / unsupported-plugin-with-replacement-in-iframe-crash.html
1 <!DOCTYPE html>
2 <html>
3 <body>
4 <p>This tests entering HTMLPlugInElement::isReplacementObscured() while the top document's style tree is dirty.<br>
5 WebKit should update the layout of all documents and should not hit any debug assertions.</p>
6 <style> input:focus { border: solid 5px black; } </style>
7 <script>
8
9 if (window.testRunner) {
10     testRunner.setPluginSupportedMode("none");
11     testRunner.dumpAsText();
12 }
13
14 document.body.getBoundingClientRect();
15
16 const frame = document.createElement('iframe');
17 document.body.appendChild(frame);
18 const frameDocument = frame.contentDocument;
19 frameDocument.body.innerHTML = '<object name="testPlugin" type="application/x-webkit-test-netscape" width="200" height="200"></object>';
20
21 frameDocument.addEventListener('beforeload', () => {
22     console.log('2. beforeload for the object fires and dirties the style tree');
23     const input = document.createElement('input');
24     input.setAttribute('autofocus', '');
25     document.body.appendChild(input);
26 }, true);
27
28 console.log('1. Updating the layout with an embed object inside an iframe');
29 const rect = frameDocument.querySelector('object').getBoundingClientRect();
30 console.log('3. Updated layout. The test passed.');
31
32 document.write('PASS');
33
34 </script>
35 </body>
36 </html>