forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			124 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
/* Any copyright is dedicated to the Public Domain.
 | 
						|
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
const COOKIE_BEHAVIOR_PREF = "network.cookie.cookieBehavior";
 | 
						|
const COOKIE_BEHAVIOR_PBM_PREF = "network.cookie.cookieBehavior.pbmode";
 | 
						|
 | 
						|
const CB_STRICT_FEATURES_PREF = "browser.contentblocking.features.strict";
 | 
						|
const FPI_PREF = "privacy.firstparty.isolate";
 | 
						|
 | 
						|
async function testCookieBlockingInfoStandard(
 | 
						|
  cookieBehavior,
 | 
						|
  cookieBehaviorPBM,
 | 
						|
  isShown
 | 
						|
) {
 | 
						|
  let defaults = Services.prefs.getDefaultBranch("");
 | 
						|
  defaults.setIntPref(COOKIE_BEHAVIOR_PREF, cookieBehavior);
 | 
						|
  defaults.setIntPref(COOKIE_BEHAVIOR_PBM_PREF, cookieBehaviorPBM);
 | 
						|
 | 
						|
  await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
 | 
						|
 | 
						|
  let doc = gBrowser.contentDocument;
 | 
						|
 | 
						|
  // Select standard mode.
 | 
						|
  let standardRadioOption = doc.getElementById("standardRadio");
 | 
						|
  standardRadioOption.click();
 | 
						|
 | 
						|
  // Check the cookie blocking info for private windows for standard mode.
 | 
						|
  let elts = doc.querySelectorAll(
 | 
						|
    "#contentBlockingOptionStandard .extra-information-label.all-third-party-cookies-private-windows-option"
 | 
						|
  );
 | 
						|
  for (let elt of elts) {
 | 
						|
    is(
 | 
						|
      elt.hidden,
 | 
						|
      !isShown,
 | 
						|
      `The visibility of cookie blocking info for standard mode is correct`
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  gBrowser.removeCurrentTab();
 | 
						|
}
 | 
						|
 | 
						|
async function testCookieBlockingInfoStrict(
 | 
						|
  contentBlockingStrictFeatures,
 | 
						|
  isShown
 | 
						|
) {
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [
 | 
						|
      [CB_STRICT_FEATURES_PREF, contentBlockingStrictFeatures],
 | 
						|
      [FPI_PREF, false],
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
 | 
						|
 | 
						|
  let doc = gBrowser.contentDocument;
 | 
						|
 | 
						|
  // Select strict mode.
 | 
						|
  let strictRadioOption = doc.getElementById("strictRadio");
 | 
						|
  strictRadioOption.click();
 | 
						|
 | 
						|
  // Check the cookie blocking info for private windows for strict mode.
 | 
						|
  let elts = doc.querySelectorAll(
 | 
						|
    "#contentBlockingOptionStrict .extra-information-label.all-third-party-cookies-private-windows-option"
 | 
						|
  );
 | 
						|
  for (let elt of elts) {
 | 
						|
    is(
 | 
						|
      elt.hidden,
 | 
						|
      !isShown,
 | 
						|
      `The cookie blocking info is hidden for strict mode`
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  gBrowser.removeCurrentTab();
 | 
						|
}
 | 
						|
 | 
						|
add_task(async function runTests() {
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [[FPI_PREF, false]],
 | 
						|
  });
 | 
						|
 | 
						|
  let defaults = Services.prefs.getDefaultBranch("");
 | 
						|
  let originalCookieBehavior = defaults.getIntPref(COOKIE_BEHAVIOR_PREF);
 | 
						|
  let originalCookieBehaviorPBM = defaults.getIntPref(COOKIE_BEHAVIOR_PBM_PREF);
 | 
						|
 | 
						|
  // Test if the cookie blocking info for state partitioning in PBM is
 | 
						|
  // shown in standard mode if the regular cookieBehavior is
 | 
						|
  // BEHAVIOR_REJECT_TRACKER and the private cookieBehavior is
 | 
						|
  // BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN
 | 
						|
  await testCookieBlockingInfoStandard(
 | 
						|
    Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER,
 | 
						|
    Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN,
 | 
						|
    true
 | 
						|
  );
 | 
						|
 | 
						|
  // Test if the cookie blocking info is hidden in standard mode if both
 | 
						|
  // cookieBehaviors are the same.
 | 
						|
  await testCookieBlockingInfoStandard(
 | 
						|
    Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN,
 | 
						|
    Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN,
 | 
						|
    false
 | 
						|
  );
 | 
						|
 | 
						|
  // Test if the cookie blocking info is hidden for strict mode if
 | 
						|
  // cookieBehaviors both are BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN in
 | 
						|
  // the strict feature value.
 | 
						|
  await testCookieBlockingInfoStrict(
 | 
						|
    "tp,tpPrivate,cookieBehavior5,cookieBehaviorPBM5,cm,fp,stp,lvl2,rp,ocsp",
 | 
						|
    false
 | 
						|
  );
 | 
						|
 | 
						|
  // Test if the cookie blocking info is shown for strict mode if the regular
 | 
						|
  // cookieBehavior is BEHAVIOR_REJECT_TRACKER and the private cookieBehavior is
 | 
						|
  // BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN
 | 
						|
  await testCookieBlockingInfoStrict(
 | 
						|
    "tp,tpPrivate,cookieBehavior4,cookieBehaviorPBM5,cm,fp,stp,lvl2,rp,ocsp",
 | 
						|
    true
 | 
						|
  );
 | 
						|
 | 
						|
  defaults.setIntPref(COOKIE_BEHAVIOR_PREF, originalCookieBehavior);
 | 
						|
  defaults.setIntPref(COOKIE_BEHAVIOR_PBM_PREF, originalCookieBehaviorPBM);
 | 
						|
  await SpecialPowers.popPrefEnv();
 | 
						|
});
 |