diff options
3 files changed, 42 insertions, 7 deletions
diff --git a/components/test_runner/event_sender.cc b/components/test_runner/event_sender.cc index 6e1df4f..31867c9 100644 --- a/components/test_runner/event_sender.cc +++ b/components/test_runner/event_sender.cc @@ -2594,13 +2594,17 @@ void EventSender::DoMouseUp(const WebMouseEvent& e) { WebPoint client_point(e.x, e.y); WebPoint screen_point(e.globalX, e.globalY); - FinishDragAndDrop( - e, - view_->dragTargetDragOver( - client_point, - screen_point, - current_drag_effects_allowed_, - e.modifiers)); + blink::WebDragOperation drag_effect = view_->dragTargetDragOver( + client_point, + screen_point, + current_drag_effects_allowed_, + e.modifiers); + + // Bail if dragover caused cancellation. + if (current_drag_data_.isNull()) + return; + + FinishDragAndDrop(e, drag_effect); } void EventSender::DoMouseMove(const WebMouseEvent& e) { diff --git a/third_party/WebKit/LayoutTests/fast/events/drag-nested-eventSender-on-dragover-expected.txt b/third_party/WebKit/LayoutTests/fast/events/drag-nested-eventSender-on-dragover-expected.txt new file mode 100644 index 0000000..a4f7be6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/events/drag-nested-eventSender-on-dragover-expected.txt @@ -0,0 +1,9 @@ +Test that nested use of eventSender.beginDragWithFiles() from within |dragover| is handled without crashing. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/third_party/WebKit/LayoutTests/fast/events/drag-nested-eventSender-on-dragover.html b/third_party/WebKit/LayoutTests/fast/events/drag-nested-eventSender-on-dragover.html new file mode 100644 index 0000000..1eb5c9f --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/events/drag-nested-eventSender-on-dragover.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<body> +<script> +if (window.testRunner) + testRunner.dumpAsText(); + +document.addEventListener("dragover", function () { + try { + eventSender.beginDragWithFiles(["resources/empty.html"]); + console.log("FAIL - nested beginDragWithFiles() expected to throw."); + } catch (e) {;} +}); + +eventSender.beginDragWithFiles(["resources/empty.html"]); +eventSender.mouseMoveTo(10, 10); +eventSender.mouseUp(); +</script> +<script src="../../resources/js-test.js"></script> +<script> +description('Test that nested use of eventSender.beginDragWithFiles() from within |dragover| is handled without crashing.'); +</script> +</body> |
