forked from mirrors/gecko-dev
210 lines
6.6 KiB
JavaScript
210 lines
6.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* https://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// This file tests the Privacy pane's Cookie Banner Handling UI.
|
|
|
|
"use strict";
|
|
|
|
const FEATURE_PREF = "cookiebanners.ui.desktop.enabled";
|
|
const MODE_PREF = "cookiebanners.service.mode";
|
|
const PBM_MODE_PREF = "cookiebanners.service.mode.privateBrowsing";
|
|
const DETECT_ONLY_PREF = "cookiebanners.service.detectOnly";
|
|
|
|
const GROUPBOX_ID = "cookieBannerHandlingGroup";
|
|
const CHECKBOX_ID = "handleCookieBanners";
|
|
|
|
// Test the section is hidden on page load if the feature pref is disabled.
|
|
add_task(async function test_section_hidden_when_feature_flag_disabled() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
[FEATURE_PREF, false],
|
|
[MODE_PREF, Ci.nsICookieBannerService.MODE_DISABLED],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:preferences#privacy" },
|
|
async function(browser) {
|
|
let groupbox = browser.contentDocument.getElementById(GROUPBOX_ID);
|
|
is_element_hidden(groupbox, "#cookieBannerHandlingGroup is hidden");
|
|
}
|
|
);
|
|
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|
|
|
|
// Test the section is shown on page load if the feature pref is enabled.
|
|
add_task(async function test_section_shown_when_feature_flag_enabled() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
[FEATURE_PREF, true],
|
|
[MODE_PREF, Ci.nsICookieBannerService.MODE_DISABLED],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:preferences#privacy" },
|
|
async function(browser) {
|
|
let groupbox = browser.contentDocument.getElementById(GROUPBOX_ID);
|
|
is_element_visible(groupbox, "#cookieBannerHandlingGroup is visible");
|
|
}
|
|
);
|
|
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|
|
|
|
// Test the checkbox is unchecked in DISABLED mode.
|
|
add_task(async function test_checkbox_unchecked_disabled_mode() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
[FEATURE_PREF, true],
|
|
[MODE_PREF, Ci.nsICookieBannerService.MODE_DISABLED],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:preferences#privacy" },
|
|
async function(browser) {
|
|
let checkbox = browser.contentDocument.getElementById(CHECKBOX_ID);
|
|
ok(!checkbox.checked, "checkbox is not checked in DISABLED mode");
|
|
}
|
|
);
|
|
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|
|
|
|
// Test the checkbox is unchecked in detect-only mode.
|
|
add_task(async function test_checkbox_unchecked_detect_only_mode() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
[FEATURE_PREF, true],
|
|
[MODE_PREF, Ci.nsICookieBannerService.MODE_REJECT],
|
|
[DETECT_ONLY_PREF, true],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:preferences#privacy" },
|
|
async function(browser) {
|
|
let checkbox = browser.contentDocument.getElementById(CHECKBOX_ID);
|
|
ok(!checkbox.checked, "checkbox is not checked in detect-only mode");
|
|
}
|
|
);
|
|
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|
|
|
|
// Test the checkbox is checked in REJECT_OR_ACCEPT mode.
|
|
add_task(async function test_checkbox_checked_reject_or_accept_mode() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
[FEATURE_PREF, true],
|
|
[MODE_PREF, Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:preferences#privacy" },
|
|
async function(browser) {
|
|
let checkbox = browser.contentDocument.getElementById(CHECKBOX_ID);
|
|
ok(checkbox.checked, "checkbox is checked in REJECT_OR_ACCEPT mode");
|
|
}
|
|
);
|
|
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|
|
|
|
// Test the checkbox is checked in REJECT mode.
|
|
add_task(async function test_checkbox_checked_reject_mode() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
[FEATURE_PREF, true],
|
|
[MODE_PREF, Ci.nsICookieBannerService.MODE_REJECT],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:preferences#privacy" },
|
|
async function(browser) {
|
|
let checkbox = browser.contentDocument.getElementById(CHECKBOX_ID);
|
|
ok(checkbox.checked, "checkbox is checked in REJECT mode");
|
|
}
|
|
);
|
|
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|
|
|
|
// Test that toggling the checkbox toggles the mode pref value as expected,
|
|
// and also disables detect only mode, as expected.
|
|
add_task(async function test_checkbox_modifies_prefs() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
[FEATURE_PREF, true],
|
|
[MODE_PREF, Ci.nsICookieBannerService.MODE_UNSET],
|
|
[PBM_MODE_PREF, Ci.nsICookieBannerService.MODE_UNSET],
|
|
[DETECT_ONLY_PREF, true],
|
|
],
|
|
});
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:preferences#privacy" },
|
|
async function(browser) {
|
|
let checkboxSelector = "#" + CHECKBOX_ID;
|
|
let checkbox = browser.contentDocument.querySelector(checkboxSelector);
|
|
let section = browser.contentDocument.getElementById(GROUPBOX_ID);
|
|
|
|
section.scrollIntoView();
|
|
|
|
Assert.ok(
|
|
!checkbox.checked,
|
|
"initially, the checkbox should be unchecked"
|
|
);
|
|
|
|
await BrowserTestUtils.synthesizeMouseAtCenter(
|
|
checkboxSelector,
|
|
{},
|
|
browser
|
|
);
|
|
Assert.ok(checkbox.checked, "checkbox should be checked");
|
|
Assert.equal(
|
|
Ci.nsICookieBannerService.MODE_REJECT,
|
|
Services.prefs.getIntPref(MODE_PREF),
|
|
"cookie banner handling mode should be set to REJECT mode after checking the checkbox"
|
|
);
|
|
Assert.equal(
|
|
Ci.nsICookieBannerService.MODE_REJECT,
|
|
Services.prefs.getIntPref(PBM_MODE_PREF),
|
|
"cookie banner handling mode for PBM should be set to REJECT mode after checking the checkbox"
|
|
);
|
|
Assert.equal(
|
|
false,
|
|
Services.prefs.getBoolPref(DETECT_ONLY_PREF),
|
|
"cookie banner handling detect-only mode should be disabled after checking the checkbox"
|
|
);
|
|
|
|
await BrowserTestUtils.synthesizeMouseAtCenter(
|
|
checkboxSelector,
|
|
{},
|
|
browser
|
|
);
|
|
Assert.ok(!checkbox.checked, "checkbox should be unchecked");
|
|
Assert.equal(
|
|
Ci.nsICookieBannerService.MODE_DISABLED,
|
|
Services.prefs.getIntPref(MODE_PREF),
|
|
"cookie banner handling mode should be set to DISABLED mode after unchecking the checkbox"
|
|
);
|
|
Assert.equal(
|
|
Ci.nsICookieBannerService.MODE_DISABLED,
|
|
Services.prefs.getIntPref(PBM_MODE_PREF),
|
|
"cookie banner handling mode for PBM should be set to DISABLED mode after unchecking the checkbox"
|
|
);
|
|
Assert.equal(
|
|
false,
|
|
Services.prefs.getBoolPref(DETECT_ONLY_PREF),
|
|
"cookie banner handling detect-only mode should still be disabled after unchecking the checkbox"
|
|
);
|
|
}
|
|
);
|
|
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|