summaryrefslogtreecommitdiffstats
path: root/toolkit/components/cookiebanners/test/browser/browser_bannerClicking_domainPref.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/cookiebanners/test/browser/browser_bannerClicking_domainPref.js')
-rw-r--r--toolkit/components/cookiebanners/test/browser/browser_bannerClicking_domainPref.js166
1 files changed, 166 insertions, 0 deletions
diff --git a/toolkit/components/cookiebanners/test/browser/browser_bannerClicking_domainPref.js b/toolkit/components/cookiebanners/test/browser/browser_bannerClicking_domainPref.js
new file mode 100644
index 0000000000..ff9b725710
--- /dev/null
+++ b/toolkit/components/cookiebanners/test/browser/browser_bannerClicking_domainPref.js
@@ -0,0 +1,166 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_setup(clickTestSetup);
+
+/**
+ * Test that domain preference takes precedence over pref settings.
+ */
+add_task(async function test_domain_preference() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["cookiebanners.service.mode", Ci.nsICookieBannerService.MODE_REJECT],
+ [
+ "cookiebanners.service.mode.privateBrowsing",
+ Ci.nsICookieBannerService.MODE_REJECT,
+ ],
+ ],
+ });
+
+ insertTestClickRules();
+
+ for (let testPBM of [false, true]) {
+ let testWin = window;
+ if (testPBM) {
+ testWin = await BrowserTestUtils.openNewBrowserWindow({
+ private: true,
+ });
+ }
+
+ await testClickResultTelemetry({});
+
+ info(
+ "Make sure the example.org follows the pref setting when there is no domain preference."
+ );
+ await openPageAndVerify({
+ win: testWin,
+ domain: TEST_DOMAIN_B,
+ testURL: TEST_PAGE_B,
+ visible: true,
+ expected: "NoClick",
+ });
+
+ await testClickResultTelemetry(
+ {
+ fail: 1,
+ fail_no_rule_for_mode: 1,
+ },
+ false
+ );
+
+ info("Set the domain preference of example.org to MODE_REJECT_OR_ACCEPT");
+ let uri = Services.io.newURI(TEST_ORIGIN_B);
+ Services.cookieBanners.setDomainPref(
+ uri,
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ testPBM
+ );
+
+ info(
+ "Verify if domain preference takes precedence over then the pref setting for example.org"
+ );
+ await openPageAndVerify({
+ win: testWin,
+ domain: TEST_DOMAIN_B,
+ testURL: TEST_PAGE_B,
+ visible: false,
+ expected: "OptIn",
+ });
+
+ Services.cookieBanners.removeAllDomainPrefs(testPBM);
+
+ if (testPBM) {
+ await BrowserTestUtils.closeWindow(testWin);
+ }
+
+ await testClickResultTelemetry({
+ fail: 1,
+ fail_no_rule_for_mode: 1,
+ success: 1,
+ success_dom_content_loaded: 1,
+ });
+ }
+});
+
+/**
+ * Test that domain preference works on the top-level domain.
+ */
+add_task(async function test_domain_preference_iframe() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["cookiebanners.service.mode", Ci.nsICookieBannerService.MODE_REJECT],
+ [
+ "cookiebanners.service.mode.privateBrowsing",
+ Ci.nsICookieBannerService.MODE_REJECT,
+ ],
+ ],
+ });
+
+ insertTestClickRules();
+
+ await testClickResultTelemetry({});
+
+ for (let testPBM of [false, true]) {
+ let testWin = window;
+ if (testPBM) {
+ testWin = await BrowserTestUtils.openNewBrowserWindow({
+ private: true,
+ });
+ }
+
+ info(
+ "Make sure the example.org follows the pref setting when there is no domain preference for the top-level example.net."
+ );
+ await openIframeAndVerify({
+ win: testWin,
+ domain: TEST_DOMAIN_B,
+ testURL: TEST_PAGE_B,
+ visible: true,
+ expected: "NoClick",
+ });
+
+ await testClickResultTelemetry(
+ {
+ fail: 1,
+ fail_no_rule_for_mode: 1,
+ },
+ false
+ );
+
+ info(
+ "Set the domain preference of the top-level domain to MODE_REJECT_OR_ACCEPT"
+ );
+ let uri = Services.io.newURI(TEST_ORIGIN_C);
+ Services.cookieBanners.setDomainPref(
+ uri,
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ testPBM
+ );
+
+ info(
+ "Verify if domain preference takes precedence over then the pref setting for top-level example.net"
+ );
+ await openIframeAndVerify({
+ win: testWin,
+ domain: TEST_DOMAIN_B,
+ testURL: TEST_PAGE_B,
+ visible: false,
+ expected: "OptIn",
+ });
+
+ Services.cookieBanners.removeAllDomainPrefs(testPBM);
+
+ if (testPBM) {
+ await BrowserTestUtils.closeWindow(testWin);
+ }
+
+ await testClickResultTelemetry({
+ fail: 1,
+ fail_no_rule_for_mode: 1,
+ success: 1,
+ success_dom_content_loaded: 1,
+ });
+ }
+});