Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <title>InputEvent: beforeinput for Drag and Drop</title> | 4 <title>InputEvent: beforeinput for Drag and Drop</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 <style> | 7 <style> |
| 8 div { | 8 div { |
| 9 width: 100px; | 9 width: 100px; |
| 10 height: 100px; | 10 height: 100px; |
| 11 } | 11 } |
| 12 </style> | 12 </style> |
| 13 </head> | 13 </head> |
| 14 <body> | 14 <body> |
| 15 <div id="editable1" contenteditable><b id="boldtext">EditableText</b></div> | 15 <div id="editable1" contenteditable><b id="boldtext">EditableText</b></div> |
| 16 <div id="editable2" contenteditable></div> | 16 <div id="editable2" contenteditable></div> |
| 17 <textarea id="textarea1">Text</textarea> | 17 <textarea id="textarea1">Text</textarea> |
| 18 <textarea id="barrier"></textarea> | 18 <textarea id="barrier"></textarea> |
| 19 <input id="input_drag"> | |
| 20 <input id="input_drop"> | |
| 19 <script> | 21 <script> |
| 20 function simulateDragDrop(dragElement, dropElement) { | 22 function simulateDragDrop(dragElement, dropElement, start, end) { |
| 21 if (dragElement.select) { | 23 if (dragElement.select) { |
| 22 dragElement.select(); | 24 if (typeof start === 'undefined' || typeof end === 'undefined') { |
| 25 dragElement.select(); | |
| 26 } else { | |
| 27 dragElement.focus(); | |
| 28 dragElement.setSelectionRange(start, end); | |
| 29 } | |
| 23 } else { | 30 } else { |
| 24 var selection = window.getSelection(); | 31 var selection = window.getSelection(); |
| 25 selection.collapse(dragElement, 0); | 32 selection.collapse(dragElement, 0); |
| 26 selection.extend(dragElement, 1); | 33 selection.extend(dragElement, 1); |
| 27 } | 34 } |
| 28 | 35 |
| 29 eventSender.mouseMoveTo(dragElement.offsetLeft + dragElement.offsetWidth / 2 , | 36 eventSender.mouseMoveTo(dragElement.offsetLeft + dragElement.offsetWidth / 2 , |
| 30 dragElement.offsetTop + dragElement.offsetHeight / 2 ); | 37 dragElement.offsetTop + dragElement.offsetHeight / 2 ); |
| 31 eventSender.mouseDown(); | 38 eventSender.mouseDown(); |
| 32 eventSender.leapForward(600); | 39 eventSender.leapForward(600); |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 291 | 298 |
| 292 // Testing remove drag target, |editable1| won't receive DOM updates after d isconnected. | 299 // Testing remove drag target, |editable1| won't receive DOM updates after d isconnected. |
| 293 editable1.addEventListener('beforeinput', removeEditable1Listener); | 300 editable1.addEventListener('beforeinput', removeEditable1Listener); |
| 294 testDragDropEventOrder(editable1, editable2, | 301 testDragDropEventOrder(editable1, editable2, |
| 295 ['editable2:drop', 'beforeinput:editable1:deleteByDrag', 'beforeinput:ed itable2:insertFromDrop', | 302 ['editable2:drop', 'beforeinput:editable1:deleteByDrag', 'beforeinput:ed itable2:insertFromDrop', |
| 296 'input:editable2:insertFromDrop', 'editable1:dragend']); | 303 'input:editable2:insertFromDrop', 'editable1:dragend']); |
| 297 editable1.removeEventListener('beforeinput', removeEditable1Listener); | 304 editable1.removeEventListener('beforeinput', removeEditable1Listener); |
| 298 testRunner.execCommand('undo'); | 305 testRunner.execCommand('undo'); |
| 299 document.body.appendChild(editable1); | 306 document.body.appendChild(editable1); |
| 300 }, 'Testing element removed by event handler'); | 307 }, 'Testing element removed by event handler'); |
| 308 | |
| 309 test(() => { | |
| 310 assert_not_equals(window.eventSender, undefined, 'This test requires eventSe nder.'); | |
| 311 assert_not_equals(window.testRunner, undefined, 'This test requires testRunn er.'); | |
| 312 | |
| 313 const input_drag = document.getElementById('input_drag'); | |
| 314 const input_drop = document.getElementById('input_drop'); | |
| 315 | |
| 316 input_drag.value = "12345678"; | |
|
yosin_UTC9
2017/05/08 04:01:05
nit: Could you use single-quote since other parts
chongz
2017/05/08 23:37:53
Done.
| |
| 317 input_drop.value = "4"; | |
| 318 | |
| 319 simulateDragDrop(input_drag, input_drop, 1, 8); | |
| 320 | |
| 321 assert_equals(input_drag.value, '1'); | |
| 322 assert_equals(input_drop.value, '42345678'); | |
| 323 | |
| 324 testRunner.execCommand('undo'); | |
| 325 | |
| 326 assert_equals(input_drag.value, '12345678'); | |
| 327 assert_equals(input_drop.value, '4'); | |
| 328 }, 'Undo drag&drop should update input.value'); | |
| 301 </script> | 329 </script> |
| 302 </body> | 330 </body> |
| 303 </html> | 331 </html> |
| OLD | NEW |