Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / editing / pasteboard / script-tests / paste-text-events.js
blobe733fa395b15db0078a9b025e6e6ba9895d12ecf
1 description('This tests that Paste commands fires textInput events.');
3 function toStringLiteral(str)
5 return "'" + str + "'";
8 var willCancelTextInput = false;
9 var textInputCount = 0;
10 var expectedTextEventData = "";
12 function pastingTextInputHandler(evt)
14 shouldBe("event.data", toStringLiteral(expectedTextEventData));
15 textInputCount++;
16 if (willCancelTextInput)
17 evt.preventDefault();
20 var testSourceRoot = document.createElement("div");
21 document.body.appendChild(testSourceRoot);
23 var testTargetRoot = document.createElement("div");
24 testTargetRoot.innerHTML += "<input type='text' id='targetInput' value=''>";
25 testTargetRoot.innerHTML += "<div id='targetEditable' contentEditable>";
26 testTargetRoot.innerHTML += "<textarea id='targetTextarea' ></textarea>";
27 document.body.appendChild(testTargetRoot);
29 testTargetEditable = document.getElementById("targetEditable");
30 testTargetEditable.addEventListener("textInput", pastingTextInputHandler);
31 testTargetInput = document.getElementById("targetInput");
32 testTargetInput.addEventListener("textInput", pastingTextInputHandler);
33 testTargetTextarea = document.getElementById("targetTextarea");
34 testTargetTextarea.addEventListener("textInput", pastingTextInputHandler);
36 var selection = window.getSelection();
38 function copyPlainText()
40 testSourceRoot.innerHTML = "<input type='text' value='PlainHello' id='src' />";
41 var input = document.getElementById("src");
42 input.focus();
44 selection.modify("extend", "forward", "line");
45 document.execCommand("Copy");
48 function copyRichText()
50 testSourceRoot.innerHTML = "<div id='src' contentEditable><b>Rich</b>Hello</div>";
51 var editable = document.getElementById("src");
52 selection.setBaseAndExtent(editable, 0, editable, 0);
53 selection.modify("extend", "forward", "line");
54 document.execCommand("Copy");
57 function pasteToTargetEditable()
59 var editable = testTargetEditable;
60 editable.innerHTML = "";
61 selection.setBaseAndExtent(editable, 0, editable, 0);
62 document.execCommand("Paste");
66 function targetEditableShouldHave(value)
68 shouldBe("testTargetEditable.innerHTML", toStringLiteral(value));
71 function pasteToTargetInput()
73 var input = testTargetInput;
74 input.value = "";
75 input.focus();
76 document.execCommand("Paste");
79 function targetInputShouldHave(value)
81 shouldBe("testTargetInput.value", toStringLiteral(value));
84 function pasteToTargetTextarea()
86 var textarea = testTargetTextarea;
87 textarea.value = "";
88 textarea.focus();
89 document.execCommand("Paste");
92 function targetTextareaShouldHave(value)
94 shouldBe("testTargetTextarea.value", toStringLiteral(value));
97 var proceedingTestCases = [
98 [copyPlainText, pasteToTargetTextarea, targetTextareaShouldHave, "PlainHello", "PlainHello"],
99 [copyPlainText, pasteToTargetInput, targetInputShouldHave, "PlainHello", "PlainHello"],
100 [copyPlainText, pasteToTargetEditable, targetEditableShouldHave, "PlainHello", ""],
101 [copyRichText, pasteToTargetTextarea, targetTextareaShouldHave, "RichHello", "RichHello"],
102 [copyRichText, pasteToTargetInput, targetInputShouldHave, "RichHello", "RichHello"],
103 [copyRichText, pasteToTargetEditable, targetEditableShouldHave, "<b>Rich</b>Hello", ""],
106 var cancelingTestCases = [
107 [copyPlainText, pasteToTargetTextarea, targetTextareaShouldHave, "", "PlainHello"],
108 [copyPlainText, pasteToTargetInput, targetInputShouldHave, "", "PlainHello"],
109 [copyPlainText, pasteToTargetEditable, targetEditableShouldHave, "", ""],
110 [copyRichText, pasteToTargetTextarea, targetTextareaShouldHave, "", "RichHello"],
111 [copyRichText, pasteToTargetInput, targetInputShouldHave, "", "RichHello"],
112 [copyRichText, pasteToTargetEditable, targetEditableShouldHave, "", ""],
115 function runSingleTest(caseData)
117 var copy = caseData[0];
118 var paste = caseData[1];
119 var verifyFunction = caseData[2];
120 var verifyParameter = caseData[3];
122 expectedTextEventData = caseData[4];
124 copy();
125 paste();
126 verifyFunction(verifyParameter);
129 textInputCount = 0;
130 willCancelTextInput = false;
131 for (var i = 0; i < proceedingTestCases.length; ++i)
132 runSingleTest(proceedingTestCases[i]);
133 shouldBe("textInputCount", "proceedingTestCases.length");
135 textInputCount = 0;
136 willCancelTextInput = true;
137 for (var i = 0; i < cancelingTestCases.length; ++i)
138 runSingleTest(cancelingTestCases[i]);
139 shouldBe("textInputCount", "cancelingTestCases.length");
141 // Hides dataset to make dump clean.
142 testTargetRoot.style.display = "none";
143 testSourceRoot.style.display = "none";
145 var successfullyParsed = true;