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();
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");
61 selection
.modify("extend", "forward", "line");
65 function dropToTargetEditable()
67 dropTo(testTargetEditable
);
70 function dropToTargetIFrame()
72 dropTo(testTargetIFrame
);
75 testTargetEditable
.addEventListener("textInput", handlerRemovingTarget
);
77 dropToTargetEditable();
78 // detached node shouldn't get dropped value
79 shouldBe("testTargetEditable.innerHTML", toStringLiteral("initialValue"));
81 testTargetIFrameDocument
.body
.addEventListener("textInput", handlerRemovingIFrame
);
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;