summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/composition/browser_replySelection.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/composition/browser_replySelection.js')
-rw-r--r--comm/mail/test/browser/composition/browser_replySelection.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/comm/mail/test/browser/composition/browser_replySelection.js b/comm/mail/test/browser/composition/browser_replySelection.js
new file mode 100644
index 0000000000..0abdd55194
--- /dev/null
+++ b/comm/mail/test/browser/composition/browser_replySelection.js
@@ -0,0 +1,64 @@
+/* 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 reply with selection works properly.
+ */
+
+"use strict";
+
+var { close_compose_window, open_compose_with_reply } = ChromeUtils.import(
+ "resource://testing-common/mozmill/ComposeHelpers.jsm"
+);
+var { get_about_message, open_message_from_file } = ChromeUtils.import(
+ "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
+);
+var { click_menus_in_sequence, close_window } = ChromeUtils.import(
+ "resource://testing-common/mozmill/WindowHelpers.jsm"
+);
+
+add_task(async function test_reply_w_selection_direct() {
+ let file = new FileUtils.File(getTestFilePath("data/non-flowed-plain.eml"));
+ let msgc = await open_message_from_file(file);
+
+ let aboutMessage = get_about_message(msgc);
+ let win = aboutMessage.document.getElementById("messagepane").contentWindow;
+ let doc = aboutMessage.document.getElementById("messagepane").contentDocument;
+ let selection = win.getSelection();
+
+ let text = doc.querySelector("body > div.moz-text-plain > pre.moz-quote-pre");
+
+ // Lines 2-3 of the text.
+ let range1 = doc.createRange();
+ range1.setStart(text.firstChild, 6);
+ range1.setEnd(text.firstChild, 20);
+
+ // The <pre> node itself.
+ let range2 = doc.createRange();
+ range2.setStart(text, 0);
+ range2.setEnd(text, 1);
+
+ for (let range of [range1, range2]) {
+ selection.removeAllRanges();
+ selection.addRange(range);
+
+ let cwc = await open_compose_with_reply(msgc);
+ let blockquote = cwc.document
+ .getElementById("messageEditor")
+ .contentDocument.body.querySelector("blockquote");
+
+ Assert.ok(
+ blockquote.querySelector(":scope > pre"),
+ "the non-flowed content should be in a <pre>"
+ );
+
+ Assert.ok(
+ !blockquote.querySelector(":scope > pre").innerHTML.includes("<"),
+ "should be all text, no tags in the message text"
+ );
+ await close_compose_window(cwc);
+ }
+
+ await BrowserTestUtils.closeWindow(msgc);
+});