summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/editing/other
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/editing/other')
-rw-r--r--testing/web-platform/tests/editing/other/delete-in-inline-editing-host-under-shadow-root.html61
-rw-r--r--testing/web-platform/tests/editing/other/delete-in-shadow-hosted-in-body.html81
-rw-r--r--testing/web-platform/tests/editing/other/paste-in-list-with-inline-style.tentative.html30
3 files changed, 172 insertions, 0 deletions
diff --git a/testing/web-platform/tests/editing/other/delete-in-inline-editing-host-under-shadow-root.html b/testing/web-platform/tests/editing/other/delete-in-inline-editing-host-under-shadow-root.html
new file mode 100644
index 0000000000..c1a825a645
--- /dev/null
+++ b/testing/web-platform/tests/editing/other/delete-in-inline-editing-host-under-shadow-root.html
@@ -0,0 +1,61 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Backspace/Delete in inline editing host which is a shadow root</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="../include/editor-test-utils.js"></script>
+<script>
+"use strict";
+
+addEventListener("load", () => {
+ const shadowRoot = document.body.firstChild.attachShadow({mode: "open"});
+ const editingHost = document.createElement("span");
+ editingHost.setAttribute("contenteditable", "");
+ shadowRoot.appendChild(editingHost);
+ const utils = new EditorTestUtils(editingHost);
+
+ promise_test(async t => {
+ utils.setupEditingHost("ab[]c");
+ await utils.sendBackspaceKey();
+ assert_equals(
+ editingHost.textContent,
+ "ac"
+ );
+ }, "Backspace at <span contenteditable>ab[]c</span>");
+
+ promise_test(async t => {
+ utils.setupEditingHost("a[]bc");
+ await utils.sendDeleteKey();
+ assert_equals(
+ editingHost.textContent,
+ "ac"
+ );
+ }, "Delete at <span contenteditable>a[]bc</span>");
+
+ promise_test(async t => {
+ utils.setupEditingHost("a[b]c");
+ await utils.sendBackspaceKey();
+ assert_equals(
+ editingHost.textContent,
+ "ac"
+ );
+ }, "Backspace at <span contenteditable>a[b]c</span>");
+
+ promise_test(async t => {
+ utils.setupEditingHost("a[b]c");
+ await utils.sendDeleteKey();
+ assert_equals(
+ editingHost.textContent,
+ "ac"
+ );
+ }, "Delete at <span contenteditable>a[b]c</span>");
+}, {once: true});
+</script>
+</head>
+<body><div></div></body>
+</html>
diff --git a/testing/web-platform/tests/editing/other/delete-in-shadow-hosted-in-body.html b/testing/web-platform/tests/editing/other/delete-in-shadow-hosted-in-body.html
new file mode 100644
index 0000000000..4b02719ea0
--- /dev/null
+++ b/testing/web-platform/tests/editing/other/delete-in-shadow-hosted-in-body.html
@@ -0,0 +1,81 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Delete editor in a shadow</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="../include/editor-test-utils.js"></script>
+<script>
+"use strict";
+
+addEventListener("load", () => {
+ const shadowRoot = document.body.attachShadow({mode: "open"});
+ for (const tag of ["input", "textarea"]) {
+ promise_test(async t => {
+ const textControl = document.createElement(tag);
+ textControl.value = "text";
+ shadowRoot.appendChild(textControl);
+ textControl.focus();
+ textControl.selectionStart = textControl.value.length;
+ const utils = new EditorTestUtils(textControl);
+ await utils.sendBackspaceKey();
+ assert_equals(
+ textControl.value,
+ "tex",
+ `Backspace in ${t.name} should delete character before the caret`
+ );
+ textControl.value = "text";
+ textControl.selectionStart = textControl.selectionEnd = 0;
+ await utils.sendDeleteKey();
+ assert_equals(
+ textControl.value,
+ "ext",
+ `Delete in ${t.name} should delete character after the caret`
+ );
+ textControl.value = "text";
+ textControl.select();
+ await utils.sendBackspaceKey();
+ assert_equals(
+ textControl.value,
+ "",
+ `Backspace after selecting all text in ${t.name} should delete all text`
+ );
+ }, `<${tag}> in shadow of the <body>`);
+ }
+
+ promise_test(async t => {
+ const editingHost = document.createElement("div");
+ editingHost.setAttribute("contenteditable", "");
+ shadowRoot.appendChild(editingHost);
+ const utils = new EditorTestUtils(editingHost);
+ utils.setupEditingHost("text[]");
+ await utils.sendBackspaceKey();
+ assert_equals(
+ editingHost.textContent,
+ "tex",
+ `Backspace in ${t.name} should delete character before the caret`
+ );
+ utils.setupEditingHost("[]text");
+ await utils.sendDeleteKey();
+ assert_equals(
+ editingHost.textContent,
+ "ext",
+ `Delete in ${t.name} should delete character after the caret`
+ );
+ utils.setupEditingHost("[text]");
+ await utils.sendBackspaceKey();
+ assert_equals(
+ editingHost.textContent,
+ "",
+ `Backspace after selecting all text in ${t.name} should delete all text`
+ );
+ }, "<div contenteditable> in shadow of the <body>");
+}, {once: true});
+</script>
+</head>
+<body></body>
+</html>
diff --git a/testing/web-platform/tests/editing/other/paste-in-list-with-inline-style.tentative.html b/testing/web-platform/tests/editing/other/paste-in-list-with-inline-style.tentative.html
new file mode 100644
index 0000000000..97710e805d
--- /dev/null
+++ b/testing/web-platform/tests/editing/other/paste-in-list-with-inline-style.tentative.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>This tests for a bug in ReplaceSelectionCommand where styles are lost during paste.</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<span id="copy" style="font-weight: bold;">copy this</span>
+<div id="paste" contenteditable="true"> <ul><li id="list1"></li></ul></div>
+<div id="log"></div>
+<script>
+"use strict";
+
+setup({explicit_done: true});
+
+function runTests() {
+ test(function() {
+ var selection = window.getSelection();
+ selection.selectAllChildren(document.getElementById('copy'));
+ document.execCommand('Copy');
+ var sample = document.getElementById('list1');
+ selection.collapse(sample);
+ document.execCommand('Paste');
+
+ assert_equals(sample.innerHTML, '<span style="font-weight: 700;">copy this</span>');
+ assert_true(selection.isCollapsed);
+ }, "");
+ done();
+}
+
+window.addEventListener("load", runTests, {once: true});
+</script>