typing-around-link-element-after-joining-paragraphs.html (10041B)
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="timeout" content="long"> 6 <meta name="variant" content="?action=Backspace"> 7 <meta name="variant" content="?action=Delete"> 8 <title>Typing after joining paragraph shouldn't be inserted into the link</title> 9 <script src="/resources/testharness.js"></script> 10 <script src="/resources/testharnessreport.js"></script> 11 <script src="/resources/testdriver.js"></script> 12 <script src="/resources/testdriver-vendor.js"></script> 13 <script src="/resources/testdriver-actions.js"></script> 14 <script src="../include/editor-test-utils.js"></script> 15 </head> 16 <body> 17 <div contenteditable></div> 18 <script> 19 "use strict"; 20 21 const params = new URLSearchParams(location.search.substring(1)); 22 const backspace = params.get("action") == "Backspace"; 23 const bracketsForBackspace = backspace ? "[]" : ""; 24 const bracketsForDelete = backspace ? "" : "[]"; 25 26 const editingHost = document.querySelector("div[contenteditable]"); 27 const utils = new EditorTestUtils(editingHost); 28 29 function addPromiseTest(aTest) { 30 promise_test(async () => { 31 editingHost.focus(); 32 utils.setupEditingHost(aTest.innerHTML); 33 await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey()); 34 await utils.sendKey("X", utils.kShiftKey); 35 await utils.sendKey("Y", utils.kShiftKey); 36 utils.normalizeStyleAttributeValues(); 37 if (Array.isArray(aTest.expectedResult)) { 38 assert_in_array(editingHost.innerHTML, aTest.expectedResult); 39 } else { 40 assert_equals(editingHost.innerHTML, aTest.expectedResult); 41 } 42 }, `${backspace ? "Backspace" : "Delete"} in "${aTest.innerHTML}"`); 43 } 44 45 addPromiseTest({ 46 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 47 bracketsForDelete 48 }</a></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 49 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>` 50 }); 51 addPromiseTest({ 52 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 53 bracketsForDelete 54 }</a><br></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 55 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>` 56 }); 57 addPromiseTest({ 58 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 59 bracketsForDelete 60 }<br></a></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 61 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>` 62 }); 63 addPromiseTest({ 64 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 65 bracketsForDelete 66 }</a></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 67 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>` 68 }); 69 addPromiseTest({ 70 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 71 bracketsForDelete 72 }</a><br></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 73 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>` 74 }); 75 addPromiseTest({ 76 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 77 bracketsForDelete 78 }<br></a></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 79 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span></p>` 80 }); 81 addPromiseTest({ 82 innerHTML: `<a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 83 bracketsForDelete 84 }</a><br><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 85 expectedResult: `<a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span>`, 86 }); 87 addPromiseTest({ 88 innerHTML: `<a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 89 bracketsForDelete 90 }<br></a><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 91 expectedResult: `<a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY<span style="color:rgb(255, 0, 0)">bar</span>`, 92 }); 93 94 // Should clear only the link style. 95 addPromiseTest({ 96 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${ 97 bracketsForDelete 98 }</b></a></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 99 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 100 }); 101 addPromiseTest({ 102 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${ 103 bracketsForDelete 104 }</b></a><br></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 105 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 106 }); 107 addPromiseTest({ 108 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${ 109 bracketsForDelete 110 }</b><br></a></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 111 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 112 }); 113 addPromiseTest({ 114 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${ 115 bracketsForDelete 116 }</b></a></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 117 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 118 }); 119 addPromiseTest({ 120 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${ 121 bracketsForDelete 122 }</b></a><br></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 123 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 124 }); 125 addPromiseTest({ 126 innerHTML: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${ 127 bracketsForDelete 128 }</b><br></a></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 129 expectedResult: `<p><a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 130 }); 131 addPromiseTest({ 132 innerHTML: `<a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${ 133 bracketsForDelete 134 }</b></a><br><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 135 expectedResult: `<a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span>`, 136 }); 137 addPromiseTest({ 138 innerHTML: `<a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo${ 139 bracketsForDelete 140 }</b><br></a><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 141 expectedResult: `<a href="about:blank" style="color:rgb(0, 0, 255)"><b>foo</b></a><b>XY</b><span style="color:rgb(255, 0, 0)">bar</span>`, 142 }); 143 144 addPromiseTest({ 145 innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 146 bracketsForDelete 147 }</a></b></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 148 expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 149 }); 150 addPromiseTest({ 151 innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 152 bracketsForDelete 153 }</a></b><br></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 154 expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 155 }); 156 addPromiseTest({ 157 innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 158 bracketsForDelete 159 }<br></a></b></p><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 160 expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 161 }); 162 addPromiseTest({ 163 innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 164 bracketsForDelete 165 }</a></b></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 166 expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 167 }); 168 addPromiseTest({ 169 innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 170 bracketsForDelete 171 }</a></b><br></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 172 expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 173 }); 174 addPromiseTest({ 175 innerHTML: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 176 bracketsForDelete 177 }<br></a></b></p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span>`, 178 expectedResult: `<p><b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span></p>`, 179 }); 180 addPromiseTest({ 181 innerHTML: `<b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 182 bracketsForDelete 183 }</a></b><br><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 184 expectedResult: `<b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span>`, 185 }); 186 addPromiseTest({ 187 innerHTML: `<b><a href="about:blank" style="color:rgb(0, 0, 255)">foo${ 188 bracketsForDelete 189 }<br></a></b><p><span style="color:rgb(255, 0, 0)">${bracketsForBackspace}bar</span></p>`, 190 expectedResult: `<b><a href="about:blank" style="color:rgb(0, 0, 255)">foo</a>XY</b><span style="color:rgb(255, 0, 0)">bar</span>`, 191 }); 192 </script> 193 </body> 194 </html>