Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const BASELINE_PREF = "privacy.trackingprotection.allow_list.baseline.enabled";
const CONVENIENCE_PREF =
"privacy.trackingprotection.allow_list.convenience.enabled";
const CB_CATEGORY_PREF = "browser.contentblocking.category";
const ETP_STANDARD_ID = "standardRadio";
const ETP_STRICT_ID = "strictRadio";
const ETP_CUSTOM_ID = "customRadio";
const STRICT_BASELINE_CHECKBOX_ID = "contentBlockingBaselineExceptionsStrict";
const STRICT_CONVENIENCE_CHECKBOX_ID =
"contentBlockingConvenienceExceptionsStrict";
const CUSTOM_BASELINE_CHECKBOX_ID = "contentBlockingBaselineExceptionsCustom";
const CUSTOM_CONVENIENCE_CHECKBOX_ID =
"contentBlockingConvenienceExceptionsCustom";
async function cleanUp() {
await SpecialPowers.popPrefEnv();
gBrowser.removeCurrentTab();
}
async function setup() {
await SpecialPowers.pushPrefEnv({
set: [[CB_CATEGORY_PREF, "standard"]],
});
Assert.ok(
Services.prefs.getBoolPref(BASELINE_PREF),
"The baseline preference should be initially true."
);
Assert.ok(
Services.prefs.getBoolPref(CONVENIENCE_PREF),
"The convenience preference should be initially true."
);
}
add_task(async function test_baseline_checkbox_dialog_cancel() {
await setup();
await openPreferencesViaOpenPreferencesAPI("privacy", {
leaveOpen: true,
});
let doc = gBrowser.contentDocument;
doc.getElementById(ETP_STRICT_ID).click();
// Initially, baseline should be checked
let baselineCheckbox = doc.getElementById(STRICT_BASELINE_CHECKBOX_ID);
is(
baselineCheckbox.checked,
true,
"The baseline checkbox should be checked initially."
);
await clickCheckboxWithConfirmDialog(
doc,
STRICT_BASELINE_CHECKBOX_ID,
BASELINE_PREF,
true,
0
);
// Verify the checkbox is still checked and pref is still true
is(
baselineCheckbox.checked,
true,
"The baseline checkbox should remain checked after canceling dialog."
);
Assert.ok(
Services.prefs.getBoolPref(BASELINE_PREF),
"The baseline pref should remain true after canceling dialog."
);
await cleanUp();
});
add_task(async function test_baseline_checkbox_dialog_confirm() {
await setup();
await openPreferencesViaOpenPreferencesAPI("privacy", {
leaveOpen: true,
});
let doc = gBrowser.contentDocument;
doc.getElementById(ETP_STRICT_ID).click();
let baselineCheckbox = doc.getElementById(STRICT_BASELINE_CHECKBOX_ID);
is(
baselineCheckbox.checked,
true,
"The baseline checkbox should be checked initially."
);
await clickCheckboxWithConfirmDialog(
doc,
STRICT_BASELINE_CHECKBOX_ID,
BASELINE_PREF,
false,
1
);
is(
baselineCheckbox.checked,
false,
"The baseline checkbox should be unchecked after confirming dialog."
);
Assert.ok(
!Services.prefs.getBoolPref(BASELINE_PREF),
"The baseline pref should be false after confirming dialog."
);
Assert.ok(
!Services.prefs.getBoolPref(CONVENIENCE_PREF),
"The convenience pref should be false when baseline is disabled."
);
await cleanUp();
});
add_task(async function test_custom_baseline_checkbox_dialog_cancel() {
await setup();
await openPreferencesViaOpenPreferencesAPI("privacy", {
leaveOpen: true,
});
let doc = gBrowser.contentDocument;
doc.getElementById(ETP_CUSTOM_ID).click();
let baselineCheckbox = doc.getElementById(CUSTOM_BASELINE_CHECKBOX_ID);
is(
baselineCheckbox.checked,
true,
"The custom baseline checkbox should be checked initially."
);
await clickCheckboxWithConfirmDialog(
doc,
CUSTOM_BASELINE_CHECKBOX_ID,
BASELINE_PREF,
true,
0
);
is(
baselineCheckbox.checked,
true,
"The custom baseline checkbox should remain checked after canceling dialog."
);
Assert.ok(
Services.prefs.getBoolPref(BASELINE_PREF),
"The baseline pref should remain true after canceling dialog."
);
Assert.ok(
Services.prefs.getBoolPref(CONVENIENCE_PREF),
"The convenience pref should remain true when baseline is enabled."
);
await cleanUp();
});
add_task(async function test_custom_baseline_checkbox_dialog_confirm() {
await setup();
await openPreferencesViaOpenPreferencesAPI("privacy", {
leaveOpen: true,
});
let doc = gBrowser.contentDocument;
doc.getElementById(ETP_CUSTOM_ID).click();
let baselineCheckbox = doc.getElementById(CUSTOM_BASELINE_CHECKBOX_ID);
is(
baselineCheckbox.checked,
true,
"The custom baseline checkbox should be checked initially."
);
await clickCheckboxWithConfirmDialog(
doc,
CUSTOM_BASELINE_CHECKBOX_ID,
BASELINE_PREF,
false,
1
);
is(
baselineCheckbox.checked,
false,
"The custom baseline checkbox should be unchecked after confirming dialog."
);
Assert.ok(
!Services.prefs.getBoolPref(BASELINE_PREF),
"The baseline pref should be false after confirming dialog."
);
let convenienceCheckbox = doc.getElementById(CUSTOM_CONVENIENCE_CHECKBOX_ID);
is(
convenienceCheckbox.checked,
true,
"The custom convenience checkbox should be unchanged when baseline is disabled."
);
Assert.ok(
Services.prefs.getBoolPref(CONVENIENCE_PREF),
"The convenience pref should be unchanged when baseline is disabled."
);
await cleanUp();
});