blob: 0b3e111627eb0120cf683f073d56426aa878801b [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width">
<script src="../../../resources/js-test.js"></script>
<script src="../../../resources/ui-helper.js"></script>
<style>
#test {
border: 1px solid black;
height: 500px;
width: 500px;
}
.hidden {
display: none;
}
</style>
</head>
<body>
<p id="description"></p>
<div id="test" contenteditable="true">This text should be italicized.</div>
<div id="console"></div>
<script>
window.jsTestIsAsync = true;
let testElement;
let event;
let ignoredFirstKeyDownEvent = false;
function shouldIgnoreKeyDownEvent(event)
{
// When performing the test manually a person is not fast enough to press Command + I simultaneously.
// We receive a key down for Command followed by a key down for Command + I. So, we ignore the first
// event to normalize the test result.
if (ignoredFirstKeyDownEvent)
return false;
ignoredFirstKeyDownEvent = true;
console.assert(event.key == "Meta");
return true;
}
function handleKeyDownEvent(event)
{
if (shouldIgnoreKeyDownEvent(event))
return;
testElement.removeEventListener("keydown", handleKeyDownEvent, true);
shouldBeEqualToString("window.event.key", "i");
shouldBeTrue("window.event.metaKey");
// Remove the test element to make the output pretty.
document.body.removeChild(document.getElementById("test"));
finishJSTest();
}
function runTest()
{
if (!window.testRunner)
return;
function handleFocus() {
window.getSelection().selectAllChildren(testElement);
UIHelper.keyDown("i", ["metaKey"]);
}
testElement.addEventListener("focus", handleFocus, { once: true });
UIHelper.activateElement(testElement);
}
description("Tests that pressing Command + I in a rich editing field dispatches a key down event. To run this test by hand, select all the text below and press Command + I.");
testElement = document.getElementById("test");
testElement.addEventListener("keydown", handleKeyDownEvent, true);
runTest();
</script>
</body>
</html>