summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/composition/browser_font_color.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/composition/browser_font_color.js')
-rw-r--r--comm/mail/test/browser/composition/browser_font_color.js114
1 files changed, 114 insertions, 0 deletions
diff --git a/comm/mail/test/browser/composition/browser_font_color.js b/comm/mail/test/browser/composition/browser_font_color.js
new file mode 100644
index 0000000000..e534ab65be
--- /dev/null
+++ b/comm/mail/test/browser/composition/browser_font_color.js
@@ -0,0 +1,114 @@
+/* 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/. */
+
+/**
+ * Test font color in messages.
+ */
+
+var { close_compose_window, open_compose_new_mail, FormatHelper } =
+ ChromeUtils.import("resource://testing-common/mozmill/ComposeHelpers.jsm");
+
+add_task(async function test_font_color() {
+ let controller = open_compose_new_mail();
+ let formatHelper = new FormatHelper(controller.window);
+
+ let colorSet = [
+ { value: "#0000ff", rgb: [0, 0, 255] },
+ { value: "#fb3e83", rgb: [251, 62, 131] },
+ ];
+
+ // Before focus, disabled.
+ Assert.ok(
+ formatHelper.colorSelector.hasAttribute("disabled"),
+ "Selector should be disabled with no focus"
+ );
+
+ formatHelper.focusMessage();
+ Assert.ok(
+ !formatHelper.colorSelector.hasAttribute("disabled"),
+ "Selector should be enabled with focus"
+ );
+
+ let firstText = "no color";
+ let secondText = "with color";
+
+ for (let color of colorSet) {
+ let value = color.value;
+ await formatHelper.assertShownColor("", `No color at start (${value})`);
+
+ await formatHelper.typeInMessage(firstText);
+ formatHelper.assertMessageParagraph(
+ [firstText],
+ `No color at start after typing (${value})`
+ );
+
+ // Select through toolbar.
+ await formatHelper.selectColor(value);
+ await formatHelper.assertShownColor(color, `Color ${value} selected`);
+
+ await formatHelper.typeInMessage(secondText);
+ await formatHelper.assertShownColor(
+ color,
+ `Color ${value} selected and typing`
+ );
+ formatHelper.assertMessageParagraph(
+ [firstText, { text: secondText, color: value }],
+ `${value} on second half`
+ );
+
+ // Test text selections.
+ for (let [start, end, forward, expect] of [
+ // Make sure we expect changes, so the test does not capture the previous
+ // state.
+ [0, null, true, ""], // At start.
+ [firstText.length + 1, null, true, color], // In the color region.
+ [0, firstText.length + secondText.length, true, null], // Mixed.
+ [firstText.length, null, true, ""], // Boundary travelling forward.
+ [firstText.length, null, false, color], // On boundary travelling backward.
+ ]) {
+ await formatHelper.selectTextRange(start, end, forward);
+ await formatHelper.assertShownColor(
+ expect,
+ `Selecting text with ${value}, from ${start} to ${end} ` +
+ `${forward ? "forwards" : "backwards"}`
+ );
+ }
+
+ // Select mixed.
+ await formatHelper.selectTextRange(3, firstText.length + 1);
+ await formatHelper.assertShownColor(null, `Mixed selection (${value})`);
+
+ // Select the same color.
+ await formatHelper.selectColor(value);
+ await formatHelper.assertShownColor(
+ color,
+ `Selected ${value} color on more`
+ );
+ formatHelper.assertMessageParagraph(
+ [
+ firstText.slice(0, 3),
+ { text: firstText.slice(3) + secondText, color: value },
+ ],
+ `${value} color on more`
+ );
+
+ // Select the default color.
+ let selector = formatHelper.selectColorInDialog(null);
+ // Select through Format menu.
+ formatHelper.selectFromFormatMenu(formatHelper.colorMenuItem);
+ await selector;
+ await formatHelper.assertShownColor("", `Unselected ${value} color`);
+ formatHelper.assertMessageParagraph(
+ [
+ firstText + secondText.slice(0, 1),
+ { text: secondText.slice(1), color: value },
+ ],
+ `Cleared some ${value} color`
+ );
+
+ await formatHelper.emptyParagraph();
+ }
+
+ close_compose_window(controller);
+});