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

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

Issue 2720463002: Remove webkitdropzone. (Closed)
Patch Set: Finished rewriting dropzone tests. Created 3 years, 9 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
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 dropEffectTest = params => {
9 promise_test(t => {
10 document.querySelector('.test-description').textContent =
11 JSON.stringify(params);
12
13 const dragged = document.querySelector('.dragged');
14 if (dragged && !dragged.classList.contains('no-ondragstart')) {
15 dragged.ondragstart = t.step_func(event => {
16 event.dataTransfer.setData('text/plain', 'Needed to work in Firefox');
jsbell 2017/03/02 22:06:45 Happen to have a link to a bug?
pwnall 2017/03/02 22:34:29 I've been cargo-culting this from other tests arou
17 if ('allowed' in params)
18 event.dataTransfer.effectAllowed = params.allowed;
19 });
20 }
21
22 const dropZone = document.querySelector('.dropzone');
23 dropZone.ondragover = t.step_func(event => {
24 event.preventDefault();
25 if ('drop' in params)
26 event.dataTransfer.dropEffect = params.drop;
27 });
28 let gotDrop = false;
29 dropZone.ondrop = t.step_func(event => {
30 event.preventDefault();
31 gotDrop = true;
32 });
33
34 return new Promise((resolve, reject) => {
jsbell 2017/03/02 22:06:45 Nit: Move this up to the top of the `t => {` block
pwnall 2017/03/02 22:34:29 Done.
35 const doneButton = document.querySelector('.done');
36
37 if (dragged) {
38 dragged.ondragend = t.step_func(event => {
39 resolve(event.dataTransfer.dropEffect);
40 });
41 } else {
42 doneButton.onclick = t.step_func(() => {
43 resolve('none');
44 });
45 }
46
47 if (window.eventSender) {
48 if (dragged) {
49 mouseMoveToCenter(dragged);
50 eventSender.mouseDown();
51 } else {
52 eventSender.mouseMoveTo(0, 0);
53 eventSender.beginDragWithFiles(['resources/dragged-file.txt']);
54 }
55 setTimeout(() => {
56 mouseMoveToCenter(dropZone);
57 eventSender.mouseUp();
58 if (doneButton) {
59 setTimeout(() => {
60 const clickEvent = new Event('click');
61 doneButton.dispatchEvent(clickEvent);
62 }, 100);
63 }
64 }, 100);
65 }
66 }).then((dragOperation) => {
jsbell 2017/03/02 22:06:45 nit: no () needed
pwnall 2017/03/02 22:34:29 Done.
67 if ('operation' in params) {
68 assert_true(gotDrop, 'drop target should have received a drop event');
69 assert_equals(dragOperation, params.operation);
70 } else {
71 assert_true(
72 !gotDrop, 'drop target should not have received a drop event');
73 assert_equals(dragOperation, 'none');
74 }
75 });
76 }, `effectAllowed: ${params.allowed} dropEffect: ${params.drop}`);
77 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698