summaryrefslogtreecommitdiffstats
path: root/toolkit/components/antitracking/bouncetrackingprotection/test/browser/browser_bouncetracking_oa_isolation.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/antitracking/bouncetrackingprotection/test/browser/browser_bouncetracking_oa_isolation.js')
-rw-r--r--toolkit/components/antitracking/bouncetrackingprotection/test/browser/browser_bouncetracking_oa_isolation.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/toolkit/components/antitracking/bouncetrackingprotection/test/browser/browser_bouncetracking_oa_isolation.js b/toolkit/components/antitracking/bouncetrackingprotection/test/browser/browser_bouncetracking_oa_isolation.js
new file mode 100644
index 0000000000..12c2c943dd
--- /dev/null
+++ b/toolkit/components/antitracking/bouncetrackingprotection/test/browser/browser_bouncetracking_oa_isolation.js
@@ -0,0 +1,73 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_setup(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["privacy.bounceTrackingProtection.requireStatefulBounces", true],
+ ["privacy.bounceTrackingProtection.bounceTrackingGracePeriodSec", 0],
+ ],
+ });
+});
+
+// Tests that bounces in PBM don't affect state in normal browsing.
+add_task(async function test_pbm_data_isolated() {
+ await runTestBounce({
+ bounceType: "client",
+ setState: "cookie-client",
+ originAttributes: { privateBrowsingId: 1 },
+ postBounceCallback: () => {
+ // After the PBM bounce assert that we haven't recorded any data for normal browsing.
+ Assert.equal(
+ bounceTrackingProtection.testGetBounceTrackerCandidateHosts({}).length,
+ 0,
+ "No bounce tracker candidates for normal browsing."
+ );
+ Assert.equal(
+ bounceTrackingProtection.testGetUserActivationHosts({}).length,
+ 0,
+ "No user activations for normal browsing."
+ );
+ },
+ });
+});
+
+// Tests that bounces in PBM don't affect state in normal browsing.
+add_task(async function test_containers_isolated() {
+ await runTestBounce({
+ bounceType: "server",
+ setState: "cookie-server",
+ originAttributes: { userContextId: 2 },
+ postBounceCallback: () => {
+ // After the bounce in the container tab assert that we haven't recorded any data for normal browsing.
+ Assert.equal(
+ bounceTrackingProtection.testGetBounceTrackerCandidateHosts({}).length,
+ 0,
+ "No bounce tracker candidates for normal browsing."
+ );
+ Assert.equal(
+ bounceTrackingProtection.testGetUserActivationHosts({}).length,
+ 0,
+ "No user activations for normal browsing."
+ );
+
+ // Or in another container tab.
+ Assert.equal(
+ bounceTrackingProtection.testGetBounceTrackerCandidateHosts({
+ userContextId: 1,
+ }).length,
+ 0,
+ "No bounce tracker candidates for container tab 1."
+ );
+ Assert.equal(
+ bounceTrackingProtection.testGetUserActivationHosts({
+ userContextId: 1,
+ }).length,
+ 0,
+ "No user activations for container tab 1."
+ );
+ },
+ });
+});