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