/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Test that the undo and redo correctly updates the content when opening the HTML editor on a // new node. Bug 1327674. const DIV1_HTML = '
content1
'; const DIV2_HTML = '
content2
'; const DIV2_HTML_UPDATED = '
content2_updated
'; const TEST_URL = "data:text/html," + "" + "" + "" + DIV1_HTML + DIV2_HTML + "" + ""; add_task(async function () { const { inspector } = await openInspectorForURL(TEST_URL); inspector.markup._frame.focus(); await selectNode("#d1", inspector); info("Open the HTML editor on node #d1"); let onHtmlEditorCreated = once(inspector.markup, "begin-editing"); EventUtils.sendKey("F2", inspector.markup._frame.contentWindow); await onHtmlEditorCreated; ok(inspector.markup.htmlEditor.isVisible, "HTML Editor is visible"); is( inspector.markup.htmlEditor.editor.getText(), DIV1_HTML, "The editor content for d1 is correct." ); info("Hide the HTML editor for #d1"); let onEditorHidden = once(inspector.markup.htmlEditor, "popuphidden"); EventUtils.sendKey("ESCAPE", inspector.markup.htmlEditor.doc.defaultView); await onEditorHidden; ok(!inspector.markup.htmlEditor.isVisible, "HTML Editor is not visible"); await selectNode("#d2", inspector); info("Open the HTML editor on node #d2"); onHtmlEditorCreated = once(inspector.markup, "begin-editing"); EventUtils.sendKey("F2", inspector.markup._frame.contentWindow); await onHtmlEditorCreated; ok(inspector.markup.htmlEditor.isVisible, "HTML Editor is visible"); is( inspector.markup.htmlEditor.editor.getText(), DIV2_HTML, "The editor content for d2 is correct." ); // Wait a bit so that the next change is tracked as a // seperate history change await waitForTime(1000); inspector.markup.htmlEditor.editor.focus(); // Select and replace the content await EventUtils.synthesizeKey("a", { accelKey: true }); await EventUtils.synthesizeKey(DIV2_HTML_UPDATED); // Wait a bit so that the next change is tracked as a // seperate history change await waitForTime(1000); is( inspector.markup.htmlEditor.editor.getText(), DIV2_HTML_UPDATED, "The editor content for d2 is updated." ); await EventUtils.synthesizeKey("z", { accelKey: true }); // Wait a bit for the content to update await waitForTime(1000); is( inspector.markup.htmlEditor.editor.getText(), DIV2_HTML, "The editor content for d2 is reverted." ); // Undo should be at the last change in history await EventUtils.synthesizeKey("z", { accelKey: true }); // Wait a bit for the content to update await waitForTime(1000); is( inspector.markup.htmlEditor.editor.getText(), DIV2_HTML, "The editor content for d2 has not been set to content1." ); // TO FIX: The redo key seems to fail intermittently on Windows if (!isWindows()) { // Redo should be back to to the updated content await EventUtils.synthesizeKey("z", { shiftKey: true, accelKey: true }); is( inspector.markup.htmlEditor.editor.getText(), DIV2_HTML_UPDATED, "The editor content for d2 is back to updated" ); } info("Hide the HTML editor for #d2"); onEditorHidden = once(inspector.markup.htmlEditor, "popuphidden"); EventUtils.sendKey("ESCAPE", inspector.markup.htmlEditor.doc.defaultView); await onEditorHidden; ok(!inspector.markup.htmlEditor.isVisible, "HTML Editor is not visible"); });