test_nested_editor.html (1997B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title> Test for nested contenteditable elements </title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script src="/tests/SimpleTest/EventUtils.js"></script> 7 <link rel="stylesheet" href="/tests/SimpleTest/test.css"> 8 </head> 9 <body> 10 <template id="focus-iframe-contenteditable-in-div"> 11 <div contenteditable> 12 <iframe srcdoc="<div id='focusme' contenteditable></div>"></iframe> 13 </div> 14 </template> 15 16 <template id="focus-contenteditable-parent-along-with-iframe"> 17 <div id='focusme' contenteditable></div> 18 <iframe srcdoc="<div contenteditable></div>"></iframe> 19 </template> 20 21 <template id="focus-iframe-textarea-in-div"> 22 <div contenteditable> 23 <iframe srcdoc="<textarea id='focusme'></textarea>"></iframe> 24 </div> 25 </template> 26 27 <template id="focus-textarea-parent-along-with-iframe"> 28 <textarea id='focusme' contenteditable></textarea> 29 <iframe srcdoc="<div contenteditable></div>"></iframe> 30 </template> 31 <script> 32 "use strict"; 33 34 async function runTest() { 35 function findFocusme() { 36 return new Promise(r => { 37 let focusInParent = document.getElementById("focusme"); 38 if (focusInParent) { 39 r(focusInParent); 40 return; 41 } 42 document.querySelector("iframe").addEventListener("load", function() { 43 return r(document.querySelector("iframe").contentDocument.getElementById("focusme")); 44 }); 45 }); 46 } 47 48 const focusme = await findFocusme(); 49 50 focusme.focus(); 51 synthesizeKey("abc"); 52 53 if (focusme.nodeName === "TEXTAREA") { 54 is(focusme.value, "abc"); 55 } else { 56 is(focusme.innerHTML, "abc"); 57 } 58 } 59 60 SimpleTest.waitForExplicitFinish(); 61 62 SimpleTest.waitForFocus(async () => { 63 for (const template of document.querySelectorAll("template")) { 64 const content = template.content.cloneNode(true); 65 document.body.appendChild(content); 66 67 await runTest(); 68 69 document.body.innerHTML = ""; 70 } 71 72 SimpleTest.finish(); 73 }); 74 75 </script> 76 </body> 77 </html>