forked from mirrors/gecko-dev
		
	 918ed6c474
			
		
	
	
		918ed6c474
		
	
	
	
	
		
			
			This was done using the following script:
37e3803c7a/processors/chromeutils-import.jsm
MozReview-Commit-ID: 1Nc3XDu0wGl
--HG--
extra : source : 12fc4dee861c812fd2bd032c63ef17af61800c70
extra : intermediate-source : 34c999fa006bffe8705cf50c54708aa21a962e62
extra : histedit_source : b2be2c5e5d226e6c347312456a6ae339c1e634b0
		
	
			
		
			
				
	
	
		
			79 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 | |
| /* vim: set sts=2 sw=2 et tw=80: */
 | |
| "use strict";
 | |
| 
 | |
| ChromeUtils.import("resource:///modules/PageActions.jsm");
 | |
| ChromeUtils.import("resource://testing-common/AddonTestUtils.jsm");
 | |
| 
 | |
| const {
 | |
|   createAppInfo,
 | |
|   promiseShutdownManager,
 | |
|   promiseStartupManager,
 | |
| } = AddonTestUtils;
 | |
| 
 | |
| AddonTestUtils.init(this);
 | |
| AddonTestUtils.overrideCertDB();
 | |
| 
 | |
| createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "58");
 | |
| 
 | |
| // This is copied and pasted from ExtensionPopups.jsm.  It's used as the
 | |
| // PageActions action ID.  See ext-pageAction.js.
 | |
| function makeWidgetId(id) {
 | |
|   id = id.toLowerCase();
 | |
|   // FIXME: This allows for collisions.
 | |
|   return id.replace(/[^a-z0-9_-]/g, "_");
 | |
| }
 | |
| 
 | |
| // Tests that the pinnedToUrlbar property of the PageActions.Action object
 | |
| // backing the extension's page action persists across app restarts.
 | |
| add_task(async function testAppShutdown() {
 | |
|   let extensionData = {
 | |
|     useAddonManager: "permanent",
 | |
|     manifest: {
 | |
|       page_action: {
 | |
|         default_title: "test_ext_pageAction_shutdown.js",
 | |
|         browser_style: false,
 | |
|       },
 | |
|     },
 | |
|   };
 | |
| 
 | |
|   // Simulate starting up the app.
 | |
|   PageActions.init();
 | |
|   await promiseStartupManager();
 | |
| 
 | |
|   let extension = ExtensionTestUtils.loadExtension(extensionData);
 | |
|   await extension.startup();
 | |
| 
 | |
|   // Get the PageAction.Action object.  Its pinnedToUrlbar should have been
 | |
|   // initialized to true in ext-pageAction.js, when it's created.
 | |
|   let actionID = makeWidgetId(extension.id);
 | |
|   let action = PageActions.actionForID(actionID);
 | |
|   Assert.equal(action.pinnedToUrlbar, true);
 | |
| 
 | |
|   // Simulate restarting the app without first unloading the extension.
 | |
|   await promiseShutdownManager();
 | |
|   PageActions._reset();
 | |
|   await promiseStartupManager();
 | |
|   await extension.awaitStartup();
 | |
| 
 | |
|   // Get the action.  Its pinnedToUrlbar should remain true.
 | |
|   action = PageActions.actionForID(actionID);
 | |
|   Assert.equal(action.pinnedToUrlbar, true);
 | |
| 
 | |
|   // Now set its pinnedToUrlbar to false.
 | |
|   action.pinnedToUrlbar = false;
 | |
| 
 | |
|   // Simulate restarting the app again without first unloading the extension.
 | |
|   await promiseShutdownManager();
 | |
|   PageActions._reset();
 | |
|   await promiseStartupManager();
 | |
|   await extension.awaitStartup();
 | |
| 
 | |
|   // Get the action.  Its pinnedToUrlbar should remain false.
 | |
|   action = PageActions.actionForID(actionID);
 | |
|   Assert.equal(action.pinnedToUrlbar, false);
 | |
| 
 | |
|   // Now unload the extension and quit the app.
 | |
|   await extension.unload();
 | |
|   await promiseShutdownManager();
 | |
| });
 |