| <!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> |