mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
   http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
const TOPIC_BROWSERGLUE_TEST = "browser-glue-test";
 | 
						|
const TOPICDATA_BROWSERGLUE_TEST = "force-ui-migration";
 | 
						|
const UI_VERSION = 138;
 | 
						|
 | 
						|
const gBrowserGlue = Cc["@mozilla.org/browser/browserglue;1"].getService(
 | 
						|
  Ci.nsIObserver
 | 
						|
);
 | 
						|
 | 
						|
function checkConstraint(state, origin, type) {
 | 
						|
  Assert.equal(
 | 
						|
    state,
 | 
						|
    Services.perms.testExactPermissionFromPrincipal(
 | 
						|
      Services.scriptSecurityManager.createContentPrincipalFromOrigin(origin),
 | 
						|
      type
 | 
						|
    ),
 | 
						|
    `${origin} of type ${type} was set to: ${state}`
 | 
						|
  );
 | 
						|
}
 | 
						|
 | 
						|
// Test to check if migration resets default permissions properly.
 | 
						|
add_task(async function test_resettingDefaults() {
 | 
						|
  registerCleanupFunction(() => {
 | 
						|
    Services.prefs.clearUserPref("browser.migration.version");
 | 
						|
    Services.perms.removeAll();
 | 
						|
  });
 | 
						|
 | 
						|
  Services.perms.removeAll();
 | 
						|
  Services.prefs.setIntPref("browser.migration.version", UI_VERSION);
 | 
						|
 | 
						|
  let pm = Services.perms;
 | 
						|
 | 
						|
  // Origin infos for default permissions in the format [origin, type].
 | 
						|
  let originInfos = [
 | 
						|
    ["https://www.mozilla.org", "uitour"],
 | 
						|
    ["https://support.mozilla.org", "uitour"],
 | 
						|
    ["about:home", "uitour"],
 | 
						|
    ["about:newtab", "uitour"],
 | 
						|
    ["https://addons.mozilla.org", "install"],
 | 
						|
    ["https://support.mozilla.org", "remote-troubleshooting"],
 | 
						|
    ["about:welcome", "autoplay-media"],
 | 
						|
  ];
 | 
						|
 | 
						|
  // Override all default permissions.
 | 
						|
  for (let originInfo of originInfos) {
 | 
						|
    pm.addFromPrincipal(
 | 
						|
      Services.scriptSecurityManager.createContentPrincipalFromOrigin(
 | 
						|
        originInfo[0]
 | 
						|
      ),
 | 
						|
      originInfo[1],
 | 
						|
      pm.UNKNOWN_ACTION
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  // Check if the default permissions were set to UNKNOWN_ACTION.
 | 
						|
  for (let originInfo of originInfos) {
 | 
						|
    checkConstraint(pm.UNKNOWN_ACTION, originInfo[0], originInfo[1]);
 | 
						|
  }
 | 
						|
 | 
						|
  // Simulate a migration.
 | 
						|
  gBrowserGlue.observe(
 | 
						|
    null,
 | 
						|
    TOPIC_BROWSERGLUE_TEST,
 | 
						|
    TOPICDATA_BROWSERGLUE_TEST
 | 
						|
  );
 | 
						|
 | 
						|
  // Check if the default permissions were reset.
 | 
						|
  for (let originInfo of originInfos) {
 | 
						|
    checkConstraint(pm.ALLOW_ACTION, originInfo[0], originInfo[1]);
 | 
						|
  }
 | 
						|
});
 | 
						|
 | 
						|
// Test to check if user set permissions don't get
 | 
						|
// reset during migration.
 | 
						|
add_task(async function test_resettingDenyAction() {
 | 
						|
  registerCleanupFunction(() => {
 | 
						|
    Services.prefs.clearUserPref("browser.migration.version");
 | 
						|
    Services.perms.removeAll();
 | 
						|
  });
 | 
						|
 | 
						|
  Services.perms.removeAll();
 | 
						|
  Services.prefs.setIntPref("browser.migration.version", UI_VERSION);
 | 
						|
 | 
						|
  let pm = Services.perms;
 | 
						|
  // Reset one default perm to DENY_ACTION.
 | 
						|
  const origin = "https://www.mozilla.org";
 | 
						|
  const type = "uitour";
 | 
						|
 | 
						|
  pm.addFromPrincipal(
 | 
						|
    Services.scriptSecurityManager.createContentPrincipalFromOrigin(origin),
 | 
						|
    type,
 | 
						|
    pm.DENY_ACTION
 | 
						|
  );
 | 
						|
 | 
						|
  // Check if permission was set correctly.
 | 
						|
  checkConstraint(pm.DENY_ACTION, origin, type);
 | 
						|
 | 
						|
  // Simulate a migration.
 | 
						|
  gBrowserGlue.observe(
 | 
						|
    null,
 | 
						|
    TOPIC_BROWSERGLUE_TEST,
 | 
						|
    TOPICDATA_BROWSERGLUE_TEST
 | 
						|
  );
 | 
						|
 | 
						|
  // We expect the permission to remain unchanged.
 | 
						|
  checkConstraint(pm.DENY_ACTION, origin, type);
 | 
						|
});
 |