177 lines
5.5 KiB
JavaScript
177 lines
5.5 KiB
JavaScript
const PREFS = [
|
|
"browser.safebrowsing.phishing.enabled",
|
|
"browser.safebrowsing.malware.enabled",
|
|
|
|
"browser.safebrowsing.downloads.enabled",
|
|
|
|
"browser.safebrowsing.downloads.remote.block_potentially_unwanted",
|
|
"browser.safebrowsing.downloads.remote.block_uncommon",
|
|
];
|
|
|
|
let originals = PREFS.map(pref => [pref, Services.prefs.getBoolPref(pref)]);
|
|
let originalMalwareTable = Services.prefs.getCharPref(
|
|
"urlclassifier.malwareTable"
|
|
);
|
|
registerCleanupFunction(function () {
|
|
originals.forEach(([pref, val]) => Services.prefs.setBoolPref(pref, val));
|
|
Services.prefs.setCharPref(
|
|
"urlclassifier.malwareTable",
|
|
originalMalwareTable
|
|
);
|
|
});
|
|
|
|
// This test only opens the Preferences once, and then reloads the page
|
|
// each time that it wants to test various preference combinations. We
|
|
// only use one tab (instead of opening/closing for each test) for all
|
|
// to help improve test times on debug builds.
|
|
add_setup(async function () {
|
|
await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
|
|
registerCleanupFunction(async function () {
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
});
|
|
|
|
// test the download protection preference
|
|
add_task(async function () {
|
|
async function checkPrefSwitch(val) {
|
|
Services.prefs.setBoolPref("browser.safebrowsing.downloads.enabled", val);
|
|
|
|
gBrowser.reload();
|
|
await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
|
|
|
|
let doc = gBrowser.selectedBrowser.contentDocument;
|
|
let checkbox = doc.getElementById("blockDownloads");
|
|
|
|
let blockUncommon = doc.getElementById("blockUncommonUnwanted");
|
|
let checked = checkbox.checked;
|
|
is(checked, val, "downloads preference is initialized correctly");
|
|
// should be disabled when val is false (= pref is turned off)
|
|
is(
|
|
blockUncommon.hasAttribute("disabled"),
|
|
!val,
|
|
"block uncommon checkbox is set correctly"
|
|
);
|
|
|
|
// scroll the checkbox into view, otherwise the synthesizeMouseAtCenter will be ignored, and click it
|
|
checkbox.scrollIntoView();
|
|
EventUtils.synthesizeMouseAtCenter(
|
|
checkbox,
|
|
{},
|
|
gBrowser.selectedBrowser.contentWindow
|
|
);
|
|
|
|
// check that setting is now turned on or off
|
|
is(
|
|
Services.prefs.getBoolPref("browser.safebrowsing.downloads.enabled"),
|
|
!checked,
|
|
"safebrowsing.downloads preference is set correctly"
|
|
);
|
|
|
|
// check if the uncommon warning checkbox has updated
|
|
is(
|
|
blockUncommon.hasAttribute("disabled"),
|
|
val,
|
|
"block uncommon checkbox is set correctly"
|
|
);
|
|
}
|
|
|
|
await checkPrefSwitch(true);
|
|
await checkPrefSwitch(false);
|
|
});
|
|
|
|
requestLongerTimeout(2);
|
|
// test the unwanted/uncommon software warning preference
|
|
add_task(async function () {
|
|
async function checkPrefSwitch(val1, val2, isV2) {
|
|
Services.prefs.setBoolPref(
|
|
"browser.safebrowsing.downloads.remote.block_potentially_unwanted",
|
|
val1
|
|
);
|
|
Services.prefs.setBoolPref(
|
|
"browser.safebrowsing.downloads.remote.block_uncommon",
|
|
val2
|
|
);
|
|
let testMalwareTable = "goog-malware-" + (isV2 ? "shavar" : "proto");
|
|
testMalwareTable += ",test-malware-simple";
|
|
if (val1 && val2) {
|
|
testMalwareTable += ",goog-unwanted-" + (isV2 ? "shavar" : "proto");
|
|
testMalwareTable += ",moztest-unwanted-simple";
|
|
}
|
|
Services.prefs.setCharPref("urlclassifier.malwareTable", testMalwareTable);
|
|
|
|
gBrowser.reload();
|
|
await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
|
|
|
|
let doc = gBrowser.selectedBrowser.contentDocument;
|
|
let checkbox = doc.getElementById("blockUncommonUnwanted");
|
|
let checked = checkbox.checked;
|
|
is(
|
|
checked,
|
|
val1 && val2,
|
|
"unwanted/uncommon preference is initialized correctly"
|
|
);
|
|
|
|
// scroll the checkbox into view, otherwise the synthesizeMouseAtCenter will be ignored, and click it
|
|
checkbox.scrollIntoView();
|
|
EventUtils.synthesizeMouseAtCenter(
|
|
checkbox,
|
|
{},
|
|
gBrowser.selectedBrowser.contentWindow
|
|
);
|
|
|
|
// check that both settings are now turned on or off
|
|
is(
|
|
Services.prefs.getBoolPref(
|
|
"browser.safebrowsing.downloads.remote.block_potentially_unwanted"
|
|
),
|
|
!checked,
|
|
"block_potentially_unwanted is set correctly"
|
|
);
|
|
is(
|
|
Services.prefs.getBoolPref(
|
|
"browser.safebrowsing.downloads.remote.block_uncommon"
|
|
),
|
|
!checked,
|
|
"block_uncommon is set correctly"
|
|
);
|
|
|
|
// when the preference is on, the malware table should include these ids
|
|
let malwareTable = Services.prefs
|
|
.getCharPref("urlclassifier.malwareTable")
|
|
.split(",");
|
|
if (isV2) {
|
|
is(
|
|
malwareTable.includes("goog-unwanted-shavar"),
|
|
!checked,
|
|
"malware table doesn't include goog-unwanted-shavar"
|
|
);
|
|
} else {
|
|
is(
|
|
malwareTable.includes("goog-unwanted-proto"),
|
|
!checked,
|
|
"malware table doesn't include goog-unwanted-proto"
|
|
);
|
|
}
|
|
is(
|
|
malwareTable.includes("moztest-unwanted-simple"),
|
|
!checked,
|
|
"malware table doesn't include moztest-unwanted-simple"
|
|
);
|
|
let sortedMalware = malwareTable.slice(0);
|
|
sortedMalware.sort();
|
|
Assert.deepEqual(
|
|
malwareTable,
|
|
sortedMalware,
|
|
"malware table has been sorted"
|
|
);
|
|
}
|
|
|
|
await checkPrefSwitch(true, true, false);
|
|
await checkPrefSwitch(false, true, false);
|
|
await checkPrefSwitch(true, false, false);
|
|
await checkPrefSwitch(false, false, false);
|
|
await checkPrefSwitch(true, true, true);
|
|
await checkPrefSwitch(false, true, true);
|
|
await checkPrefSwitch(true, false, true);
|
|
await checkPrefSwitch(false, false, true);
|
|
});
|