forked from mirrors/gecko-dev
139 lines
4.5 KiB
JavaScript
139 lines
4.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const { TelemetryTestUtils } = ChromeUtils.import(
|
|
"resource://testing-common/TelemetryTestUtils.jsm"
|
|
);
|
|
|
|
ChromeUtils.defineModuleGetter(
|
|
this,
|
|
"BrowserGlue",
|
|
"resource:///modules/BrowserGlue.jsm"
|
|
);
|
|
|
|
const PREF_DFPI_ENABLED_BY_DEFAULT =
|
|
"privacy.restrict3rdpartystorage.rollout.enabledByDefault";
|
|
const COOKIE_BEHAVIOR_PREF = "network.cookie.cookieBehavior";
|
|
|
|
const defaultPrefs = Services.prefs.getDefaultBranch("");
|
|
const previousDefaultCB = defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF);
|
|
|
|
function cleanup() {
|
|
[COOKIE_BEHAVIOR_PREF, PREF_DFPI_ENABLED_BY_DEFAULT].forEach(
|
|
Services.prefs.clearUserPref
|
|
);
|
|
|
|
BrowserGlue._defaultCookieBehaviorAtStartup = previousDefaultCB;
|
|
defaultPrefs.setIntPref(COOKIE_BEHAVIOR_PREF, previousDefaultCB);
|
|
}
|
|
|
|
// Tests that the dFPI rollout pref updates the default cookieBehavior to 5,
|
|
// sets the correct search prefs and records telemetry.
|
|
add_task(async function testdFPIRolloutPref() {
|
|
// The BrowserGlue code which computes this flag runs before we can set the
|
|
// default cookie behavior for this test. Thus we need to overwrite it in
|
|
// order for the opt-out to work correctly.
|
|
BrowserGlue._defaultCookieBehaviorAtStartup =
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER;
|
|
defaultPrefs.setIntPref(
|
|
COOKIE_BEHAVIOR_PREF,
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER
|
|
);
|
|
|
|
Services.prefs.setBoolPref(PREF_DFPI_ENABLED_BY_DEFAULT, false);
|
|
is(
|
|
defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER
|
|
);
|
|
|
|
Services.prefs.setBoolPref(PREF_DFPI_ENABLED_BY_DEFAULT, true);
|
|
is(
|
|
defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN
|
|
);
|
|
|
|
Services.prefs.setBoolPref(PREF_DFPI_ENABLED_BY_DEFAULT, false);
|
|
is(
|
|
defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER
|
|
);
|
|
|
|
Services.prefs.setBoolPref(PREF_DFPI_ENABLED_BY_DEFAULT, true);
|
|
is(
|
|
defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN
|
|
);
|
|
|
|
cleanup();
|
|
});
|
|
|
|
/**
|
|
* Setting the rollout pref to false should revert to the initial default cookie
|
|
* behavior, not always BEHAVIOR_REJECT_TRACKER.
|
|
*/
|
|
add_task(async function testdFPIRolloutPrefNonDefaultCookieBehavior() {
|
|
BrowserGlue._defaultCookieBehaviorAtStartup =
|
|
Ci.nsICookieService.BEHAVIOR_ACCEPT;
|
|
defaultPrefs.setIntPref(
|
|
COOKIE_BEHAVIOR_PREF,
|
|
Ci.nsICookieService.BEHAVIOR_ACCEPT
|
|
);
|
|
|
|
is(
|
|
Services.prefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_ACCEPT,
|
|
"Initial cookie behavior should be BEHAVIOR_ACCEPT"
|
|
);
|
|
|
|
Services.prefs.setBoolPref(PREF_DFPI_ENABLED_BY_DEFAULT, true);
|
|
is(
|
|
defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN,
|
|
"Default cookie behavior should be set to dFPI."
|
|
);
|
|
|
|
Services.prefs.setBoolPref(PREF_DFPI_ENABLED_BY_DEFAULT, false);
|
|
is(
|
|
defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_ACCEPT,
|
|
"Default cookie behavior should be set to BEHAVIOR_ACCEPT."
|
|
);
|
|
|
|
cleanup();
|
|
});
|
|
|
|
/**
|
|
* When a client already ships with dFPI enabled, toggling the rollout pref
|
|
* should not change cookie behavior.
|
|
*/
|
|
add_task(async function testdFPIRolloutPrefDFPIAlreadyEnabled() {
|
|
// Simulate TCP enabled by default.
|
|
BrowserGlue._defaultCookieBehaviorAtStartup =
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN;
|
|
defaultPrefs.setIntPref(
|
|
COOKIE_BEHAVIOR_PREF,
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN
|
|
);
|
|
|
|
is(
|
|
Services.prefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN,
|
|
"Initial cookie behavior should be BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN"
|
|
);
|
|
|
|
Services.prefs.setBoolPref(PREF_DFPI_ENABLED_BY_DEFAULT, true);
|
|
is(
|
|
defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN,
|
|
"Default cookie behavior should still be BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN."
|
|
);
|
|
|
|
Services.prefs.setBoolPref(PREF_DFPI_ENABLED_BY_DEFAULT, false);
|
|
is(
|
|
defaultPrefs.getIntPref(COOKIE_BEHAVIOR_PREF),
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN,
|
|
"Default cookie behavior should still be BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN."
|
|
);
|
|
|
|
cleanup();
|
|
});
|