forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			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);
 | |
| });
 | 
