Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Side by Side Diff: LayoutTests/fast/events/drag-dataTransferItemList-file-handling.html

Issue 22837006: Have DataTransferItemList.add() methods return the added item (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698