| <!DOCTYPE html> |
| <html> |
| <body onload="adopt()"> |
| <p>This tests adopting a parent iframe (i.e. the iframe contains the document into which iframe is adopted). WebKit should not hang and should throw a hierarchy request exception.</p> |
| <div>Adopting parent frame: <span id="child"></span></div> |
| <div>Adopting grandparent frame: <span id="grandchild"></span></div> |
| <script> |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| function createFrame(id, parent) { |
| var iframe = document.createElement('iframe'); |
| if (parent) |
| parent.contentDocument.body.appendChild(iframe); |
| else |
| document.body.appendChild(iframe); |
| iframe.contentDocument.body.appendChild(iframe.contentDocument.createTextNode(id)); |
| iframe.contentDocument.body.appendChild(iframe.contentDocument.createElement('br')); |
| iframe.style.width = '70%'; |
| iframe.style.height = '40%'; |
| return iframe; |
| } |
| |
| var parent = createFrame('parent'); |
| var child = createFrame('child', parent); |
| var grandchild = createFrame('grandchild', child); |
| |
| function log(id, message) { |
| document.getElementById(id).innerHTML = message; |
| } |
| |
| function testChild(id, action) { |
| try { |
| action(); |
| } catch(error) { |
| if (error.name == 'HierarchyRequestError') |
| log(id, 'PASS'); |
| else |
| log(id, 'FAIL: got ' + error.name + ' but expected HierarchyRequestError'); |
| return; |
| } |
| log(id, 'FAIL: no exceptions thrown but expected HierarchyRequestError'); |
| } |
| |
| function adopt() { |
| testChild('child', function () { child.contentDocument.adoptNode(parent); }); |
| testChild('grandchild', function () { grandchild.contentDocument.adoptNode(parent); }); |
| } |
| |
| </script> |
| </body> |
| </html> |