| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <title>InputEvent: beforeinput getTargetRanges()</title> | 4 <title>InputEvent: beforeinput getTargetRanges()</title> |
| 5 <script src="../../../resources/testharness.js"></script> | 5 <script src="../../../resources/testharness.js"></script> |
| 6 <script src="../../../resources/testharnessreport.js"></script> | 6 <script src="../../../resources/testharnessreport.js"></script> |
| 7 </head> | 7 </head> |
| 8 <body> | 8 <body> |
| 9 <p id="sample" contentEditable="true"></p> | 9 <p id="sample" contentEditable="true"></p> |
| 10 <textarea id="textarea1"></textarea> |
| 10 <div id="log"></div> | 11 <div id="log"></div> |
| 11 <script> | 12 <script> |
| 12 test(function() { | 13 test(function() { |
| 13 if (!window.eventSender) { | 14 if (!window.eventSender) { |
| 14 document.write('This test requires eventSender'); | 15 document.write('This test requires eventSender'); |
| 15 return; | 16 return; |
| 16 } | 17 } |
| 17 | 18 |
| 18 // Setup data. | 19 // Setup data. |
| 19 var sample = document.getElementById('sample'); | 20 var sample = document.getElementById('sample'); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 sample.removeEventListener('beforeinput', handler); | 68 sample.removeEventListener('beforeinput', handler); |
| 68 }; | 69 }; |
| 69 sample.addEventListener('beforeinput', handler); | 70 sample.addEventListener('beforeinput', handler); |
| 70 | 71 |
| 71 // Send delete-character-backward. | 72 // Send delete-character-backward. |
| 72 eventSender.keyDown('Backspace', []); | 73 eventSender.keyDown('Backspace', []); |
| 73 assert_equals(sample.textContent, 'hell'); | 74 assert_equals(sample.textContent, 'hell'); |
| 74 // |getRanges| should be cleared after dispatch. | 75 // |getRanges| should be cleared after dispatch. |
| 75 assert_equals(lastEvent.getTargetRanges().length, 0); | 76 assert_equals(lastEvent.getTargetRanges().length, 0); |
| 76 }, 'Testing getTargetRanges() cleared after dispatch.'); | 77 }, 'Testing getTargetRanges() cleared after dispatch.'); |
| 78 |
| 79 test(function() { |
| 80 assert_not_equals(window.eventSender, undefined, 'This test requires eventSe
nder.'); |
| 81 assert_not_equals(window.testRunner, undefined, 'This test requires testRunn
er.'); |
| 82 |
| 83 // Setup data. |
| 84 const sample = document.getElementById('sample'); |
| 85 sample.innerHTML = 'hello'; |
| 86 |
| 87 // Move caret right after 'hello'. |
| 88 const selection = window.getSelection(); |
| 89 selection.collapse(sample.firstChild, 0); |
| 90 selection.modify('move', 'forward', 'word'); |
| 91 |
| 92 // Record target ranges. |
| 93 let lastRangeString = ''; |
| 94 const handler = function(event) { |
| 95 const range = event.getTargetRanges()[0]; |
| 96 lastRangeString = `${range.startContainer.textContent}-${range.startOffs
et}-${range.endContainer.textContent}-${range.endOffset}`; |
| 97 }; |
| 98 sample.addEventListener('beforeinput', handler); |
| 99 |
| 100 // Type 'a' at the end of text. |
| 101 eventSender.keyDown('a'); |
| 102 assert_equals(sample.textContent, 'helloa'); |
| 103 assert_equals(lastRangeString, 'hello-5-hello-5'); |
| 104 |
| 105 // Select all text and type 'b'. |
| 106 selection.modify('extend', 'backward', 'word'); |
| 107 eventSender.keyDown('b'); |
| 108 assert_equals(sample.textContent, 'b'); |
| 109 assert_equals(lastRangeString, 'helloa-0-helloa-6'); |
| 110 |
| 111 // Select all text and bold. |
| 112 selection.modify('extend', 'backward', 'word'); |
| 113 testRunner.execCommand('bold'); |
| 114 assert_equals(sample.textContent, 'b'); |
| 115 assert_equals(lastRangeString, 'b-0-b-1'); |
| 116 |
| 117 sample.removeEventListener('beforeinput', handler); |
| 118 }, 'Actions other than deletion should have current selection as target ranges.'
); |
| 119 |
| 120 test(function() { |
| 121 assert_not_equals(window.eventSender, undefined, 'This test requires eventSe
nder.'); |
| 122 |
| 123 // Setup data. |
| 124 const textarea1 = document.getElementById('textarea1'); |
| 125 textarea1.value = 'hello'; |
| 126 textarea1.focus(); |
| 127 |
| 128 // Record range count. |
| 129 let lastRangeCount = -1; |
| 130 const handler = function(event) { |
| 131 lastRangeCount = event.getTargetRanges().length; |
| 132 }; |
| 133 textarea1.addEventListener('beforeinput', handler); |
| 134 |
| 135 // Type 'a' at the end of text. |
| 136 lastRangeCount = -1; |
| 137 eventSender.keyDown('a'); |
| 138 assert_equals(textarea1.value, 'helloa'); |
| 139 assert_equals(lastRangeCount, 0); |
| 140 |
| 141 // Press backspace. |
| 142 lastRangeCount = -1; |
| 143 eventSender.keyDown('Backspace'); |
| 144 assert_equals(textarea1.value, 'hello'); |
| 145 assert_equals(lastRangeCount, 0); |
| 146 |
| 147 textarea1.removeEventListener('beforeinput', handler); |
| 148 }, 'Textarea should have empty target range.'); |
| 77 </script> | 149 </script> |
| 78 </body> | 150 </body> |
| 79 </html> | 151 </html> |
| OLD | NEW |