Expand r209943 to suppress paste during provisional navigation as well
[WebKit-https.git] / LayoutTests / http / tests / navigation / resources / keyboard-events-test.js
1 function runBeforeTest(window)
2 {
3     var document = window.document;
4
5     document.body.addEventListener("beforecopy", function (e) { e.preventDefault(); });
6     document.body.addEventListener("copy", function (e) {
7         e.clipboardData.setData("text/plain", "d");
8         e.preventDefault();
9     });
10
11     document.execCommand("copy");
12 }
13
14 function runTest(window)
15 {
16     function eventHandler(event)
17     {
18         console.log(event.type + "event dispatched (isTrusted: " + event.isTrusted + ").");
19     }
20
21     window.addEventListener("keydown", eventHandler, true);
22     window.addEventListener("keypress", eventHandler, true);
23     window.addEventListener("keyup", eventHandler, true);
24     window.addEventListener("compositionstart", eventHandler, true);
25     window.addEventListener("compositionupdate", eventHandler, true);
26     window.addEventListener("compositionend", eventHandler, true);
27     window.addEventListener("textInput", eventHandler, true);
28     window.addEventListener("beforeinput", eventHandler, true);
29     window.addEventListener("input", eventHandler, true);
30     window.addEventListener("paste", eventHandler, true);
31
32     var document = window.document;
33
34     console.log("Dispatching untrusted keypress event.");
35     var keyPressEvent = new KeyboardEvent("keypress");
36     document.body.dispatchEvent(keyPressEvent);
37
38     var textInput = document.createElement("input");
39     textInput.type = "text";
40     document.body.appendChild(textInput);
41
42     console.log("Pressing tab.");
43     eventSender.keyDown("\t");
44     console.log("Active element after pressing tab: " + document.activeElement + ".");
45
46     console.log("Pressing \"a\".");
47     eventSender.keyDown("a");
48
49     console.log("Setting marked text to \"b\".");
50     textInputController.setMarkedText("b", 0, 1);
51
52     console.log("Inserting text \"c\".");
53     textInputController.insertText("c");
54
55     console.log("Pasting text \"d\".");
56     document.execCommand("Paste");
57
58     console.log("Input element value after text input events: \"" + textInput.value + "\".");
59 }
60
61 function waitForProvisionalNavigation(completionHandler)
62 {
63     // This exploits the fact that XHRs are cancelled when a location change begins.
64     var xhr = new XMLHttpRequest();
65     xhr.onreadystatechange = function() {
66         if (this.readyState === this.DONE)
67             window.setTimeout(completionHandler, 0);
68     };
69     xhr.open("GET", "resources/never-respond.php");
70     xhr.send();
71
72     window.location = "resources/never-respond.php";
73 }