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

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: Rebased, added dependency on CL that fixes testing logistical issue. 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 let dragSource = null;
14
15 // Enables the Ahem font, which makes the drag image platform-independent.
16 if (window.testRunner)
17 document.body.setAttribute('class', 'test-runner');
18
19 const dragged = document.querySelector('.dragged');
20 dragged.ondragstart = (event) => {
21 if (!gotDragStart) {
22 gotDragStart = true;
23 dragStartEffect = event.dataTransfer.dropEffect;
24 dragStartUriList = event.dataTransfer.getData('text/uri-list');
25 dragStartTypes = [].concat(event.dataTransfer.types).sort();
26 dragStartTarget = event.target;
27 }
28 }
29
30 let gotDrop = false;
31 let dropEffect = null;
32 const dropZone = document.querySelector('.dropzone');
33 dropZone.ondragover = (event) => event.preventDefault();
34
35 const testDone = document.querySelector('.done');
36 return new Promise((resolve, reject) => {
37 dropZone.ondrop = (event) => {
38 if (!gotDrop) {
39 gotDrop = true;
40 dropEffect = event.dataTransfer.dropEffect;
41 }
42 // Some of the drags would result in the link being followed in Firefox.
43 event.preventDefault();
44
45 resolve(true);
46 }
47
48 if (window.eventSender) {
49 mouseMoveToCenter(dragged);
50 eventSender.mouseDown();
51 setTimeout(() => {
52 mouseMoveToCenter(dropZone);
53 eventSender.mouseUp();
54 }, 100);
55 }
56 }).then(() => t.step(() => {
57 assert_equals(gotDragStart, true,
58 'dragstart event should fire for all drags');
59 if (gotDragStart) {
60 assert_true(dragStartTarget.classList.contains('dragged'),
61 'the dragged element should have the class "dragged"');
62 assert_equals(dragStartEffect, 'none',
63 'dataTransfer.dropEffect must always default to "none" in dragstart');
64 assert_equals(dragStartUriList, params.dragStartUriList,
65 'incorrect dataTransfer.getData("text/uri-list") in dragstart');
66 assert_array_equals(dragStartTypes, params.dragStartTypes,
67 'incorrect dataTransfer types in dragstart');
68 }
69
70 if (gotDrop) {
71 assert_equals(dropEffect, 'none',
72 'dataTransfer.dropEffect must always default to "none" in drop');
73 }
74 }));
75 }
76
77 if (window.testRunner)
78 testRunner.dumpDragImage();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698