Fixing 143178 -- refreshing plugins before going to the plugin finder sevice, r=peterl, sr=beard

git-svn-id: svn://10.0.0.236/trunk@121670 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
av%netscape.com
2002-05-16 20:41:26 +00:00
parent 63cbe3d0ea
commit 1219086da7
2 changed files with 28 additions and 17 deletions

View File

@@ -49,6 +49,7 @@
#include "nsIWebNavigation.h"
#include "nsDOMClassInfo.h"
#include "nsPluginError.h"
#include "nsIComponentRegistrar.h"
static NS_DEFINE_CID(kPluginManagerCID, NS_PLUGINMANAGER_CID);
@@ -175,17 +176,12 @@ PluginArrayImpl::Refresh(PRBool aReloadDocuments)
{
nsresult res = NS_OK;
nsCOMPtr<nsIWebNavigation> webNav = do_QueryInterface(mDocShell);
if (mPluginArray != nsnull) {
for (PRUint32 i = 0; i < mPluginCount; i++)
NS_IF_RELEASE(mPluginArray[i]);
delete[] mPluginArray;
}
mPluginCount = 0;
mPluginArray = nsnull;
// refresh the component registry first, see bug 87913
nsCOMPtr<nsIServiceManager> servManager;
NS_GetServiceManager(getter_AddRefs(servManager));
nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(servManager);
if (registrar)
registrar->AutoRegister(nsnull);
if (!mPluginHost) {
mPluginHost = do_GetService(kPluginManagerCID, &res);
@@ -208,6 +204,18 @@ PluginArrayImpl::Refresh(PRBool aReloadDocuments)
if(pluginsNotChanged)
return res;
nsCOMPtr<nsIWebNavigation> webNav = do_QueryInterface(mDocShell);
if (mPluginArray != nsnull) {
for (PRUint32 i = 0; i < mPluginCount; i++)
NS_IF_RELEASE(mPluginArray[i]);
delete[] mPluginArray;
}
mPluginCount = 0;
mPluginArray = nsnull;
if (mNavigator)
mNavigator->RefreshMIMEArray();