diff options
| author | sigbjornf <sigbjornf@opera.com> | 2016-02-24 13:29:47 -0800 |
|---|---|---|
| committer | Commit bot <commit-bot@chromium.org> | 2016-02-24 21:30:43 +0000 |
| commit | 8d568b12722f02dbb2ec358ce4600b96a673c481 (patch) | |
| tree | f7fe8d4f882149f69db104550dc8ae29c84e8b51 | |
| parent | 45d2cde917cc11147b641242bc39e5b8f36aa692 (diff) | |
| download | chromium_src-8d568b12722f02dbb2ec358ce4600b96a673c481.zip chromium_src-8d568b12722f02dbb2ec358ce4600b96a673c481.tar.gz chromium_src-8d568b12722f02dbb2ec358ce4600b96a673c481.tar.bz2 | |
Have EventSender mouseups unwind better on cancellation during dragover.
Follow up on changes brought by r376733 and check if handling of dragover
cancelled our ongoing drag. Leave early, if so.
R=dcheng,rbyers
BUG=589426
Review URL: https://codereview.chromium.org/1728353002
Cr-Commit-Position: refs/heads/master@{#377392}
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> |
