summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/editing/other/selectall-in-editinghost.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/editing/other/selectall-in-editinghost.html')
-rw-r--r--testing/web-platform/tests/editing/other/selectall-in-editinghost.html125
1 files changed, 125 insertions, 0 deletions
diff --git a/testing/web-platform/tests/editing/other/selectall-in-editinghost.html b/testing/web-platform/tests/editing/other/selectall-in-editinghost.html
new file mode 100644
index 0000000000..680817a771
--- /dev/null
+++ b/testing/web-platform/tests/editing/other/selectall-in-editinghost.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset=utf-8>
+<title>Select All in focused editor</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+"use strict";
+
+addEventListener("DOMContentLoaded", () => {
+ const editingHost = document.querySelector("div[contenteditable]");
+ test(() => {
+ editingHost.focus();
+ document.execCommand("selectAll");
+ assert_false(
+ getSelection().isCollapsed,
+ 'Selection should not be collapsed after calling document.execCommand("selectAll")'
+ );
+ const rangeText = getSelection().toString();
+ assert_false(
+ rangeText.includes("preceding text"),
+ "Selection should not contain the preceding text of the editing host"
+ );
+ assert_true(
+ rangeText.includes("editable text"),
+ "Selection should contain the editable text in the editing host"
+ );
+ assert_false(
+ rangeText.includes("following text"),
+ "Selection should not contain the following text of the editing host"
+ );
+ getSelection().removeAllRanges();
+ }, "execCommand('selectAll') should select all content in the editing host");
+
+ test(() => {
+ editingHost.focus();
+ getSelection().removeAllRanges();
+ document.execCommand("selectAll");
+ assert_false(
+ getSelection().isCollapsed,
+ 'Selection should not be collapsed after calling document.execCommand("selectAll")'
+ );
+ const rangeText = getSelection().toString();
+ assert_false(
+ rangeText.includes("preceding text"),
+ "Selection should not contain the preceding text of the editing host"
+ );
+ assert_true(
+ rangeText.includes("editable text"),
+ "Selection should contain the editable text in the editing host"
+ );
+ assert_false(
+ rangeText.includes("following text"),
+ "Selection should not contain the following text of the editing host"
+ );
+ getSelection().removeAllRanges();
+ }, "execCommand('selectAll') should select all content in the editing host when it has focus but no selection range");
+
+ test(() => {
+ editingHost.focus();
+ editingHost.innerHTML = "preceding editable text<input value='input value'>following editable text";
+ getSelection().collapse(editingHost.querySelector("input"), 0);
+ document.execCommand("selectAll");
+ assert_false(
+ getSelection().isCollapsed,
+ 'Selection should not be collapsed after calling document.execCommand("selectAll")'
+ );
+ const rangeText = getSelection().toString();
+ assert_false(
+ rangeText.includes("preceding text"),
+ "Selection should not contain the preceding text of the editing host"
+ );
+ assert_true(
+ rangeText.includes("preceding editable text"),
+ "Selection should contain the preceding editable text of <input> in the editing host"
+ );
+ assert_true(
+ rangeText.includes("following editable text"),
+ "Selection should contain the following editable text of <input> in the editing host"
+ );
+ assert_false(
+ rangeText.includes("following text"),
+ "Selection should not contain the following text of the editing host"
+ );
+ getSelection().removeAllRanges();
+ }, "execCommand('selectAll') should select all content in the editing host when selection collapsed in the <input>");
+
+ test(() => {
+ editingHost.focus();
+ editingHost.innerHTML = "preceding editable text<textarea>textarea value</textarea>following editable text";
+ getSelection().collapse(editingHost.querySelector("textarea"), 0);
+ document.execCommand("selectAll");
+ assert_false(
+ getSelection().isCollapsed,
+ 'Selection should not be collapsed after calling document.execCommand("selectAll")'
+ );
+ const rangeText = getSelection().toString();
+ assert_false(
+ rangeText.includes("preceding text"),
+ "Selection should not contain the preceding text of the editing host"
+ );
+ assert_true(
+ rangeText.includes("preceding editable text"),
+ "Selection should contain the preceding editable text of <textarea> in the editing host"
+ );
+ assert_true(
+ rangeText.includes("following editable text"),
+ "Selection should contain the following editable text of <textarea> in the editing host"
+ );
+ assert_false(
+ rangeText.includes("following text"),
+ "Selection should not contain the following text of the editing host"
+ );
+ getSelection().removeAllRanges();
+ }, "execCommand('selectAll') should select all content in the editing host when selection collapsed in the <textarea>");
+});
+</script>
+</head>
+<body>
+<p>preceding text</p>
+<div contenteditable>editable text</div>
+<p>following text</p>
+</body>
+</html>