From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/browser/composition/browser_font_color.js | 114 +++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 comm/mail/test/browser/composition/browser_font_color.js (limited to 'comm/mail/test/browser/composition/browser_font_color.js') 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); +}); -- cgit v1.2.3