| 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 |