summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/in-content/tests/browser_security.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/in-content/tests/browser_security.js')
-rw-r--r--browser/components/preferences/in-content/tests/browser_security.js130
1 files changed, 130 insertions, 0 deletions
diff --git a/browser/components/preferences/in-content/tests/browser_security.js b/browser/components/preferences/in-content/tests/browser_security.js
new file mode 100644
index 000000000..e6eb2a91d
--- /dev/null
+++ b/browser/components/preferences/in-content/tests/browser_security.js
@@ -0,0 +1,130 @@
+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);
+});
+
+// test the safebrowsing preference
+add_task(function*() {
+ function* checkPrefSwitch(val1, val2) {
+ Services.prefs.setBoolPref("browser.safebrowsing.phishing.enabled", val1);
+ Services.prefs.setBoolPref("browser.safebrowsing.malware.enabled", val2);
+
+ yield openPreferencesViaOpenPreferencesAPI("security", undefined, { leaveOpen: true });
+
+ let doc = gBrowser.selectedBrowser.contentDocument;
+ let checkbox = doc.getElementById("enableSafeBrowsing");
+ let blockDownloads = doc.getElementById("blockDownloads");
+ let blockUncommon = doc.getElementById("blockUncommonUnwanted");
+ let checked = checkbox.checked;
+ is(checked, val1 && val2, "safebrowsing preference is initialized correctly");
+ // should be disabled when checked is false (= pref is turned off)
+ is(blockDownloads.hasAttribute("disabled"), !checked, "block downloads checkbox is set correctly");
+ is(blockUncommon.hasAttribute("disabled"), !checked, "block uncommon checkbox is set correctly");
+
+ // click the checkbox
+ EventUtils.synthesizeMouseAtCenter(checkbox, {}, gBrowser.selectedBrowser.contentWindow);
+
+ // check that both settings are now turned on or off
+ is(Services.prefs.getBoolPref("browser.safebrowsing.phishing.enabled"), !checked,
+ "safebrowsing.enabled is set correctly");
+ is(Services.prefs.getBoolPref("browser.safebrowsing.malware.enabled"), !checked,
+ "safebrowsing.malware.enabled is set correctly");
+
+ // check if the other checkboxes have updated
+ checked = checkbox.checked;
+ is(blockDownloads.hasAttribute("disabled"), !checked, "block downloads checkbox is set correctly");
+ is(blockUncommon.hasAttribute("disabled"), !checked || !blockDownloads.checked, "block uncommon checkbox is set correctly");
+
+ yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
+ }
+
+ yield checkPrefSwitch(true, true);
+ yield checkPrefSwitch(false, true);
+ yield checkPrefSwitch(true, false);
+ yield checkPrefSwitch(false, false);
+});
+
+// test the download protection preference
+add_task(function*() {
+ function* checkPrefSwitch(val) {
+ Services.prefs.setBoolPref("browser.safebrowsing.downloads.enabled", val);
+
+ yield openPreferencesViaOpenPreferencesAPI("security", undefined, { leaveOpen: true });
+
+ 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");
+
+ // click the checkbox
+ 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");
+
+ yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
+ }
+
+ yield checkPrefSwitch(true);
+ yield checkPrefSwitch(false);
+});
+
+// test the unwanted/uncommon software warning preference
+add_task(function*() {
+ function* checkPrefSwitch(val1, val2) {
+ Services.prefs.setBoolPref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", val1);
+ Services.prefs.setBoolPref("browser.safebrowsing.downloads.remote.block_uncommon", val2);
+
+ yield openPreferencesViaOpenPreferencesAPI("security", undefined, { leaveOpen: true });
+
+ let doc = gBrowser.selectedBrowser.contentDocument;
+ let checkbox = doc.getElementById("blockUncommonUnwanted");
+ let checked = checkbox.checked;
+ is(checked, val1 && val2, "unwanted/uncommon preference is initialized correctly");
+
+ // click the checkbox
+ 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(",");
+ is(malwareTable.includes("goog-unwanted-shavar"), !checked,
+ "malware table doesn't include goog-unwanted-shavar");
+ is(malwareTable.includes("test-unwanted-simple"), !checked,
+ "malware table doesn't include test-unwanted-simple");
+ let sortedMalware = malwareTable.slice(0);
+ sortedMalware.sort();
+ Assert.deepEqual(malwareTable, sortedMalware, "malware table has been sorted");
+
+ yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
+ }
+
+ yield* checkPrefSwitch(true, true);
+ yield* checkPrefSwitch(false, true);
+ yield* checkPrefSwitch(true, false);
+ yield* checkPrefSwitch(false, false);
+});