test_bug372086.html (3150B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=372086 5 --> 6 <head> 7 <title>Test for Bug 372086</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 </head> 11 <body> 12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=372086">Mozilla Bug 372086</a> 13 <p id="display"> 14 <div id="d" is="custom-div">abc</div>def 15 </p> 16 <div id="content" style="display: none"> 17 18 </div> 19 <pre id="test"> 20 <script class="testbody" type="text/javascript"> 21 22 /** Test for Bug 372086 */ 23 24 customElements.define("custom-div", class extends HTMLDivElement { 25 constructor() { 26 super(); 27 this.attachShadow({ mode: "open" }); 28 this.shadowRoot.innerHTML = `ghi<slot></slot>jkl`; 29 } 30 }, { 31 extends: "div", 32 }); 33 34 function runTest() { 35 let range = document.createRange(); 36 37 var c = $("d").firstChild; 38 var a = $("d").nextSibling; 39 40 range.setStart(c, 1); 41 range.setEnd(c, 3); 42 is(range.startContainer, c, "Unexpected start container"); 43 is(range.startOffset, 1, "Unexpected start offset"); 44 is(range.endContainer, c, "Unexpected end container"); 45 is(range.endOffset, 3, "Unexpected end offset"); 46 is(range.toString(), "bc", "Unexpected range serialization"); 47 48 let shadow = d.shadowRoot.firstChild; 49 // Should collapse the range, because can't determine order 50 range.setEnd(shadow, 2); 51 is(range.startContainer, shadow, 52 "Unexpected collapsed start container"); 53 is(range.startOffset, 2, "Unexpected collapsed start offset"); 54 is(range.endContainer, shadow, 55 "Unexpected collapsed end container"); 56 is(range.endOffset, 2, "Unexpected collapsed end offset"); 57 is(range.toString(), "", "Unexpected collapsed range serialization"); 58 59 range.setEnd(a, 2); 60 range.setStart(a, 0); 61 is(range.startContainer, a, "Unexpected start container after"); 62 is(range.startOffset, 0, "Unexpected start offset after"); 63 is(range.endContainer, a, "Unexpected end container after"); 64 is(range.endOffset, 2, "Unexpected end offset after"); 65 is(range.toString(), "de", "Unexpected range serialization after"); 66 67 shadow = d.shadowRoot.lastChild; 68 // Collapses because one endpoint is anonymous from point of view of 69 // the other. 70 range.setStart(shadow, 1); 71 is(range.startContainer, shadow, 72 "Unexpected newly collapsed start container"); 73 is(range.startOffset, 1, "Unexpected newly collapsed start offset"); 74 is(range.endContainer, shadow, 75 "Unexpected newly collapsed end container"); 76 is(range.endOffset, 1, "Unexpected newly collapsed end offset"); 77 is(range.toString(), "", "Unexpected collapsed range serialization"); 78 79 range.setEnd(shadow, 3); 80 is(range.startContainer, shadow, 81 "Unexpected shadow start container"); 82 is(range.startOffset, 1, "Unexpected shadow start offset"); 83 is(range.endContainer, shadow, 84 "Unexpected shadow end container"); 85 is(range.endOffset, 3, "Unexpected shadow end offset"); 86 is(range.toString(), "kl", "Unexpected shadow range serialization"); 87 } 88 89 SimpleTest.waitForExplicitFinish(); 90 addLoadEvent(runTest); 91 addLoadEvent(SimpleTest.finish) 92 </script> 93 </pre> 94 </body> 95 </html>