blob: fe068be502e97f5ea90867f2362edb147e5c92c5 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../editing.js"></script>
<script src="../../resources/dump-as-markup.js"></script>
</head>
<body>
<div contenteditable id="editor"></div>
</body>
<script>
(async () => {
Markup.waitUntilDone();
Markup.description("Verifies that 'InsertNestedUnorderedList' and 'InsertNestedOrderedList' work as expected. This test requires WebKitTestRunner or DumpRenderTree.");
editor.focus();
[..."foo"].map(typeCharacterCommand);
document.execCommand("InsertNestedUnorderedList");
Markup.dump("editor", "After unordered list insertion");
document.execCommand("InsertNestedOrderedList");
[..."bar"].map(typeCharacterCommand);
Markup.dump("editor", "After typing and ordered sublist insertion");
// By default, AppKit on macOS coalesces undo operations that occur within the same runloop. Wait until the next
// runloop before inserting another unordered list to ensure that it gets its own entry in the undo stack.
await new Promise((resolve) => {
if (window.testRunner)
testRunner.runUIScript(`(function() { uiController.uiScriptComplete(); })()`, resolve);
else
setTimeout(resolve, 500);
});
document.execCommand("InsertNestedUnorderedList");
Markup.dump("editor", "After the second unordered list insertion");
undoCommand();
Markup.dump("editor", "After undoing the last list insertion");
redoCommand();
Markup.dump("editor", "After redoing the last list insertion");
execExtendSelectionBackwardByLineCommand();
document.execCommand("InsertNestedUnorderedList");
Markup.dump("editor", "After selecting a range and inserting another unordered list");
document.execCommand("Outdent");
Markup.dump("editor", "After outdenting");
[..."baz"].map(typeCharacterCommand);
document.execCommand("Outdent");
Markup.dump("editor", "After outdenting again");
Markup.notifyDone();
})();
</script>
</html>