Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / editing / pasteboard / script-tests / drop-text-events-sideeffect.js
blobd94ac76b76a1d28a00b9f4f221e9f2845dff679b
1 description('Ensure safety on side-effect on drop-initiated TextEvent.');
3 function toStringLiteral(str)
5 return "'" + str + "'";
8 var testSourceRoot = document.createElement("div");
9 document.body.appendChild(testSourceRoot);
11 var testTargetRoot = document.createElement("div");
12 testTargetRoot.innerHTML += "<div><span id='targetEditable' contentEditable>initialValue</span></div>";
13 testTargetRoot.innerHTML += "<iframe id='targetIFrame' src='data:text/html;charset=utf-8," + encodeURI("<html></html>") + "'></iframe>";
14 document.body.appendChild(testTargetRoot);
16 testTargetEditable = document.getElementById("targetEditable");
17 testTargetIFrame = document.getElementById("targetIFrame");
18 testTargetIFrameDocument = testTargetIFrame.contentDocument;
19 testTargetIFrameDocument.body.innerHTML = "initialBody";
20 testTargetIFrameDocument.designMode = "on";
22 function handlerRemovingTarget(event)
24 event.target.parentNode.removeChild(event.target);
27 function handlerRemovingIFrame(event)
29 testTargetIFrame.parentNode.removeChild(testTargetIFrame);
32 function dragFrom(element)
34 var x = element.offsetLeft + element.offsetWidth / 2;
35 var y = element.offsetTop + element.offsetHeight / 2;
36 eventSender.mouseMoveTo(x, y);
37 eventSender.mouseDown();
39 // Makes drag happen
40 var meaninglessDelta = 10;
41 eventSender.leapForward(500);
42 eventSender.mouseMoveTo(x + meaninglessDelta , y + meaninglessDelta);
45 function dropTo(element)
47 var x = element.offsetLeft + element.offsetWidth / 2;
48 var y = element.offsetTop + element.offsetHeight / 2;
50 eventSender.mouseMoveTo(x, y);
51 eventSender.mouseUp();
54 function dragPlainText()
56 var selection = window.getSelection();
58 testSourceRoot.innerHTML = "<input type='text' value='PlainHello' id='src' />";
59 var input = document.getElementById("src");
60 input.focus();
61 selection.modify("extend", "forward", "line");
62 dragFrom(input);
65 function dropToTargetEditable()
67 dropTo(testTargetEditable);
70 function dropToTargetIFrame()
72 dropTo(testTargetIFrame);
75 testTargetEditable.addEventListener("textInput", handlerRemovingTarget);
76 dragPlainText();
77 dropToTargetEditable();
78 // detached node shouldn't get dropped value
79 shouldBe("testTargetEditable.innerHTML", toStringLiteral("initialValue"));
81 testTargetIFrameDocument.body.addEventListener("textInput", handlerRemovingIFrame);
82 dragPlainText();
83 dropToTargetIFrame();
84 // detached frame shouldn't get dropped value
85 shouldBe("testTargetIFrameDocument.body.innerHTML", toStringLiteral("initialBody"));
87 // Hides dataset to make dump clean.
88 testTargetRoot.style.display = "none";
89 testSourceRoot.style.display = "none";
91 var successfullyParsed = true;