OLD | NEW |
| (Empty) |
1 <!doctype html> | |
2 <meta charset="utf-8" /> | |
3 <script src="../../resources/testharness.js"></script> | |
4 <script src="../../resources/testharnessreport.js"></script> | |
5 <script src="resources/copy-data-transfer.js"></script> | |
6 <style> | |
7 #dropzone { | |
8 display: block; | |
9 border: 1px solid black; | |
10 width: 200px; | |
11 height: 200px; | |
12 } | |
13 </style> | |
14 | |
15 <p> | |
16 Please download <a download href="resources/dragged-file.txt">this file</a>, | |
17 and drag it into the box below. | |
18 </p> | |
19 | |
20 <div id="dropzone" webkitdropzone="copy file:text/plain"> | |
21 Drop Here | |
22 </div> | |
23 | |
24 <script> | |
25 'use strict'; | |
26 | |
27 const dropZone = document.querySelector('#dropzone'); | |
28 | |
29 const dropPromise = new Promise((resolve, reject) => { | |
30 dropZone.ondrop = event => { | |
31 event.preventDefault(); // Needed to prevent drop navigation. | |
32 resolve(copyDataTransfer(event.dataTransfer)); | |
33 }; | |
34 }); | |
35 | |
36 const clientRect = dropZone.getBoundingClientRect(); | |
37 if (window.eventSender) { | |
38 eventSender.beginDragWithFiles(['resources/dragged-file.txt']); | |
39 const centerX = (clientRect.left + clientRect.right) / 2; | |
40 const centerY = (clientRect.top + clientRect.bottom) / 2; | |
41 eventSender.mouseMoveTo(centerX, centerY); | |
42 eventSender.mouseUp(); | |
43 } | |
44 | |
45 promise_test(() => { | |
46 return dropPromise.then((dataTransfer) => { | |
47 assert_array_equals(dataTransfer.types, ['Files']); | |
48 }); | |
49 }, 'DataTransfer.types in drop'); | |
50 | |
51 promise_test(() => { | |
52 return dropPromise.then((dataTransfer) => { | |
53 assert_object_equals(dataTransfer.data, {Files: ''}); | |
54 }); | |
55 }, 'DataTransfer.getData() return values in drop'); | |
56 | |
57 promise_test(() => { | |
58 return dropPromise.then((dataTransfer) => { | |
59 assert_equals( | |
60 dataTransfer.files.length, 1, | |
61 'DataTransfer.files should have one element'); | |
62 const file = dataTransfer.files[0]; | |
63 assert_equals(file.file.name, 'dragged-file.txt'); | |
64 assert_equals(file.file.type, 'text/plain'); | |
65 assert_equals(file.file.size, 21); | |
66 assert_equals(file.data, 'The test has FAILED.\n'); | |
67 }); | |
68 }, 'DataTransfer.files in drop'); | |
69 | |
70 promise_test(() => { | |
71 return dropPromise.then((dataTransfer) => { | |
72 const file = dataTransfer.files[0].file; | |
73 assert_true( | |
74 file instanceof File, | |
75 'DataTransfer.files[0] should be a File instance'); | |
76 assert_equals( | |
77 file.name, 'dragged-file.txt', | |
78 "File.name should reflect the dropped file's name"); | |
79 assert_equals( | |
80 file.type, 'text/plain', | |
81 "File.type should reflect the dropped file's MIME type"); | |
82 assert_equals( | |
83 file.size, 21, | |
84 "File.type should reflect the dropped file's size"); | |
85 }); | |
86 }, 'DataTransfer.files[0] File metadata in drop'); | |
87 | |
88 promise_test(() => { | |
89 return dropPromise.then((dataTransfer) => { | |
90 assert_equals(dataTransfer.files[0].data, 'The test has FAILED.\n'); | |
91 }); | |
92 }, 'Using FileReader to read DataTransfer.files[0] in drop'); | |
93 | |
94 promise_test(() => { | |
95 return dropPromise.then((dataTransfer) => { | |
96 assert_equals( | |
97 dataTransfer.items.length, 1, | |
98 'DataTransfer.items should have 1 element'); | |
99 const item = dataTransfer.items[0]; | |
100 assert_equals( | |
101 item.kind, 'file', | |
102 'DataTransferItem.kind should indicate that a file was dropped'); | |
103 assert_equals( | |
104 item.type, 'text/plain', // Firefox returns application/x-moz-file | |
105 "DataTransferItem.type should reflect the dropped file's MIME type"); | |
106 }); | |
107 }, 'DataTransfer.items in drop'); | |
108 | |
109 promise_test(() => { | |
110 return dropPromise.then((dataTransfer) => { | |
111 assert_equals( | |
112 dataTransfer.items[0].error, undefined, | |
113 'Reading the file in DataTransfer.items[0] should not throw'); | |
114 | |
115 const file = dataTransfer.items[0].file; | |
116 assert_true( | |
117 file instanceof File, | |
118 'DataTransfer.items[0].getAsFile() should return a File instance'); | |
119 assert_equals( | |
120 file.name, 'dragged-file.txt', | |
121 "File.name should reflect the dropped file's name"); | |
122 assert_equals( | |
123 file.type, 'text/plain', | |
124 "File.type should reflect the dropped file's MIME type"); | |
125 assert_equals( | |
126 file.size, 21, | |
127 "File.type should reflect the dropped file's size"); | |
128 }); | |
129 }, 'DataTransfer.items[0].getAsFile() File metadata in drop'); | |
130 | |
131 promise_test(() => { | |
132 return dropPromise.then((dataTransfer) => { | |
133 assert_equals(dataTransfer.items[0].data, 'The test has FAILED.\n'); | |
134 }); | |
135 }, 'Using FileReader to read DataTransfer.items[0].getAsFile() in drop'); | |
136 | |
137 </script> | |
OLD | NEW |