151 lines
No EOL
4.7 KiB
HTML
151 lines
No EOL
4.7 KiB
HTML
<!doctype html>
|
|
<html contenteditable>
|
|
<head>
|
|
<meta charset=utf-8>
|
|
<title>Test "Select all" and deletion work with <html contenteditable></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>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
"use strict";
|
|
|
|
const kBackspaceKey = "\uE003";
|
|
const kDeleteKey = "\uE017";
|
|
const kMeta = "\uE03d";
|
|
const kControl = "\uE009";
|
|
|
|
async function selectAllWithKey(elementToSelectAll) {
|
|
if (elementToSelectAll.length === 0) {
|
|
throw "element to select all must not be empty";
|
|
}
|
|
getSelection().collapse(elementToSelectAll, 0);
|
|
try {
|
|
await new test_driver.Actions()
|
|
.keyDown(kControl)
|
|
.keyDown("a")
|
|
.keyUp("a")
|
|
.keyUp(kControl)
|
|
.send();
|
|
if (!getSelection().isCollapsed) {
|
|
return;
|
|
}
|
|
await new test_driver.Actions()
|
|
.keyDown(kMeta)
|
|
.keyDown("a")
|
|
.keyUp("a")
|
|
.keyUp(kMeta)
|
|
.send();
|
|
if (!getSelection().isCollapsed) {
|
|
return;
|
|
}
|
|
} catch (ex) {
|
|
throw ex;
|
|
}
|
|
throw "Neither Control-A nor Meta-A does select all contents";
|
|
}
|
|
|
|
function deleteWithBackspaceKey() {
|
|
return new test_driver.Actions()
|
|
.keyDown(kBackspaceKey)
|
|
.keyUp(kBackspaceKey)
|
|
.send();
|
|
}
|
|
|
|
function deleteWithDeleteKey() {
|
|
return new test_driver.Actions()
|
|
.keyDown(kDeleteKey)
|
|
.keyUp(kDeleteKey)
|
|
.send();
|
|
}
|
|
|
|
promise_test(async () => {
|
|
document.body.innerHTML = "abc";
|
|
await selectAllWithKey(document.body);
|
|
await deleteWithBackspaceKey();
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, "Select All, then, Backspace");
|
|
|
|
promise_test(async () => {
|
|
document.body.innerHTML = "abc";
|
|
await selectAllWithKey(document.body);
|
|
await deleteWithDeleteKey();
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, "Select All, then, Delete");
|
|
|
|
promise_test(async () => {
|
|
document.body.innerHTML = "abc";
|
|
document.execCommand("selectall");
|
|
await deleteWithBackspaceKey();
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'execCommand("selectall"), then, Backspace');
|
|
|
|
promise_test(async () => {
|
|
document.body.innerHTML = "abc";
|
|
document.execCommand("selectall");
|
|
await deleteWithDeleteKey();
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'execCommand("selectall"), then, Delete');
|
|
|
|
promise_test(async () => {
|
|
document.body.innerHTML = "abc";
|
|
await selectAllWithKey(document.body);
|
|
document.execCommand("forwarddelete", false, false);
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'Select All, then, execCommand("forwarddelete")');
|
|
|
|
promise_test(async () => {
|
|
document.body.innerHTML = "abc";
|
|
await selectAllWithKey(document.body);
|
|
document.execCommand("delete", false, false);
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'Select All, then, execCommand("delete")');
|
|
|
|
test(() => {
|
|
document.body.innerHTML = "abc";
|
|
document.execCommand("selectall");
|
|
document.execCommand("forwarddelete", false, false);
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'execCommand("selectall"), then, execCommand("forwarddelete")');
|
|
|
|
test(() => {
|
|
document.body.innerHTML = "abc";
|
|
document.execCommand("selectall");
|
|
document.execCommand("delete", false, false);
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'execCommand("selectall"), then, execCommand("delete")');
|
|
|
|
promise_test(async () => {
|
|
document.body.innerHTML = "abc";
|
|
getSelection().selectAllChildren(document.documentElement);
|
|
await deleteWithBackspaceKey();
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'getSelection().selectAllChildren(document.documentElement), then, Backspace');
|
|
|
|
promise_test(async () => {
|
|
document.body.innerHTML = "abc";
|
|
getSelection().selectAllChildren(document.documentElement);
|
|
await deleteWithDeleteKey();
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'getSelection().selectAllChildren(document.documentElement), then, Delete');
|
|
|
|
test(() => {
|
|
document.body.innerHTML = "abc";
|
|
getSelection().selectAllChildren(document.documentElement);
|
|
document.execCommand("forwarddelete", false, false);
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'getSelection().selectAllChildren(document.documentElement), then, execCommand("forwarddelete")');
|
|
|
|
test(() => {
|
|
document.body.innerHTML = "abc";
|
|
getSelection().selectAllChildren(document.documentElement);
|
|
document.execCommand("delete", false, false);
|
|
assert_in_array(document.body.innerHTML, ["", "<br>"]);
|
|
}, 'getSelection().selectAllChildren(document.documentElement), then, execCommand("delete")');
|
|
|
|
</script>
|
|
</body>
|
|
</html> |