summaryrefslogtreecommitdiffstats
path: root/toolkit/components/cleardata/tests/unit/test_cookie_banner_handling.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/cleardata/tests/unit/test_cookie_banner_handling.js')
-rw-r--r--toolkit/components/cleardata/tests/unit/test_cookie_banner_handling.js328
1 files changed, 328 insertions, 0 deletions
diff --git a/toolkit/components/cleardata/tests/unit/test_cookie_banner_handling.js b/toolkit/components/cleardata/tests/unit/test_cookie_banner_handling.js
new file mode 100644
index 0000000000..036f97e7ca
--- /dev/null
+++ b/toolkit/components/cleardata/tests/unit/test_cookie_banner_handling.js
@@ -0,0 +1,328 @@
+/* Any copyright is dedicated to the Public Domain.
+http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+do_get_profile();
+
+add_setup(_ => {
+ // Init cookieBannerService and pretend we opened a profile.
+ let cbs = Cc["@mozilla.org/cookie-banner-service;1"].getService(
+ Ci.nsIObserver
+ );
+ cbs.observe(null, "profile-after-change", null);
+});
+
+add_task(async function test_delete_exception() {
+ info("Enabling cookie banner service with MODE_REJECT");
+ Services.prefs.setIntPref(
+ "cookiebanners.service.mode",
+ Ci.nsICookieBannerService.MODE_REJECT
+ );
+
+ // Test nsIClearDataService.deleteDataFromHost
+ info("Adding an exception for example.com");
+ let uri = Services.io.newURI("https://example.com");
+
+ Services.cookieBanners.setDomainPref(
+ uri,
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ false
+ );
+
+ info("Verify that the exception is properly added");
+ Assert.equal(
+ Services.cookieBanners.getDomainPref(uri, false),
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ "The exception is properly set."
+ );
+
+ info("Trigger the deleteDataFromHost");
+ await new Promise(resolve => {
+ Services.clearData.deleteDataFromHost(
+ "example.com",
+ true /* user request */,
+ Ci.nsIClearDataService.CLEAR_COOKIE_BANNER_EXCEPTION,
+ _ => {
+ resolve();
+ }
+ );
+ });
+
+ info("Verify that the exception is deleted");
+ Assert.equal(
+ Services.cookieBanners.getDomainPref(uri, false),
+ Ci.nsICookieBannerService.MODE_UNSET,
+ "The exception is properly cleared."
+ );
+
+ // Test nsIClearDataService.deleteDataFromBaseDomain
+ info("Adding an exception for example.com");
+ Services.cookieBanners.setDomainPref(
+ uri,
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ false
+ );
+
+ info("Verify that the exception is properly added");
+ Assert.equal(
+ Services.cookieBanners.getDomainPref(uri, false),
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ "The exception is properly set."
+ );
+
+ info("Trigger the deleteDataFromBaseDomain");
+ await new Promise(resolve => {
+ Services.clearData.deleteDataFromBaseDomain(
+ "example.com",
+ true /* user request */,
+ Ci.nsIClearDataService.CLEAR_COOKIE_BANNER_EXCEPTION,
+ _ => {
+ resolve();
+ }
+ );
+ });
+
+ info("Verify that the exception is deleted");
+ Assert.equal(
+ Services.cookieBanners.getDomainPref(uri, false),
+ Ci.nsICookieBannerService.MODE_UNSET,
+ "The exception is properly cleared."
+ );
+
+ // Test nsIClearDataService.deleteDataFromPrincipal
+ info("Adding an exception for example.com");
+ Services.cookieBanners.setDomainPref(
+ uri,
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ false
+ );
+
+ info("Verify that the exception is properly added");
+ Assert.equal(
+ Services.cookieBanners.getDomainPref(uri, false),
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ "The exception is properly set."
+ );
+
+ info("Trigger the deleteDataFromPrincipal");
+ let principal = Services.scriptSecurityManager.createContentPrincipal(
+ uri,
+ {}
+ );
+ await new Promise(resolve => {
+ Services.clearData.deleteDataFromPrincipal(
+ principal,
+ true /* user request */,
+ Ci.nsIClearDataService.CLEAR_COOKIE_BANNER_EXCEPTION,
+ _ => {
+ resolve();
+ }
+ );
+ });
+
+ info("Verify that the exception is deleted");
+ Assert.equal(
+ Services.cookieBanners.getDomainPref(uri, false),
+ Ci.nsICookieBannerService.MODE_UNSET,
+ "The exception is properly cleared."
+ );
+
+ // Test nsIClearDataService.deleteData
+ info("Adding an exception for example.com");
+ Services.cookieBanners.setDomainPref(
+ uri,
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ false
+ );
+
+ info("Verify that the exception is properly added");
+ Assert.equal(
+ Services.cookieBanners.getDomainPref(uri, false),
+ Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
+ "The exception is properly set."
+ );
+
+ info("Trigger the deleteData");
+ await new Promise(resolve => {
+ Services.clearData.deleteData(
+ Ci.nsIClearDataService.CLEAR_COOKIE_BANNER_EXCEPTION,
+ _ => {
+ resolve();
+ }
+ );
+ });
+
+ info("Verify that the exception is deleted");
+ Assert.equal(
+ Services.cookieBanners.getDomainPref(uri, false),
+ Ci.nsICookieBannerService.MODE_UNSET,
+ "The exception is properly cleared."
+ );
+
+ Services.prefs.clearUserPref("cookiebanners.service.mode");
+});
+
+add_task(async function test_delete_executed_record() {
+ info("Enabling cookie banner service with MODE_REJECT");
+ Services.prefs.setIntPref(
+ "cookiebanners.service.mode",
+ Ci.nsICookieBannerService.MODE_REJECT
+ );
+ Services.prefs.setIntPref(
+ "cookiebanners.bannerClicking.maxTriesPerSiteAndSession",
+ 1
+ );
+
+ // Test nsIClearDataService.deleteDataFromHost
+ info("Adding a record for example.com");
+ Services.cookieBanners.markSiteExecuted("example.com", true, false);
+
+ info("Verify that the record is properly added");
+ Assert.ok(
+ Services.cookieBanners.shouldStopBannerClickingForSite(
+ "example.com",
+ true,
+ false
+ ),
+ "The record is properly set."
+ );
+
+ info("Trigger the deleteDataFromHost");
+ await new Promise(resolve => {
+ Services.clearData.deleteDataFromHost(
+ "example.com",
+ true /* user request */,
+ Ci.nsIClearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD,
+ _ => {
+ resolve();
+ }
+ );
+ });
+
+ info("Verify that the exception is deleted");
+ Assert.ok(
+ !Services.cookieBanners.shouldStopBannerClickingForSite(
+ "example.com",
+ true,
+ false
+ ),
+ "The record is properly cleared."
+ );
+
+ // Test nsIClearDataService.deleteDataFromBaseDomain
+ info("Adding a record for example.com");
+ Services.cookieBanners.markSiteExecuted("example.com", true, false);
+
+ info("Verify that the record is properly added");
+ Assert.ok(
+ Services.cookieBanners.shouldStopBannerClickingForSite(
+ "example.com",
+ true,
+ false
+ ),
+ "The record is properly set."
+ );
+
+ info("Trigger the deleteDataFromBaseDomain");
+ await new Promise(resolve => {
+ Services.clearData.deleteDataFromBaseDomain(
+ "example.com",
+ true /* user request */,
+ Ci.nsIClearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD,
+ _ => {
+ resolve();
+ }
+ );
+ });
+
+ info("Verify that the exception is deleted");
+ Assert.ok(
+ !Services.cookieBanners.shouldStopBannerClickingForSite(
+ "example.com",
+ true,
+ false
+ ),
+ "The record is properly cleared."
+ );
+
+ // Test nsIClearDataService.deleteDataFromPrincipal
+ info("Adding a record for example.com");
+ Services.cookieBanners.markSiteExecuted("example.com", true, false);
+
+ info("Verify that the record is properly added");
+ Assert.ok(
+ Services.cookieBanners.shouldStopBannerClickingForSite(
+ "example.com",
+ true,
+ false
+ ),
+ "The record is properly set."
+ );
+
+ info("Trigger the deleteDataFromPrincipal");
+ let uri = Services.io.newURI("https://example.com");
+ let principal = Services.scriptSecurityManager.createContentPrincipal(
+ uri,
+ {}
+ );
+ await new Promise(resolve => {
+ Services.clearData.deleteDataFromPrincipal(
+ principal,
+ true /* user request */,
+ Ci.nsIClearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD,
+ _ => {
+ resolve();
+ }
+ );
+ });
+
+ info("Verify that the exception is deleted");
+ Assert.ok(
+ !Services.cookieBanners.shouldStopBannerClickingForSite(
+ "example.com",
+ true,
+ false
+ ),
+ "The record is properly cleared."
+ );
+
+ // Test nsIClearDataService.deleteData
+ info("Adding a record for example.com");
+ Services.cookieBanners.markSiteExecuted("example.com", true, false);
+
+ info("Verify that the record is properly added");
+ Assert.ok(
+ Services.cookieBanners.shouldStopBannerClickingForSite(
+ "example.com",
+ true,
+ false
+ ),
+ "The record is properly set."
+ );
+
+ info("Trigger the deleteData");
+ await new Promise(resolve => {
+ Services.clearData.deleteData(
+ Ci.nsIClearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD,
+ _ => {
+ resolve();
+ }
+ );
+ });
+
+ info("Verify that the exception is deleted");
+ Assert.ok(
+ !Services.cookieBanners.shouldStopBannerClickingForSite(
+ "example.com",
+ true,
+ false
+ ),
+ "The record is properly cleared."
+ );
+
+ Services.prefs.clearUserPref("cookiebanners.service.mode");
+ Services.prefs.clearUserPref(
+ "cookiebanners.bannerClicking.maxTriesPerSiteAndSession"
+ );
+});