| <!DOCTYPE html> |
| <html> |
| <body> |
| <div>This tests the basic functionality and properties of DataTransferItems for files with drag and drop. This test requires DRT.</div> |
| |
| <div id="destination" style="min-height:100px; border: solid 1px black">Drop files here if you test this manually</div> |
| |
| <div id="console"></div> |
| |
| <script> |
| var testFiles = [ |
| { path: 'resources/mozilla.gif', |
| type: 'image/gif', |
| size: 2593 }, |
| { path: 'resources/drop-file-svg.svg', |
| type: 'image/svg+xml', |
| size: 109 }, |
| { path: 'resources/copy-backslash-euc.html', |
| type: 'text/html', |
| size: 478 } |
| ]; |
| |
| function log(text) |
| { |
| var console = document.getElementById('console'); |
| console.appendChild(document.createTextNode(text)); |
| console.appendChild(document.createElement('br')); |
| } |
| |
| function test(expect, actual) |
| { |
| log((expect == actual ? 'PASS' : 'FAIL') + ': "' + expect + '" == "' + actual + '"'); |
| } |
| |
| function startTest() |
| { |
| var destination = document.getElementById('destination'); |
| destination.addEventListener('dragover', handleDragOver, false); |
| destination.addEventListener('drop', handleDrop, false); |
| |
| if (!window.testRunner) |
| return; |
| testRunner.waitUntilDone(); |
| testRunner.dumpAsText(); |
| |
| var files = []; |
| for (var i = 0; i < testFiles.length; ++i) { |
| log('Dragging file: ' + testFiles[i].path); |
| files.push(testFiles[i].path); |
| } |
| |
| // Perform drag-and-drop with the testFiles. |
| eventSender.beginDragWithFiles(files); |
| eventSender.leapForward(500); |
| eventSender.mouseMoveTo(destination.offsetLeft + 10, destination.offsetTop + destination.offsetHeight / 2); |
| eventSender.mouseUp(); |
| } |
| |
| function handleDragOver(e) |
| { |
| e.stopPropagation(); |
| e.preventDefault(); |
| } |
| |
| function handleDrop(e) |
| { |
| e.stopPropagation(); |
| e.preventDefault(); |
| |
| log('Verifying contents of DataTransferItems...'); |
| var items = e.dataTransfer.items; |
| var files = []; |
| test(testFiles.length, items.length); |
| for (var i = 0; i < items.length; ++i) { |
| // The items should be in the same order as we added. |
| var expected = testFiles[i]; |
| |
| var file = items[i].getAsFile(); |
| files.push(file); |
| |
| test('file', items[i].kind); |
| test(expected.type, items[i].type); |
| test(expected.type, file.type); |
| test(expected.size, file.size); |
| |
| var components = expected.path.split('/'); |
| var name = components[components.length - 1]; |
| test(name, file.name); |
| } |
| |
| testRunner.notifyDone(); |
| } |
| |
| startTest(); |
| |
| </script> |
| </body> |
| </html> |