| <!DOCTYPE html> <!-- webkit-test-runner [ UndoManagerAPIEnabled=true ] --> |
| <html> |
| <meta charset="utf8"> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| <script src="../../resources/ui-helper.js"></script> |
| <script src="../editing.js"></script> |
| <script> |
| jsTestIsAsync = true; |
| undoName = null; |
| redoName = null; |
| |
| async function runTest() { |
| description("Verifies that setting the label attribute of UndoItem affects the undo and redo action names " |
| + "in the platform undo manager."); |
| |
| field.focus(); |
| |
| debug("After typing:"); |
| document.execCommand("InsertText", true, "hello"); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", "Typing"); |
| shouldBeEqualToString("redoName", ""); |
| |
| function createUndoItemWithLabel(labelString) { |
| return new UndoItem({ |
| label: labelString, |
| undo: () => { }, |
| redo: () => { } |
| }); |
| } |
| |
| debug("After adding the first UndoItem:"); |
| const firstItem = createUndoItemWithLabel("First 🥇"); |
| document.undoManager.addItem(firstItem); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", firstItem.label); |
| shouldBeEqualToString("redoName", ""); |
| |
| debug("After adding the second UndoItem:"); |
| const secondItem = createUndoItemWithLabel("Second 🥈"); |
| document.undoManager.addItem(secondItem); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", secondItem.label); |
| shouldBeEqualToString("redoName", ""); |
| |
| debug("After undoing:"); |
| document.execCommand("undo"); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", firstItem.label); |
| shouldBeEqualToString("redoName", secondItem.label); |
| |
| debug("After undoing again:"); |
| document.execCommand("undo"); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", "Typing"); |
| shouldBeEqualToString("redoName", firstItem.label); |
| |
| debug("After redoing:"); |
| document.execCommand("redo"); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", firstItem.label); |
| shouldBeEqualToString("redoName", secondItem.label); |
| |
| debug("After redoing again:"); |
| document.execCommand("redo"); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", secondItem.label); |
| shouldBeEqualToString("redoName", ""); |
| |
| debug("After undoing and then pasting:"); |
| document.execCommand("undo"); |
| selectAllCommand(); |
| copyCommand(); |
| pasteCommand(); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", "Paste"); |
| shouldBeEqualToString("redoName", ""); |
| |
| debug("After undoing the paste command:"); |
| document.execCommand("undo"); |
| [undoName, redoName] = await UIHelper.undoAndRedoLabels(); |
| shouldBeEqualToString("undoName", firstItem.label); |
| shouldBeEqualToString("redoName", "Paste"); |
| |
| finishJSTest(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <input id="field"></input> |
| <pre id="description"></pre> |
| <pre id="console"></pre> |
| </body> |
| </html> |