diff -Naur mozilla-1.9.2/browser/base/content/browser.js mozilla-1.9.2-magellan/browser/base/content/browser.js --- mozilla-1.9.2/browser/base/content/browser.js 2010-04-02 18:03:19.000000000 +0200 +++ mozilla-1.9.2-magellan/browser/base/content/browser.js 2010-06-07 16:42:16.000000000 +0200 @@ -5946,12 +5946,20 @@ var pluginInfo = getPluginInfo(aEvent.target); missingPluginsArray[pluginInfo.mimetype] = pluginInfo; + gBrowser.selectedBrowser.addEventListener("NewPluginInstalled", + gMissingPluginInstaller.refreshBrowser, + false); + if (missingPluginsArray) { window.openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul", "PFSWindow", "chrome,centerscreen,resizable=yes", {plugins: missingPluginsArray, browser: gBrowser.selectedBrowser}); } + gBrowser.selectedBrowser.removeEventListener("NewPluginInstalled", + gMissingPluginInstaller.refreshBrowser, + false); + aEvent.stopPropagation(); } @@ -6028,11 +6036,17 @@ function showPluginsMissing() { // get the urls of missing plugins var missingPluginsArray = gBrowser.selectedBrowser.missingPlugins; + gBrowser.selectedBrowser.addEventListener("NewPluginInstalled", + gMissingPluginInstaller.refreshBrowser, + false); if (missingPluginsArray) { window.openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul", "PFSWindow", "chrome,centerscreen,resizable=yes", {plugins: missingPluginsArray, browser: gBrowser.selectedBrowser}); } + gBrowser.selectedBrowser.removeEventListener("NewPluginInstalled", + gMissingPluginInstaller.refreshBrowser, + false); } if (aEvent.type == "PluginBlocklisted") { @@ -6121,6 +6135,13 @@ notificationBox.removeNotification(notification); } // reload the browser to make the new plugin show. + + // reload plugins + var pm = Components.classes["@mozilla.org/plugin/manager;1"] + .getService(Components.interfaces.nsIPluginManager); + pm.reloadPlugins(false); + + // ... and reload the browser to activate new plugins available browser.reload(); }