diff options
Diffstat (limited to 'testing/web-platform/tests/editing/other')
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> |