summaryrefslogtreecommitdiffstats
path: root/editor/libeditor/tests/test_bug1151186.html
diff options
context:
space:
mode:
Diffstat (limited to 'editor/libeditor/tests/test_bug1151186.html')
-rw-r--r--editor/libeditor/tests/test_bug1151186.html69
1 files changed, 69 insertions, 0 deletions
diff --git a/editor/libeditor/tests/test_bug1151186.html b/editor/libeditor/tests/test_bug1151186.html
new file mode 100644
index 0000000000..049287a135
--- /dev/null
+++ b/editor/libeditor/tests/test_bug1151186.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1151186
+-->
+<head>
+ <meta charset="utf-8">
+ <title>Test for Bug 1151186</title>
+ <link rel=stylesheet href="/tests/SimpleTest/test.css">
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script>
+ /** Test for Bug 1151186 **/
+ SimpleTest.waitForExplicitFinish();
+
+ // In this test, we want to check the IME enabled state in the `contenteditable`
+ // editor which is focused by `focus` event listener of the document.
+ // However, according to the random oranges filed as bug 1176038 and bug 1611360,
+ // `focus` event are sometimes not fired on the document and the reason is,
+ // the document sometimes not focused automatically. Therefore, this test
+ // will set focus the document when `focus` event is not fired until next
+ // macro task.
+ var focusEventFired = false;
+ function onFocus(event) {
+ is(event.target.nodeName, "#document", "focus event should be fired on the document node");
+ if (event.target != document) {
+ return;
+ }
+ focusEventFired = true;
+ document.getElementById("editor").focus();
+ SimpleTest.executeSoon(runTests);
+ }
+ document.addEventListener("focus", onFocus, {once: true});
+
+ // Register next macro task to check whether `focus` event of the document
+ // is fired as expected. If not, let's focus our window manually. Then,
+ // the `focus` event listener starts the test anyway.
+ setTimeout(() => {
+ if (focusEventFired) {
+ return; // We've gotten `focus` event as expected.
+ }
+ ok(!document.hasFocus(), "The document should not have focus yet");
+ info("Setting focus to the window forcibly...");
+ window.focus();
+ }, 0);
+
+ function runTests() {
+ let description = focusEventFired ?
+ "document got focused normally" :
+ "document got focused forcibly";
+ is(document.activeElement, document.getElementById("editor"),
+ `The div element should be focused (${description})`);
+ var utils = SpecialPowers.getDOMWindowUtils(window);
+ is(utils.IMEStatus, utils.IME_STATUS_ENABLED,
+ `IME should be enabled (${description})`);
+ SimpleTest.finish();
+ }
+ </script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1151186">Mozilla Bug 1151186</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+
+</div>
+<div id="editor" contenteditable="true"></div>
+<pre id="test">
+</pre>
+</body>
+</html>