summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/test_runner/event_sender.cc18
-rw-r--r--third_party/WebKit/LayoutTests/fast/events/drag-nested-eventSender-on-dragover-expected.txt9
-rw-r--r--third_party/WebKit/LayoutTests/fast/events/drag-nested-eventSender-on-dragover.html22
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>