OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
| 4 <script src="../js/resources/js-test-pre.js"></script> |
4 <style> | 5 <style> |
5 #drag { | 6 #drag { |
6 border: 1px solid black; | 7 border: 1px solid black; |
7 height: 200px; | 8 height: 200px; |
8 width: 200px; | 9 width: 200px; |
9 } | 10 } |
10 #drop { | 11 #drop { |
11 border: 1px solid black; | 12 border: 1px solid black; |
12 height: 200px; | 13 height: 200px; |
13 width: 200px; | 14 width: 200px; |
14 } | 15 } |
15 </style> | 16 </style> |
16 <script> | 17 <script> |
17 function assertEq(left, right) | |
18 { | |
19 if (left === right) | |
20 log('PASS: ' + left + " === " + right); | |
21 else | |
22 log('FAIL: ' + left + " (of type " + (typeof left) + ") !== " + right +
" (of type " + (typeof right) + ")"); | |
23 } | |
24 function log(str) | |
25 { | |
26 var result = document.getElementById('result'); | |
27 result.appendChild(document.createTextNode(str)); | |
28 result.appendChild(document.createElement('br')); | |
29 } | |
30 | |
31 var testFile; | 18 var testFile; |
| 19 var testItem; |
32 function dragstart(event) | 20 function dragstart(event) |
33 { | 21 { |
34 event.dataTransfer.items.add(testFile); | 22 testItem = event.dataTransfer.items.add(testFile); |
| 23 shouldBeEqualToString('testItem.kind', 'file'); |
| 24 shouldBeEqualToString('testItem.type', 'text/plain'); |
35 } | 25 } |
36 | 26 |
37 function dragenter(event) | 27 function dragenter(event) |
38 { | 28 { |
39 event.preventDefault(); | 29 event.preventDefault(); |
40 } | 30 } |
41 | 31 |
42 function dragover(event) | 32 function dragover(event) |
43 { | 33 { |
44 event.preventDefault(); | 34 event.preventDefault(); |
45 } | 35 } |
46 | 36 |
| 37 var testItems; |
47 function drop(event) | 38 function drop(event) |
48 { | 39 { |
49 assertEq(1, event.dataTransfer.items.length); | 40 testItems = event.dataTransfer.items; |
50 assertEq('file', event.dataTransfer.items[0].kind); | 41 shouldBe('testItems.length', '1'); |
51 assertEq('text/plain', event.dataTransfer.items[0].type); | 42 shouldBeNull('testItems.add(testFile)'); // Read-only. |
52 testRunner.notifyDone(); | 43 shouldBe('testItems.length', '1'); |
| 44 shouldBeEqualToString('testItems[0].kind', 'file'); |
| 45 shouldBeEqualToString('testItems[0].type', 'text/plain'); |
| 46 finishJSTest(); |
53 } | 47 } |
54 | 48 |
55 function runTest() | 49 function runTest() |
56 { | 50 { |
| 51 if (!window.testRunner) |
| 52 return; |
| 53 |
57 // First, we need to generate a File object to use for our tests. | 54 // First, we need to generate a File object to use for our tests. |
58 eventSender.beginDragWithFiles(['test.txt']); | 55 eventSender.beginDragWithFiles(['test.txt']); |
59 var inputElement = document.getElementsByTagName('input')[0]; | 56 var inputElement = document.getElementsByTagName('input')[0]; |
60 eventSender.mouseMoveTo(inputElement.offsetLeft + inputElement.offsetWidth /
2, | 57 eventSender.mouseMoveTo(inputElement.offsetLeft + inputElement.offsetWidth /
2, |
61 inputElement.offsetTop + inputElement.offsetHeight /
2); | 58 inputElement.offsetTop + inputElement.offsetHeight /
2); |
62 eventSender.mouseUp(); | 59 eventSender.mouseUp(); |
63 testFile = inputElement.files[0]; | 60 testFile = inputElement.files[0]; |
64 | 61 |
65 // Now run the actual test. | 62 // Now run the actual test. |
66 var dragElement = document.getElementById('drag'); | 63 var dragElement = document.getElementById('drag'); |
67 eventSender.mouseMoveTo(dragElement.offsetLeft + dragElement.offsetWidth / 2
, | 64 eventSender.mouseMoveTo(dragElement.offsetLeft + dragElement.offsetWidth / 2
, |
68 dragElement.offsetTop + dragElement.offsetHeight / 2
); | 65 dragElement.offsetTop + dragElement.offsetHeight / 2
); |
69 eventSender.mouseDown(); | 66 eventSender.mouseDown(); |
70 eventSender.leapForward(100); | 67 eventSender.leapForward(100); |
71 var dropElement = document.getElementById('drop'); | 68 var dropElement = document.getElementById('drop'); |
72 eventSender.mouseMoveTo(dropElement.offsetLeft + dropElement.offsetWidth / 2
, | 69 eventSender.mouseMoveTo(dropElement.offsetLeft + dropElement.offsetWidth / 2
, |
73 dropElement.offsetTop + dropElement.offsetHeight / 2
); | 70 dropElement.offsetTop + dropElement.offsetHeight / 2
); |
74 eventSender.mouseUp(); | 71 eventSender.mouseUp(); |
75 } | 72 } |
76 | 73 |
77 window.onload = function() | |
78 { | |
79 if (!window.testRunner) | |
80 return; | |
81 testRunner.dumpAsText(); | |
82 testRunner.waitUntilDone(); | |
83 | |
84 runTest(); | |
85 } | |
86 </script> | 74 </script> |
87 </head> | 75 </head> |
88 <body> | 76 <body> |
89 <p>To manually test, select a text file for the file input element, and then dra
g 'Drag Me' to 'Drop Here' and drop. Several lines that say 'PASS' should appea
r below. | 77 <p>To manually test, select a text file for the file input element, and then dra
g 'Drag Me' to 'Drop Here' and drop. |
90 <input type="file"></input> | 78 <input type="file"></input> |
91 <div draggable="true" id="drag" ondragstart="dragstart(event)">Drag Me</div> | 79 <div draggable="true" id="drag" ondragstart="dragstart(event)">Drag Me</div> |
92 <div id="drop" ondragenter="dragenter(event)" ondragover="dragover(event)" ondro
p="drop(event)">Drop Here</div> | 80 <div id="drop" ondragenter="dragenter(event)" ondragover="dragover(event)" ondro
p="drop(event)">Drop Here</div> |
93 </div> | 81 </div> |
94 <div id="result"></div> | 82 <div id="console"></div> |
| 83 <script> |
| 84 description("Tests DataTransferItemList file handling"); |
| 85 window.jsTestIsAsync = true; |
| 86 |
| 87 window.onload = runTest; |
| 88 </script> |
| 89 <script src="../js/resources/js-test-post.js"></script> |
95 </body> | 90 </body> |
96 </html> | 91 </html> |
OLD | NEW |