OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="../../../resources/js-test.js"></script> | 4 <script src="../../../resources/js-test.js"></script> |
| 5 <script src="resources/file-drag-common.js"></script> |
5 </head> | 6 </head> |
6 <body> | 7 <body> |
7 <input type="file" id="singleFile" name="upfile" onchange="singleFileSelected()"
/> | 8 <input type="file" id="singleFile" name="upfile" onchange="singleFileSelected()"
/> |
8 <input type="file" id="multipleFiles" name="upfile[]" multiple="multiple" onchan
ge="multipleFilesSelected()" /> | 9 <input type="file" id="multipleFiles" name="upfile[]" multiple="multiple" onchan
ge="multipleFilesSelected()" /> |
9 <div id="console"></div> | 10 <div id="console"></div> |
10 <script> | 11 <script> |
11 var changeDispatched; | 12 var changeDispatched; |
12 | 13 |
13 description("This tests the condition that triggers a 'change' event on file inp
ut forms."); | 14 description("This tests the condition that triggers a 'change' event on file inp
ut forms."); |
14 | 15 |
15 if (window.testRunner) { | 16 if (window.testRunner) { |
16 var singleFileInput = document.getElementById("singleFile"); | 17 var singleFileInput = document.getElementById("singleFile"); |
17 var multipleFilesInput = document.getElementById("multipleFiles"); | 18 var multipleFilesInput = document.getElementById("multipleFiles"); |
18 | 19 |
19 debug("Test that the 'change' event is triggered on a single file form when
a selected file is changed:"); | 20 debug("Test that the 'change' event is triggered on a single file form when
a selected file is changed:"); |
20 dragFilesOntoInput(singleFileInput, ["foo.txt"]); | 21 dragFilesOntoFileInput(singleFileInput, ["foo.txt"]); |
21 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\foo.txt"); | 22 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\foo.txt"); |
22 shouldBe("changeDispatched", "true"); | 23 shouldBeTrue("changeDispatched"); |
23 | 24 |
24 dragFilesOntoInput(singleFileInput, ["bar.txt"]); | 25 dragFilesOntoFileInput(singleFileInput, ["bar.txt"]); |
25 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\bar.txt"); | 26 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\bar.txt"); |
26 shouldBe("changeDispatched", "true"); | 27 shouldBeTrue("changeDispatched"); |
27 | 28 |
28 dragFilesOntoInput(singleFileInput, ["bar.txt"]); | 29 dragFilesOntoFileInput(singleFileInput, ["bar.txt"]); |
29 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\bar.txt"); | 30 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\bar.txt"); |
30 shouldBe("changeDispatched", "false"); | 31 shouldBeFalse("changeDispatched"); |
31 | 32 |
32 dragFilesOntoInput(singleFileInput, ["foo.txt"]); | 33 dragFilesOntoFileInput(singleFileInput, ["foo.txt"]); |
33 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\foo.txt"); | 34 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\foo.txt"); |
34 shouldBe("changeDispatched", "true"); | 35 shouldBeTrue("changeDispatched"); |
35 | 36 |
36 dragFilesOntoButtonInsideFileInput(singleFileInput, ["baz.png"]); | 37 dragFilesOntoButtonInsideFileInput(singleFileInput, ["baz.png"]); |
37 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\baz.png"); | 38 shouldBeEqualToString("singleFileInput.value", "C:\\fakepath\\baz.png"); |
38 shouldBe("changeDispatched", "true"); | 39 shouldBeTrue("changeDispatched"); |
39 | 40 |
40 debug(""); | 41 debug(""); |
41 debug("Test that the 'change' event is triggered on a multiple file form whe
n a selected file is changed:"); | 42 debug("Test that the 'change' event is triggered on a multiple file form whe
n a selected file is changed:"); |
42 dragFilesOntoInput(multipleFilesInput, ["foo.txt"]); | 43 dragFilesOntoFileInput(multipleFilesInput, ["foo.txt"]); |
43 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); | 44 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); |
44 shouldBe("changeDispatched", "true"); | 45 shouldBeTrue("changeDispatched"); |
45 | 46 |
46 dragFilesOntoInput(multipleFilesInput, ["bar.txt"]); | 47 dragFilesOntoFileInput(multipleFilesInput, ["bar.txt"]); |
47 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\bar.txt"); | 48 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\bar.txt"); |
48 shouldBe("changeDispatched", "true"); | 49 shouldBeTrue("changeDispatched"); |
49 | 50 |
50 dragFilesOntoInput(multipleFilesInput, ["bar.txt"]); | 51 dragFilesOntoFileInput(multipleFilesInput, ["bar.txt"]); |
51 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\bar.txt"); | 52 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\bar.txt"); |
52 shouldBe("changeDispatched", "false"); | 53 shouldBeFalse("changeDispatched"); |
53 | 54 |
54 dragFilesOntoInput(multipleFilesInput, ["foo.txt"]); | 55 dragFilesOntoFileInput(multipleFilesInput, ["foo.txt"]); |
55 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); | 56 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); |
56 shouldBe("changeDispatched", "true"); | 57 shouldBeTrue("changeDispatched"); |
57 | 58 |
58 debug("Test that the 'change' event is triggered on a multiple file form whe
n selected files are changed:"); | 59 debug("Test that the 'change' event is triggered on a multiple file form whe
n selected files are changed:"); |
59 dragFilesOntoInput(multipleFilesInput, ["foo.txt", "bar.txt"]); | 60 dragFilesOntoFileInput(multipleFilesInput, ["foo.txt", "bar.txt"]); |
60 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); | 61 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); |
61 shouldBe("changeDispatched", "true"); | 62 shouldBeTrue("changeDispatched"); |
62 | 63 |
63 dragFilesOntoInput(multipleFilesInput, ["foo.txt"]); | 64 dragFilesOntoFileInput(multipleFilesInput, ["foo.txt"]); |
64 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); | 65 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); |
65 shouldBe("changeDispatched", "true"); | 66 shouldBeTrue("changeDispatched"); |
66 | 67 |
67 dragFilesOntoInput(multipleFilesInput, ["foo.txt", "bar.txt"]); | 68 dragFilesOntoFileInput(multipleFilesInput, ["foo.txt", "bar.txt"]); |
68 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); | 69 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); |
69 shouldBe("changeDispatched", "true"); | 70 shouldBeTrue("changeDispatched"); |
70 | 71 |
71 dragFilesOntoInput(multipleFilesInput, ["foo.txt", "bar.txt", "baz.txt"]); | 72 dragFilesOntoFileInput(multipleFilesInput, ["foo.txt", "bar.txt", "baz.txt"]
); |
72 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); | 73 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); |
73 shouldBe("changeDispatched", "true"); | 74 shouldBeTrue("changeDispatched"); |
74 | 75 |
75 dragFilesOntoInput(multipleFilesInput, ["foo.txt", "bar.txt"]); | 76 dragFilesOntoFileInput(multipleFilesInput, ["foo.txt", "bar.txt"]); |
76 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); | 77 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\foo.txt"); |
77 shouldBe("changeDispatched", "true"); | 78 shouldBeTrue("changeDispatched"); |
78 | 79 |
79 dragFilesOntoInput(multipleFilesInput, ["bar.txt", "foo.txt"]); | 80 dragFilesOntoFileInput(multipleFilesInput, ["bar.txt", "foo.txt"]); |
80 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\bar.txt"); | 81 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\bar.txt"); |
81 shouldBe("changeDispatched", "true"); | 82 shouldBeTrue("changeDispatched"); |
82 | 83 |
83 dragFilesOntoInput(multipleFilesInput, ["bar.txt", "foo.txt"]); | 84 dragFilesOntoFileInput(multipleFilesInput, ["bar.txt", "foo.txt"]); |
84 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\bar.txt"); | 85 shouldBeEqualToString("multipleFilesInput.value", "C:\\fakepath\\bar.txt"); |
85 shouldBe("changeDispatched", "false"); | 86 shouldBeFalse("changeDispatched"); |
86 } | 87 } |
87 | 88 |
88 function singleFileSelected() { | 89 function singleFileSelected() { |
89 changeDispatched = true; | 90 changeDispatched = true; |
90 } | 91 } |
91 | 92 |
92 function multipleFilesSelected() { | 93 function multipleFilesSelected() { |
93 changeDispatched = true; | 94 changeDispatched = true; |
94 } | 95 } |
95 | 96 |
96 function moveMouseToCenterOfElement(element) { | 97 function dragFilesOntoFileInput(input, files) { |
97 var centerX = element.offsetLeft + element.offsetWidth / 2; | |
98 var centerY = element.offsetTop + element.offsetHeight / 2; | |
99 eventSender.mouseMoveTo(centerX, centerY); | |
100 } | |
101 | |
102 function dragFilesOntoInput(input, files) { | |
103 changeDispatched = false; | 98 changeDispatched = false; |
104 eventSender.beginDragWithFiles(files); | 99 dragFilesOntoInput(input, files); |
105 moveMouseToCenterOfElement(input); | |
106 eventSender.mouseUp(); | |
107 } | 100 } |
108 | 101 |
109 function dragFilesOntoButtonInsideFileInput(input, files) { | 102 function dragFilesOntoButtonInsideFileInput(input, files) { |
110 changeDispatched = false; | 103 changeDispatched = false; |
111 eventSender.beginDragWithFiles(files); | 104 eventSender.beginDragWithFiles(files); |
112 eventSender.mouseMoveTo(input.offsetLeft + 10, input.offsetTop + input.offse
tHeight / 2); | 105 eventSender.mouseMoveTo(input.offsetLeft + 10, input.offsetTop + input.offse
tHeight / 2); |
113 eventSender.mouseUp(); | 106 eventSender.mouseUp(); |
114 } | 107 } |
115 </script> | 108 </script> |
116 </body> | 109 </body> |
117 </html> | 110 </html> |
OLD | NEW |