From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../test/plugins/browser_CTP_remove_navigate.js | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 browser/base/content/test/plugins/browser_CTP_remove_navigate.js (limited to 'browser/base/content/test/plugins/browser_CTP_remove_navigate.js') 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"); +}); -- cgit v1.2.3