summaryrefslogtreecommitdiffstats
path: root/editor/libeditor/tests/test_nested_editor.html
diff options
context:
space:
mode:
Diffstat (limited to 'editor/libeditor/tests/test_nested_editor.html')
-rw-r--r--editor/libeditor/tests/test_nested_editor.html77
1 files changed, 77 insertions, 0 deletions
diff --git a/editor/libeditor/tests/test_nested_editor.html b/editor/libeditor/tests/test_nested_editor.html
new file mode 100644
index 0000000000..aeb0c115c1
--- /dev/null
+++ b/editor/libeditor/tests/test_nested_editor.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title> Test for nested contenteditable elements </title>
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script src="/tests/SimpleTest/EventUtils.js"></script>
+ <link rel="stylesheet" href="/tests/SimpleTest/test.css">
+</head>
+<body>
+ <template id="focus-iframe-contenteditable-in-div">
+ <div contenteditable>
+ <iframe srcdoc="<div id='focusme' contenteditable></div>"></iframe>
+ </div>
+ </template>
+
+ <template id="focus-contenteditable-parent-along-with-iframe">
+ <div id='focusme' contenteditable></div>
+ <iframe srcdoc="<div contenteditable></div>"></iframe>
+ </template>
+
+ <template id="focus-iframe-textarea-in-div">
+ <div contenteditable>
+ <iframe srcdoc="<textarea id='focusme'></textarea>"></iframe>
+ </div>
+ </template>
+
+ <template id="focus-textarea-parent-along-with-iframe">
+ <textarea id='focusme' contenteditable></textarea>
+ <iframe srcdoc="<div contenteditable></div>"></iframe>
+ </template>
+<script>
+"use strict";
+
+async function runTest() {
+ function findFocusme() {
+ return new Promise(r => {
+ let focusInParent = document.getElementById("focusme");
+ if (focusInParent) {
+ r(focusInParent);
+ return;
+ }
+ document.querySelector("iframe").addEventListener("load", function() {
+ return r(document.querySelector("iframe").contentDocument.getElementById("focusme"));
+ });
+ });
+ }
+
+ const focusme = await findFocusme();
+
+ focusme.focus();
+ synthesizeKey("abc");
+
+ if (focusme.nodeName === "TEXTAREA") {
+ is(focusme.value, "abc");
+ } else {
+ is(focusme.innerHTML, "abc");
+ }
+}
+
+SimpleTest.waitForExplicitFinish();
+
+SimpleTest.waitForFocus(async () => {
+ for (const template of document.querySelectorAll("template")) {
+ const content = template.content.cloneNode(true);
+ document.body.appendChild(content);
+
+ await runTest();
+
+ document.body.innerHTML = "";
+ }
+
+ SimpleTest.finish();
+});
+
+</script>
+</body>
+</html>