| Index: third_party/WebKit/LayoutTests/fast/events/inputevents/beforeinput-remove-iframe-crash.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/events/inputevents/beforeinput-remove-iframe-crash.html b/third_party/WebKit/LayoutTests/fast/events/inputevents/beforeinput-remove-iframe-crash.html
|
| index bcc1427fc8c1b34f4de5afdcec0495805229b55c..b71223fd0b314861e12f7ecbe9d86c2085c32a6c 100644
|
| --- a/third_party/WebKit/LayoutTests/fast/events/inputevents/beforeinput-remove-iframe-crash.html
|
| +++ b/third_party/WebKit/LayoutTests/fast/events/inputevents/beforeinput-remove-iframe-crash.html
|
| @@ -66,6 +66,52 @@ test(function() {
|
| testRunner.execCommand('redo');
|
| }, 'Testing redo');
|
| }, 'Testing beforeinput in removed iframe');
|
| +
|
| +async_test(function(t) {
|
| + assert_not_equals(window.eventSender, undefined, 'This test requires eventSender.');
|
| + assert_not_equals(window.testRunner, undefined, 'This test requires testRunner.');
|
| +
|
| + function simulateDragDrop(dragElement, dropElement) {
|
| + eventSender.mouseMoveTo(dragElement.offsetLeft + dragElement.offsetWidth / 2,
|
| + dragElement.offsetTop + dragElement.offsetHeight / 2);
|
| + eventSender.mouseDown();
|
| + eventSender.leapForward(100);
|
| + eventSender.mouseMoveTo(dropElement.offsetLeft + dropElement.offsetWidth / 2,
|
| + dropElement.offsetTop + dropElement.offsetHeight / 2);
|
| + eventSender.mouseUp();
|
| + }
|
| +
|
| + function testDragDropCrash(inputTypeToCrash, comments, next) {
|
| + const iframe = document.createElement('iframe');
|
| + iframe.src = '../resources/beforeinput-remove-iframe-crash-iframe.html';
|
| + iframe.onload = t.step_func(() => {
|
| + var didFireInputTypeToCrash = false;
|
| + const childDocument = iframe.contentDocument;
|
| + const editable1 = childDocument.getElementById('editable1');
|
| + const editable2 = childDocument.getElementById('editable2');
|
| + childDocument.addEventListener('beforeinput', event => {
|
| + if (event.inputType == inputTypeToCrash) {
|
| + didFireInputTypeToCrash = true;
|
| + if (iframe.parentNode)
|
| + iframe.remove();
|
| + }
|
| + });
|
| +
|
| + simulateDragDrop(editable1, editable2);
|
| +
|
| + if (iframe.parentNode)
|
| + iframe.remove();
|
| + assert_true(didFireInputTypeToCrash, comments);
|
| + next();
|
| + });
|
| + document.body.appendChild(iframe);
|
| + }
|
| +
|
| + // Test Drag&Drop.
|
| + t.step(() => testDragDropCrash('deleteByDrag', 'Testing deleteByDrag',
|
| + () => testDragDropCrash('insertFromDrop', 'Testing insertFromDrop',
|
| + () => t.done())));
|
| +}, 'Testing beforeinput for Drag&Drop in removed iframe');
|
| </script>
|
| </body>
|
| </html>
|
|
|