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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dnd/resources/link-dragging-common.js

Issue 2441023003: Align drag feedback for links with draggable="true" to Safari. (Closed)
Patch Set: Attempted to address feedback. Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
(Empty)
1 const mouseMoveToCenter = (element) => {
2 const clientRect = element.getBoundingClientRect();
3 const centerX = (clientRect.left + clientRect.right) / 2;
4 const centerY = (clientRect.top + clientRect.bottom) / 2;
5 eventSender.mouseMoveTo(centerX, centerY);
6 }
7
8 const runLinkDraggingTest = (t, params) => {
9 let gotDragStart = false
10 let dragStartEffect = null;
11 let dragStartUriList = null;
12 let dragStartTypes = null;
13
14 // Enables the Ahem font, which makes the drag image platform-independent.
15 if (window.testRunner)
16 document.body.setAttribute('class', 'test-runner');
17
18 const dragged = document.querySelector('.dragged');
19 dragged.ondragstart = (event) => {
20 if (!gotDragStart) {
21 gotDragStart = true;
22 dragStartEffect = event.dataTransfer.dropEffect;
23 dragStartUriList = event.dataTransfer.getData('text/uri-list');
24 dragStartTypes = [].concat(event.dataTransfer.types).sort();
25 }
26 }
27
28 let gotDrop = false;
29 let dropEffect = null;
30 const dropZone = document.querySelector('.dropzone');
31 dropZone.ondragover = (event) => event.preventDefault();
32
33 const testDone = document.querySelector('.done');
34 return new Promise((resolve, reject) => {
35 dropZone.ondrop = (event) => {
36 if (!gotDrop) {
37 gotDrop = true;
38 dropEffect = event.dataTransfer.dropEffect;
39 }
40 // Some of the drags would result in the link being followed in Firefox.
41 event.preventDefault();
42
43 resolve(true);
44 }
45
46 if (window.eventSender) {
47 mouseMoveToCenter(dragged);
48 eventSender.mouseDown();
49 setTimeout(() => {
50 mouseMoveToCenter(dropZone);
51 eventSender.mouseUp();
52 }, 100);
53 }
54 }).then(() => t.step(() => {
55 assert_equals(gotDragStart, true,
56 'dragstart event should fire for all drags');
57 if (gotDragStart) {
58 assert_equals(dragStartEffect, 'none',
59 'dataTransfer.dropEffect must always default to "none" in dragstart');
60 assert_equals(dragStartUriList, params.dragStartUriList,
61 'incorrect dataTransfer.getData("text/uri-list") in dragstart');
62 assert_array_equals(dragStartTypes, params.dragStartTypes,
63 'incorrect dataTransfer types in dragstart');
64 }
65
66 if (gotDrop) {
67 assert_equals(dropEffect, 'none',
68 'dataTransfer.dropEffect must always default to "none" in drop');
69 }
70 }));
71 }
72
73 if (window.testRunner)
74 testRunner.dumpDragImage();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698