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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/events/drag-and-drop-thresholds.html

Issue 2401503002: Align drag threshold across content types. (Closed)
Patch Set: Better patch based on feedback, added layout test. Created 4 years, 2 months 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
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/events/drag-and-drop-thresholds-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!DOCTYPE html>
2
3 <style>
4 #draggable, #testend {
5 border: 1px solid black;
6 width: 100px;
7 height: 100px;
8 margin: 20px;
9 }
10 </style>
11
12 <div id="draggable" draggable="true">
13 </div>
14 <div id="testend">
15 </div>
16 <a id="link" href="https://www.chromium.org">A draggable link</a>
17
18 <p>
19 This tests WebKit's drag and drop thresholds. Due to the fine movements
20 required, manual testing is not possible.
21 </p>
22
23 <pre id="results"></pre>
24
25 <script>
26
27 function runCase(name, target, deltaX, deltaY, expectedDrag) {
28 const draggableCenterX = target.offsetLeft + target.offsetWidth / 2;
29 const draggableCenterY = target.offsetTop + target.offsetHeight / 2;
30
31 const testEnd = document.getElementById('testend');
32 const endCenterX = testEnd.offsetLeft + testEnd.offsetWidth / 2;
33 const endCenterY = testEnd.offsetTop + testEnd.offsetHeight / 2;
34
35 let dragStarted = false;
36 target.ondragstart = () => { dragStarted = true; }
37
38 const testEndPromise = new Promise((resolve, reject) => {
39 testEnd.onmouseup = () => { resolve(true); }
40
41 eventSender.mouseMoveTo(draggableCenterX, draggableCenterY);
42 eventSender.mouseDown();
43 setTimeout(() => {
44 eventSender.mouseMoveTo(
45 draggableCenterX + deltaX, draggableCenterY + deltaY);
46 eventSender.mouseUp();
47
48 eventSender.mouseMoveTo(endCenterX, endCenterY);
49 eventSender.mouseDown();
50 eventSender.mouseUp();
51 }, 100);
52 });
53
54 return testEndPromise.then(() => {
55 verdict = (expectedDrag === dragStarted) ? 'OK' : 'FAILED';
56 results.textContent +=
57 `${name}: ${verdict} expected ${expectedDrag} got ${dragStarted}\n`;
58 });
59 }
60
61 window.onload = () => {
62 if (!window.testRunner)
63 return;
64
65 testRunner.dumpAsText();
66 testRunner.waitUntilDone();
67
68 const draggable = document.getElementById('draggable');
69 const link = document.getElementById('link');
70 link.onclick = (event) => event.preventDefault();
71
72 const testCases = [
73 ['No movement', draggable, 0, 0, false],
74 ['Small positive X movement', draggable, 2, 0, false],
75 ['Large positive X movement', draggable, 20, 0, true],
76 ['Small negative X movement', draggable, -2, 0, false],
77 ['Large negative X movement', draggable, -20, 0, true],
78 ['Small positive Y movement', draggable, 0, 2, false],
79 ['Large positive Y movement', draggable, 0, 20, true],
80 ['Small negative Y movement', draggable, 0, -2, false],
81 ['Large negative Y movement', draggable, 0, 20, true],
82 ['Small positive X + positive Y movement', draggable, 2, 2, false],
83 ['Small negative X + positive Y movement', draggable, -2, 2, false],
84 ['Small positive X + negative Y movement', draggable, 2, -2, false],
85 ['Small negative X + negative Y movement', draggable, -2, -2, false],
86 ['Link, small positive X movement', link, 2, 0, false],
87 ['Link, large positive X movement', link, 20, 0, true],
88 ['Link, small negative X movement', link, -2, 0, false],
89 ['Link, large negative X movement', link, -20, 0, true],
90 ['Link, small positive Y movement', link, 0, 2, false],
91 ['Link, large positive Y movement', link, 0, 20, true],
92 ['Link, small negative Y movement', link, 0, -2, false],
93 ['Link, large negative Y movement', link, 0, 20, true],
94 ];
95
96 let promise = Promise.resolve(true);
97 for (const testCase of testCases) {
98 promise = promise.then(() => runCase(...testCase));
99 }
100 promise.then(() => testRunner.notifyDone());
101 };
102
103 </script>
dcheng 2016/10/20 02:40:47 Thanks for the good test! Would you be willing to
pwnall 2016/10/20 05:25:30 Done. Thank you for the suggestion! I didn't think
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/events/drag-and-drop-thresholds-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698