WebCore: [V8] Make XMLHttpRequest.send handle File object.
[WebKit-https.git] / LayoutTests / http / tests / local / resources / send-dragged-file.js
1 description("Test for sending a dragged file via XMLHttpRequest.");
2
3 var fileInput = document.createElement("input");
4 fileInput.type = "file";
5 fileInput.style.width = "100px";
6 fileInput.style.height = "100px";
7 // Important that we put this at the top of the doc so that logging does not cause it to go out of view (where it can't be dragged to)
8 document.body.insertBefore(fileInput, document.body.firstChild);
9
10 fileInput.addEventListener("dragenter", function() {
11     event.preventDefault();
12 }, false);
13
14 fileInput.addEventListener("dragover", function() {
15     event.preventDefault();
16 }, false);
17
18 fileInput.addEventListener("drop", function() {
19     if (event.dataTransfer.types.indexOf("Files") != -1 && event.dataTransfer.files.length == 1)
20         testPassed("event.dataTransfer contains a File object on drop.");
21     else {
22         testFailed("event.dataTransfer does not contain a File object on drop.");
23         return;
24     }
25
26     var xhr = new XMLHttpRequest();
27     xhr.open("POST", "http://127.0.0.1:8000/xmlhttprequest/resources/post-echo.cgi", false);
28     xhr.send(event.dataTransfer.files[0]);
29     if (xhr.responseText == "Hello")
30         testPassed("Expected response data received.");
31     else
32         testFailed("Unexpected response data received: " + xhr.responseText);
33
34     event.preventDefault();
35 }, false);
36
37 function moveMouseToCenterOfElement(element) {
38     var centerX = element.offsetLeft + element.offsetWidth / 2;
39     var centerY = element.offsetTop + element.offsetHeight / 2;
40     eventSender.mouseMoveTo(centerX, centerY);
41 }
42
43 function runTest()
44 {
45     eventSender.beginDragWithFiles(["resources/file-for-drag-to-send.txt"]);
46     moveMouseToCenterOfElement(fileInput);
47     eventSender.mouseUp();
48 }
49
50 if (window.eventSender) {
51     runTest();
52     // Clean up after ourselves
53     fileInput.parentNode.removeChild(fileInput);
54 } else {
55     testFailed("This test is not interactive, please run using DumpRenderTree");
56 }
57
58 var successfullyParsed = true;