74 lines
1.9 KiB
HTML
74 lines
1.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
description('Test that ensure textInput events should not fired when preceding key events are cancelled');
|
|
|
|
var targetRoot = document.createElement("div");
|
|
targetRoot.innerHTML += "<input type='text' id='targetInput' />";
|
|
targetRoot.innerHTML += "<textarea id='targetTextarea'></textarea>";
|
|
targetRoot.innerHTML += "<div id='targetEditable' contentEditable></div>";
|
|
document.body.appendChild(targetRoot);
|
|
|
|
var targetInput = document.getElementById("targetInput");
|
|
var targetTextarea = document.getElementById("targetTextarea");
|
|
var targetEditable = document.getElementById("targetEditable");
|
|
|
|
var receivedEventTarget = null;
|
|
|
|
function handleTextInput(evt)
|
|
{
|
|
receivedEventTarget = evt.target;
|
|
}
|
|
|
|
var shouldCancel = false;
|
|
|
|
function mayCancel(evt)
|
|
{
|
|
if (shouldCancel)
|
|
evt.preventDefault();
|
|
}
|
|
|
|
targetInput.addEventListener("textInput", handleTextInput);
|
|
targetInput.addEventListener("keydown", mayCancel);
|
|
targetTextarea.addEventListener("textInput", handleTextInput);
|
|
targetTextarea.addEventListener("keydown", mayCancel);
|
|
targetEditable.addEventListener("textInput", handleTextInput);
|
|
targetEditable.addEventListener("keydown", mayCancel);
|
|
|
|
function setup(tocancel)
|
|
{
|
|
receivedEventTarget = null;
|
|
shouldCancel = tocancel;
|
|
}
|
|
|
|
function test(targetNode)
|
|
{
|
|
window.targetNode = targetNode;
|
|
setup(false);
|
|
eventSender.keyDown("a");
|
|
shouldBe("window.targetNode", "receivedEventTarget");
|
|
setup(true);
|
|
eventSender.keyDown("a");
|
|
shouldBe("null", "receivedEventTarget");
|
|
}
|
|
|
|
targetInput.focus();
|
|
test(targetInput);
|
|
|
|
targetTextarea.focus();
|
|
test(targetTextarea);
|
|
|
|
window.getSelection().setBaseAndExtent(targetEditable, 0, targetEditable, 0);
|
|
test(targetEditable);
|
|
|
|
targetRoot.style.display = "none";
|
|
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|