forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			77 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Set some prefs that apply to all the tests in this file
 | |
| add_setup(async function() {
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [
 | |
|       // We don't have pre-pinned certificates for the local mochitest server
 | |
|       ["extensions.install.requireBuiltInCerts", false],
 | |
|       ["extensions.update.requireBuiltInCerts", false],
 | |
| 
 | |
|       // Don't require the extensions to be signed
 | |
|       ["xpinstall.signatures.required", false],
 | |
| 
 | |
|       // Point updates to the local mochitest server
 | |
|       ["extensions.update.url", `${BASE}/browser_webext_update.json`],
 | |
|     ],
 | |
|   });
 | |
| });
 | |
| 
 | |
| // Helper to test that an update of a given extension does not
 | |
| // generate any permission prompts.
 | |
| async function testUpdateNoPrompt(
 | |
|   filename,
 | |
|   id,
 | |
|   initialVersion = "1.0",
 | |
|   updateVersion = "2.0"
 | |
| ) {
 | |
|   // Navigate away to ensure that BrowserOpenAddonMgr() opens a new tab
 | |
|   BrowserTestUtils.loadURI(gBrowser.selectedBrowser, "about:mozilla");
 | |
|   await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
 | |
| 
 | |
|   // Install initial version of the test extension
 | |
|   let addon = await promiseInstallAddon(`${BASE}/${filename}`);
 | |
|   ok(addon, "Addon was installed");
 | |
|   is(addon.version, initialVersion, "Version 1 of the addon is installed");
 | |
| 
 | |
|   // Go to Extensions in about:addons
 | |
|   let win = await BrowserOpenAddonsMgr("addons://list/extension");
 | |
| 
 | |
|   await waitAboutAddonsViewLoaded(win.document);
 | |
| 
 | |
|   let sawPopup = false;
 | |
|   function popupListener() {
 | |
|     sawPopup = true;
 | |
|   }
 | |
|   PopupNotifications.panel.addEventListener("popupshown", popupListener);
 | |
| 
 | |
|   // Trigger an update check, we should see the update get applied
 | |
|   let updatePromise = waitForUpdate(addon);
 | |
|   triggerPageOptionsAction(win, "check-for-updates");
 | |
|   await updatePromise;
 | |
| 
 | |
|   addon = await AddonManager.getAddonByID(id);
 | |
|   is(addon.version, updateVersion, "Should have upgraded");
 | |
| 
 | |
|   ok(!sawPopup, "Should not have seen a permission notification");
 | |
|   PopupNotifications.panel.removeEventListener("popupshown", popupListener);
 | |
| 
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
|   await addon.uninstall();
 | |
| }
 | |
| 
 | |
| // Test that we don't see a prompt when no new promptable permissions
 | |
| // are added.
 | |
| add_task(() =>
 | |
|   testUpdateNoPrompt(
 | |
|     "browser_webext_update_perms1.xpi",
 | |
|     "update_perms@tests.mozilla.org"
 | |
|   )
 | |
| );
 | |
| 
 | |
| // Test that an update that narrows origin permissions is just applied without
 | |
| // showing a notification promt
 | |
| add_task(() =>
 | |
|   testUpdateNoPrompt(
 | |
|     "browser_webext_update_origins1.xpi",
 | |
|     "update_origins@tests.mozilla.org"
 | |
|   )
 | |
| );
 | 
