fune/browser/base/content/test/plugins/browser_CTP_remove_navigate.js
Benjamin Smedberg 264330b206 Bug 1377036 tests - fix tests to set correct prefs for infobar tests, r=felipe
MozReview-Commit-ID: FMCP2Vecl3F

--HG--
extra : rebase_source : 75c5795d1ac9103170f6742a57c006da3257ee17
2017-06-29 15:33:17 -07:00

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.");
});