Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / editing / pasteboard / script-tests / dataTransfer-setData-getData.js
blobac7eaeca0df85483d7a0aa44ec1a770251960313
1 description("Tests correct behavior of event.dataTransfer.setData/getData for 'URL', 'text/uri-list' and 'text/plain'");
3 // Important that we put these at the top of the doc so that logging does not cause it to go out of view (and be undragable)
4 var dragMe = document.createElement("div");
5 dragMe.innerHTML = "<span id='dragme'>Drag me</span>";
6 document.body.insertBefore(dragMe, document.body.firstChild);
7 var dragTarget = document.createElement("div");
8 dragTarget.innerHTML = "Drag here"
9 dragTarget.style.backgroundColor = "blue";
10 dragTarget.style.width = "100px";
11 dragTarget.style.height = "100px";
12 document.body.insertBefore(dragTarget, dragMe);
14 var setDataType;
15 var setDataValue;
16 var getDataType;
17 var getDataValue;
18 var getDataResult;
19 var getDataResultType;
20 var getDataLines;
22 dragMe.addEventListener("dragstart", function() {
23 event.dataTransfer.setData(setDataType, setDataValue);
24 }, false);
26 dragTarget.addEventListener("dragenter", function() {
27 event.dataTransfer.dropEffect = "copy";
28 event.preventDefault();
29 }, false);
31 dragTarget.addEventListener("dragover", function() {
32 event.dataTransfer.dropEffect = "copy";
33 event.preventDefault();
34 }, false);
36 dragTarget.addEventListener("drop", function() {
37 doDrop();
38 event.preventDefault();
39 }, false);
41 function moveMouseToCenterOfElement(element)
43 var centerX = element.offsetLeft + element.offsetWidth / 2;
44 var centerY = element.offsetTop + element.offsetHeight / 2;
45 eventSender.mouseMoveTo(centerX, centerY);
48 function dragOntoDragTarget() {
49 var e = document.getElementById("dragme");
50 window.getSelection().setBaseAndExtent(e, 0, e, 4);
51 x = e.offsetLeft + 10;
52 y = e.offsetTop + e.offsetHeight / 2;
53 eventSender.mouseMoveTo(x, y);
54 eventSender.mouseDown();
55 eventSender.leapForward(400);
56 moveMouseToCenterOfElement(dragTarget);
57 eventSender.mouseUp();
60 function doDrop() {
61 getDataResult = event.dataTransfer.getData(getDataType);
62 getDataResultType = typeof getDataResult;
63 shouldBeEqualToString("getDataResultType", typeof getDataValue);
64 shouldBeEqualToString("getDataResult", getDataValue);
67 function test(setType, setValues, getType, getValues) {
68 setDataType = setType;
69 setDataValue = setValues;
70 getDataType = getType;
71 getDataValue = getValues;
72 dragOntoDragTarget();
75 function runTest()
77 debug("--- Test set/get 'URL':");
78 test("URL", "http://test.com",
79 "URL", "http://test.com/");
81 debug("--- Test set/get 'URL' with multiple URLs:");
82 test("URL", "http://test.com\r\nhttp://check.com",
83 "URL", "http://test.com/");
85 debug("--- Test set/get 'text/uri-list':");
86 test("text/uri-list", "http://test.com\r\nhttp://check.com",
87 "text/uri-list", "http://test.com\r\nhttp://check.com");
89 debug("--- Test set/get 'text/uri-list' using '\\n':");
90 test("text/uri-list", "http://test.com\nhttp://check.com",
91 "text/uri-list", "http://test.com\nhttp://check.com");
93 debug("--- Test set 'text/uri-list', get 'URL':");
94 test("text/uri-list", "http://test.com\r\nhttp://check.com",
95 "URL", "http://test.com/");
97 debug("--- Test set 'URL', get 'text/uri-list':");
98 test("URL", "http://test.com\r\nhttp://check.com",
99 "text/uri-list", "http://test.com\r\nhttp://check.com");
101 debug("--- Test set 'text/uri-list', get 'URL', using only '\\n':");
102 test("text/uri-list", "http://test.com\nhttp://check.com",
103 "URL", "http://test.com/");
105 debug("--- Test set/get 'text/uri-list' with comments:");
106 test("text/uri-list", "# comment\r\nhttp://test.com\r\nhttp://check.com",
107 "text/uri-list", "# comment\r\nhttp://test.com\r\nhttp://check.com");
109 debug("--- Test set 'text/uri-list', get 'URL' with comments:");
110 test("text/uri-list", "# comment\r\nhttp://test.com\r\nhttp://check.com",
111 "URL", "http://test.com/");
113 debug("--- Test set 'text/uri-list', get 'URL' with only comments:");
114 test("text/uri-list", "# comment\r\n# comment 2\r\n# comment 3",
115 "URL", "");
117 debug("--- Test set/get 'text/plain':");
118 test("text/plain", "Lorem ipsum dolor sit amet.",
119 "text/plain", "Lorem ipsum dolor sit amet.");
121 debug("--- Test set 'text/plain', get 'text':");
122 test("text/plain", "Lorem ipsum dolor sit amet.",
123 "text", "Lorem ipsum dolor sit amet.");
125 debug("--- Test set 'text', get 'text/plain':");
126 test("text", "Lorem ipsum dolor sit amet.",
127 "text/plain", "Lorem ipsum dolor sit amet.");
129 debug("--- Test set/get 'text':");
130 test("text", "Lorem ipsum dolor sit amet.",
131 "text", "Lorem ipsum dolor sit amet.");
134 if (window.eventSender) {
135 runTest();
136 // Clean up after ourselves
137 dragMe.parentNode.removeChild(dragMe);
138 dragTarget.parentNode.removeChild(dragTarget);
139 } else {
140 testFailed("This test is not interactive, please run using DumpRenderTree");
143 var successfullyParsed = true;