forked from mirrors/gecko-dev
		
	 264330b206
			
		
	
	
		264330b206
		
	
	
	
	
		
			
			MozReview-Commit-ID: FMCP2Vecl3F --HG-- extra : rebase_source : 75c5795d1ac9103170f6742a57c006da3257ee17
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const gTestRoot = getRootDirectory(gTestPath);
 | |
| const gHttpTestRoot = gTestRoot.replace("chrome://mochitests/content/",
 | |
|                                         "http://127.0.0.1:8888/");
 | |
| 
 | |
| add_task(async function() {
 | |
|   await SpecialPowers.pushPrefEnv({ set: [
 | |
|     ["plugins.click_to_play", true],
 | |
|     ["extensions.blocklist.suppressUI", true],
 | |
|     ["plugins.show_infobar", true],
 | |
|   ]});
 | |
|   registerCleanupFunction(function() {
 | |
|     clearAllPluginPermissions();
 | |
|     setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Test Plug-in");
 | |
|     setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Second Test Plug-in");
 | |
|     gBrowser.removeCurrentTab();
 | |
|     window.focus();
 | |
|   });
 | |
| 
 | |
|   setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY, "Test Plug-in");
 | |
|   setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY, "Second Test Plug-in");
 | |
| });
 | |
| 
 | |
| /**
 | |
|  * Tests that if a plugin is removed just as we transition to
 | |
|  * a different page, that we don't show the hidden plugin
 | |
|  * notification bar on the new page.
 | |
|  */
 | |
| add_task(async function() {
 | |
|   gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
 | |
| 
 | |
|   // Load up a page with a plugin...
 | |
|   let notificationPromise = waitForNotificationBar("plugin-hidden", gBrowser.selectedBrowser);
 | |
|   await promiseTabLoadEvent(gBrowser.selectedTab, gHttpTestRoot + "plugin_small.html");
 | |
|   await promiseUpdatePluginBindings(gBrowser.selectedBrowser);
 | |
|   await notificationPromise;
 | |
| 
 | |
|   // Trigger the PluginRemoved event to be fired, and then immediately
 | |
|   // browse to a new page.
 | |
|   await ContentTask.spawn(gBrowser.selectedBrowser, {}, async function() {
 | |
|     let plugin = content.document.getElementById("test");
 | |
|     plugin.remove();
 | |
|   });
 | |
| 
 | |
|   await promiseTabLoadEvent(gBrowser.selectedTab, "about:mozilla");
 | |
| 
 | |
|   // There should be no hidden plugin notification bar at about:mozilla.
 | |
|   let notificationBox = gBrowser.getNotificationBox(gBrowser.selectedBrowser);
 | |
|   is(notificationBox.getNotificationWithValue("plugin-hidden"), null,
 | |
|      "Expected no notification box");
 | |
| });
 | |
| 
 | |
| /**
 | |
|  * Tests that if a plugin is removed just as we transition to
 | |
|  * a different page with a plugin, that we show the right notification
 | |
|  * for the new page.
 | |
|  */
 | |
| add_task(async function() {
 | |
|   // Load up a page with a plugin...
 | |
|   let notificationPromise = waitForNotificationBar("plugin-hidden", gBrowser.selectedBrowser);
 | |
|   await promiseTabLoadEvent(gBrowser.selectedTab, gHttpTestRoot + "plugin_small.html");
 | |
|   await promiseUpdatePluginBindings(gBrowser.selectedBrowser);
 | |
|   await notificationPromise;
 | |
| 
 | |
|   // Trigger the PluginRemoved event to be fired, and then immediately
 | |
|   // browse to a new page.
 | |
|   await ContentTask.spawn(gBrowser.selectedBrowser, {}, async function() {
 | |
|     let plugin = content.document.getElementById("test");
 | |
|     plugin.remove();
 | |
|   });
 | |
| });
 | |
| 
 | |
| add_task(async function() {
 | |
|   await promiseTabLoadEvent(gBrowser.selectedTab, gHttpTestRoot + "plugin_small_2.html");
 | |
|   let notification = await waitForNotificationBar("plugin-hidden", gBrowser.selectedBrowser);
 | |
|   ok(notification, "There should be a notification shown for the new page.");
 | |
| });
 |