summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/plugins/browser_CTP_remove_navigate.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /browser/base/content/test/plugins/browser_CTP_remove_navigate.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'browser/base/content/test/plugins/browser_CTP_remove_navigate.js')
-rw-r--r--browser/base/content/test/plugins/browser_CTP_remove_navigate.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/browser/base/content/test/plugins/browser_CTP_remove_navigate.js b/browser/base/content/test/plugins/browser_CTP_remove_navigate.js
new file mode 100644
index 000000000..8ee1c5b5a
--- /dev/null
+++ b/browser/base/content/test/plugins/browser_CTP_remove_navigate.js
@@ -0,0 +1,79 @@
+const gTestRoot = getRootDirectory(gTestPath);
+const gHttpTestRoot = gTestRoot.replace("chrome://mochitests/content/",
+ "http://127.0.0.1:8888/");
+
+add_task(function* () {
+ registerCleanupFunction(function () {
+ clearAllPluginPermissions();
+ setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Test Plug-in");
+ setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Second Test Plug-in");
+ Services.prefs.clearUserPref("plugins.click_to_play");
+ Services.prefs.clearUserPref("extensions.blocklist.suppressUI");
+ gBrowser.removeCurrentTab();
+ window.focus();
+ });
+
+ Services.prefs.setBoolPref("plugins.click_to_play", true);
+ Services.prefs.setBoolPref("extensions.blocklist.suppressUI", true);
+ 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(function* () {
+ gBrowser.selectedTab = gBrowser.addTab();
+
+ // Load up a page with a plugin...
+ let notificationPromise = waitForNotificationBar("plugin-hidden", gBrowser.selectedBrowser);
+ yield promiseTabLoadEvent(gBrowser.selectedTab, gHttpTestRoot + "plugin_small.html");
+ yield promiseUpdatePluginBindings(gBrowser.selectedBrowser);
+ yield notificationPromise;
+
+ // Trigger the PluginRemoved event to be fired, and then immediately
+ // browse to a new page.
+ yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () {
+ let plugin = content.document.getElementById("test");
+ plugin.remove();
+ });
+
+ yield 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(function* () {
+ // Load up a page with a plugin...
+ let notificationPromise = waitForNotificationBar("plugin-hidden", gBrowser.selectedBrowser);
+ yield promiseTabLoadEvent(gBrowser.selectedTab, gHttpTestRoot + "plugin_small.html");
+ yield promiseUpdatePluginBindings(gBrowser.selectedBrowser);
+ yield notificationPromise;
+
+ // Trigger the PluginRemoved event to be fired, and then immediately
+ // browse to a new page.
+ yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () {
+ let plugin = content.document.getElementById("test");
+ plugin.remove();
+ });
+});
+
+add_task(function* () {
+ yield promiseTabLoadEvent(gBrowser.selectedTab, gHttpTestRoot + "plugin_small_2.html");
+ let notification = yield waitForNotificationBar("plugin-hidden", gBrowser.selectedBrowser);
+ ok(notification, "There should be a notification shown for the new page.");
+ // Ensure that the notification is showing information about
+ // the x-second-test plugin.
+ let label = notification.label;
+ ok(label.includes("Second Test"), "Should mention the second plugin");
+});