Revision control
Copy as Markdown
Other Tools
/* 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
/**
* Tests that replying to an HTML message works properly.
*/
var { close_compose_window, open_compose_with_reply } =
ChromeUtils.importESModule(
);
var { get_about_message, open_message_from_file } = ChromeUtils.importESModule(
);
add_task(async function testReplyWholeMessage() {
const file = new FileUtils.File(getTestFilePath("data/sampleContent.eml"));
const msgc = await open_message_from_file(file);
const cwc = await open_compose_with_reply(msgc);
const blockquote = cwc.document
.getElementById("messageEditor")
.contentDocument.body.querySelector("blockquote");
const paragraphs = blockquote.querySelectorAll("blockquote > p");
Assert.equal(paragraphs.length, 4);
Assert.deepEqual(
Array.from(paragraphs, p => p.textContent),
[
"This is a page of sample content for tests.",
"Link to a web page",
"Link to an email address",
"",
],
"message text should be quoted correctly"
);
await close_compose_window(cwc);
await BrowserTestUtils.closeWindow(msgc);
});
add_task(async function testReplySelection() {
const file = new FileUtils.File(getTestFilePath("data/sampleContent.eml"));
const msgc = await open_message_from_file(file);
const aboutMessage = get_about_message(msgc);
const win = aboutMessage.document.getElementById("messagepane").contentWindow;
const doc =
aboutMessage.document.getElementById("messagepane").contentDocument;
const selection = win.getSelection();
const text = doc.querySelector("body > div.moz-text-html > p");
const range = doc.createRange();
range.setStart(text.firstChild, 18);
range.setEnd(text.firstChild, 32);
selection.removeAllRanges();
selection.addRange(range);
const cwc = await open_compose_with_reply(msgc);
const blockquote = cwc.document
.getElementById("messageEditor")
.contentDocument.body.querySelector("blockquote");
Assert.equal(
blockquote.textContent,
"sample content",
"selected text should be quoted correctly"
);
await close_compose_window(cwc);
await BrowserTestUtils.closeWindow(msgc);
});