Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
// Verifies that the about:addons theme pane shows a notice for Smart Window
// users, informing them that theme appearance may vary.
const PREF_SMARTWINDOW_TOS_CONSENT_TIME = "browser.smartwindow.tos.consentTime";
const TOS_CONSENT_GRANTED = Math.round(Date.now() / 1000); // arbitrary non-zero timestamp
const PREF_SMARTWINDOW_SHOW_NOTICE = "browser.smartwindow.showThemesNotice";
const assertSmartWindowThemesNotice = async (addonsWin, { expectVisible }) => {
const notice = addonsWin.document.querySelector("smartwindow-themes-notice");
Assert.equal(
BrowserTestUtils.isVisible(notice),
expectVisible,
`Expect smartwindow themes notice to be ${expectVisible ? "shown" : "hidden"}`
);
if (expectVisible) {
const messageBar = notice.querySelector("moz-message-bar");
Assert.ok(
messageBar,
"Expect a moz-message-bar inside the smartwindow themes notice"
);
Assert.ok(
BrowserTestUtils.isVisible(messageBar),
"Expect a moz-message-bar to be visible"
);
Assert.equal(
messageBar.dismissable,
true,
"moz-message-bar should be dismissable"
);
Assert.equal(
messageBar.dataset.l10nId,
"smartwindow-themes-notice",
"Got the expected fluent ID on the moz-message-bar"
);
await addonsWin.document.l10n.translateFragment(messageBar);
Assert.ok(
messageBar.message,
"Expect smartwindow localized message to be found and set"
);
}
};
add_task(async function test_notice_hidden_before_tos_consent() {
await SpecialPowers.pushPrefEnv({
set: [
[PREF_SMARTWINDOW_TOS_CONSENT_TIME, 0],
[PREF_SMARTWINDOW_SHOW_NOTICE, true],
],
});
const win = await loadInitialView("theme");
await assertSmartWindowThemesNotice(win, { expectVisible: false });
await closeView(win);
await SpecialPowers.popPrefEnv();
});
add_task(async function test_notice_shown_after_tos_consent() {
await SpecialPowers.pushPrefEnv({
set: [
[PREF_SMARTWINDOW_TOS_CONSENT_TIME, TOS_CONSENT_GRANTED],
[PREF_SMARTWINDOW_SHOW_NOTICE, true],
],
});
const win = await loadInitialView("theme");
await assertSmartWindowThemesNotice(win, { expectVisible: true });
await closeView(win);
await SpecialPowers.popPrefEnv();
});
add_task(async function test_notice_hidden_after_dismissed() {
await SpecialPowers.pushPrefEnv({
set: [
[PREF_SMARTWINDOW_TOS_CONSENT_TIME, TOS_CONSENT_GRANTED],
[PREF_SMARTWINDOW_SHOW_NOTICE, false],
],
});
const win = await loadInitialView("theme");
await assertSmartWindowThemesNotice(win, { expectVisible: false });
await closeView(win);
await SpecialPowers.popPrefEnv();
});
add_task(async function test_notice_reacts_to_tos_consent_pref_change() {
await SpecialPowers.pushPrefEnv({
set: [
[PREF_SMARTWINDOW_TOS_CONSENT_TIME, 0],
[PREF_SMARTWINDOW_SHOW_NOTICE, true],
],
});
const win = await loadInitialView("theme");
await assertSmartWindowThemesNotice(win, { expectVisible: false });
await SpecialPowers.pushPrefEnv({
set: [[PREF_SMARTWINDOW_TOS_CONSENT_TIME, TOS_CONSENT_GRANTED]],
});
await assertSmartWindowThemesNotice(win, { expectVisible: true });
await closeView(win);
await SpecialPowers.popPrefEnv();
await SpecialPowers.popPrefEnv();
});
add_task(async function test_dismiss_sets_pref_and_hides_notice() {
await SpecialPowers.pushPrefEnv({
set: [
[PREF_SMARTWINDOW_TOS_CONSENT_TIME, TOS_CONSENT_GRANTED],
[PREF_SMARTWINDOW_SHOW_NOTICE, true],
],
});
const win = await loadInitialView("theme");
await assertSmartWindowThemesNotice(win, { expectVisible: true });
const closeButton = win.document
.querySelector("smartwindow-themes-notice")
.querySelector("moz-message-bar")
?.shadowRoot.querySelector("moz-button.close");
ok(closeButton, "Found close button in smartwindow themes notice");
info(
"Dismissing smartwindow themes notice by clicking on the close icon button"
);
closeButton.click();
Assert.equal(
Services.prefs.getBoolPref(PREF_SMARTWINDOW_SHOW_NOTICE),
false,
"Dismissing the notice should set the pref to false"
);
await assertSmartWindowThemesNotice(win, { expectVisible: false });
await closeView(win);
await SpecialPowers.popPrefEnv();
});