diff options
Diffstat (limited to 'comm/mail/test/browser/composition/browser_quoteMessage.js')
-rw-r--r-- | comm/mail/test/browser/composition/browser_quoteMessage.js | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/comm/mail/test/browser/composition/browser_quoteMessage.js b/comm/mail/test/browser/composition/browser_quoteMessage.js new file mode 100644 index 0000000000..72f53d8315 --- /dev/null +++ b/comm/mail/test/browser/composition/browser_quoteMessage.js @@ -0,0 +1,91 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * Tests that in the compose window, Options > Quote Message works well for + * non-UTF8 encoding. + */ + +var { close_compose_window, open_compose_with_reply, get_compose_body } = + ChromeUtils.import("resource://testing-common/mozmill/ComposeHelpers.jsm"); +var { + be_in_folder, + create_folder, + get_about_message, + open_message_from_file, + select_click_row, +} = ChromeUtils.import( + "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" +); +var { click_menus_in_sequence, close_window } = ChromeUtils.import( + "resource://testing-common/mozmill/WindowHelpers.jsm" +); + +var folderToStoreMessages; + +add_setup(async function () { + folderToStoreMessages = await create_folder("QuoteTestFolder"); +}); + +add_task(async function test_quoteMessage() { + await be_in_folder(folderToStoreMessages); + + let file = new FileUtils.File(getTestFilePath("data/iso-2022-jp.eml")); + let msgc = await open_message_from_file(file); + // Copy the message to a folder, so that Quote Message menu item is enabled. + let documentChild = msgc.window.content.document.documentElement; + EventUtils.synthesizeMouseAtCenter( + documentChild, + { type: "contextmenu", button: 2 }, + documentChild.ownerGlobal + ); + let aboutMessage = get_about_message(msgc.window); + await click_menus_in_sequence( + aboutMessage.document.getElementById("mailContext"), + [ + { id: "mailContext-copyMenu" }, + { label: "Local Folders" }, + { label: "QuoteTestFolder" }, + ] + ); + close_window(msgc); + + // Select message and click reply. + select_click_row(0); + let cwc = open_compose_with_reply(); + let composeBody = get_compose_body(cwc).textContent; + Assert.equal( + composeBody.match(/世界/g).length, + 1, + "Message should be quoted by replying" + ); + + if (["linux", "win"].includes(AppConstants.platform)) { + // Click Options > Quote Message. + EventUtils.synthesizeMouseAtCenter( + cwc.window.document.getElementById("optionsMenu"), + {}, + cwc.window.document.getElementById("optionsMenu").ownerGlobal + ); + await click_menus_in_sequence( + cwc.window.document.getElementById("optionsMenuPopup"), + [{ id: "menu_quoteMessage" }] + ); + // eslint-disable-next-line mozilla/no-arbitrary-setTimeout + await new Promise(resolve => setTimeout(resolve, 50)); + } else { + // Native menubar is used on macOS, didn't find a way to click it. + cwc.window.goDoCommand("cmd_quoteMessage"); + // eslint-disable-next-line mozilla/no-arbitrary-setTimeout + await new Promise(resolve => setTimeout(resolve, 1)); + } + composeBody = get_compose_body(cwc).textContent; + Assert.equal( + composeBody.match(/世界/g).length, + 2, + "Message should be quoted again by Options > Quote Message." + ); + + close_compose_window(cwc); +}); |