diff options
Diffstat (limited to 'widget/tests/test_secure_input.html')
-rw-r--r-- | widget/tests/test_secure_input.html | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/widget/tests/test_secure_input.html b/widget/tests/test_secure_input.html new file mode 100644 index 0000000000..846465b4c2 --- /dev/null +++ b/widget/tests/test_secure_input.html @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<html> +<head> + <title>Test for secure input mode</title> + <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> + <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> + <script src="chrome://mochikit/content/tests/SimpleTest/NativeKeyCodes.js"></script> + <link rel="stylesheet" type="text/css" + href="chrome://mochikit/content/tests/SimpleTest/test.css" /> +</head> +<body> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +</pre> + +<p> + <input id="input_text" type="text"><br> + <input id="input_password" type="password"><br> + <input id="input_text_readonly" type="text" readonly><br> + <input id="input_text_ime_mode_disabled" type="text" style="ime-mode: disabled;"><br> + <input id="input_change" type="text"><br> + <textarea id="textarea"></textarea><br> +</p> +<div id="contenteditable" contenteditable style="min-height: 3em;"></div> + +<script class="testbody" type="application/javascript"> + + SimpleTest.waitForExplicitFinish(); + + function sendAKeyEvent() { + synthesizeNativeKey(KEYBOARD_LAYOUT_EN_US, MAC_VK_ANSI_A, {}, "a", "a"); + } + + function isFocused(aElement) { + return (SpecialPowers.focusManager.focusedElement == aElement); + } + + function runTest() { + sendAKeyEvent(); + ok(true, "Not crashed: input on the document"); + $("input_text").focus(); + sendAKeyEvent(); + ok(true, "Not crashed: input on <input type=\"text\">"); + $("input_password").focus(); + sendAKeyEvent(); + ok(true, "Not crashed: input on <input type=\"password\">"); + $("input_password").blur(); + sendAKeyEvent(); + ok(true, "Not crashed: input on the document after blur() of <input type=\"password\">"); + $("input_password").focus(); + $("input_text_readonly").focus(); + sendAKeyEvent(); + ok(true, "Not crashed: input on <input type=\"text\" readonly>"); + $("input_password").focus(); + $("input_text_ime_mode_disabled").focus(); + sendAKeyEvent(); + ok(true, "Not crashed: input on <input type=\"text\" style=\"ime-mode: disabled;\">"); + $("input_password").focus(); + $("textarea").focus(); + sendAKeyEvent(); + ok(true, "Not crashed: input on <textarea>"); + $("input_password").focus(); + $("contenteditable").focus(); + sendAKeyEvent(); + ok(true, "Not crashed: input on <div contenteditable>"); + + $("input_change").focus(); + $("input_change").type = "password"; + sendAKeyEvent(); + ok(true, "Not crashed: input on <input type=\"password\"> changed from type=\"text\""); + $("input_change").type = "text"; + sendAKeyEvent(); + ok(true, "Not crashed: input on <input type=\"text\"> changed from type=\"password\""); + + var otherWindow = + window.browsingContext.topChromeWindow.open("file_secure_input.html", + "_blank", "chrome,width=100,height=100"); + ok(otherWindow, "failed to open other window"); + if (!otherWindow) { + SimpleTest.finish(); + return; + } + + $("input_text").focus(); + otherWindow.focus(); + + SimpleTest.waitForFocus(function() { + window.focus(); + sendAKeyEvent(); + ok(isFocused($("input_text")), "focused element isn't <input type=\"text\">"); + ok(true, "Not crashed: input on <input type=\"text\"> after the other document has focus"); + + $("input_password").focus(); + otherWindow.focus(); + window.focus(); + sendAKeyEvent(); + ok(isFocused($("input_password")), "focused element isn't <input type=\"password\">"); + ok(true, "Not crashed: input on <input type=\"password\"> after the other document has focus"); + + $("input_text").focus(); + otherWindow.focus(); + otherWindow.document.getElementById("text").focus(); + window.focus(); + sendAKeyEvent(); + ok(isFocused($("input_text")), "focused element isn't <input type=\"text\">"); + ok(true, "Not crashed: input on <input type=\"text\"> after the other document's <input type=\"text\"> has focus"); + + $("input_password").focus(); + otherWindow.focus(); + otherWindow.document.getElementById("text").focus(); + window.focus(); + sendAKeyEvent(); + ok(isFocused($("input_password")), "focused element isn't <input type=\"password\">"); + ok(true, "Not crashed: input on <input type=\"password\"> after the other document's <input type=\"text\"> has focus"); + + $("input_text").focus(); + otherWindow.focus(); + otherWindow.document.getElementById("password").focus(); + window.focus(); + sendAKeyEvent(); + ok(isFocused($("input_text")), "focused element isn't <input type=\"text\">"); + ok(true, "Not crashed: input on <input type=\"text\"> after the other document's <input type=\"password\"> has focus"); + + $("input_password").focus(); + otherWindow.focus(); + otherWindow.document.getElementById("password").focus(); + window.focus(); + sendAKeyEvent(); + ok(isFocused($("input_password")), "focused element isn't <input type=\"password\">"); + ok(true, "Not crashed: input on <input type=\"password\"> after the other document's <input type=\"password\"> has focus"); + + SimpleTest.finish(); + }, otherWindow); + } + + SimpleTest.waitForFocus(runTest); +</script> +</body> +</html> |