Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: third_party/WebKit/LayoutTests/fast/events/inputevents/beforeinput-remove-iframe-crash.html

Issue 2374743002: [InputEvent] Support |deleteByDrag|, |insertFromDrop| and fire in sequential order (Closed)
Patch Set: Yosin's review 2 Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698