| <!DOCTYPE html> |
| <html> |
| <head> |
| <script type="text/javascript"> |
| function log(msg) |
| { |
| document.body.appendChild(document.createTextNode(msg + '\n')); |
| } |
| |
| function runTests() |
| { |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| var listener = function(e) { |
| var el = document.getElementById('cont'); |
| if (el.firstElementChild && el.lastElementChild != el.firstElementChild) { |
| el.lastElementChild.appendChild(el.firstElementChild); |
| el.lastElementChild && el.removeChild(el.lastElementChild); |
| } |
| if (e.target.firstChild && e.target.firstChild.className == 'Apple-style-span') |
| e.target.firstChild.innerHTML = e.target.firstChild.innerHTML.split(' ')[0]; |
| }; |
| document.addEventListener("DOMSubtreeModified", listener); |
| |
| var el = document.getElementById('cont'); |
| window.getSelection().setBaseAndExtent(document.getElementById('start'), 0, document.getElementById('end'), 0); |
| var str = '<span class="Apple-style-span" style="color: red;"><span>styled</span> <span>content</span></span>'; |
| document.execCommand("InsertHTML", false, str); |
| |
| document.removeEventListener("DOMSubtreeModified", listener); |
| |
| log('PASS: No crash.'); |
| } |
| |
| </script> |
| </head> |
| <body onload="runTests();"> |
| <div id="cont" contenteditable="true"> |
| <span>This <span id="start">tests</span></span> |
| <span>that we don't crash when <code id="end">mutating</code> the dom</span> |
| <span>during execution of an InsertHTML command.</span> |
| </div> |
| </body> |
| </html> |