diff --git a/mozilla/modules/plugin/base/src/nsIPluginHost.h b/mozilla/modules/plugin/base/src/nsIPluginHost.h index 867c426826c..de852f82a0f 100644 --- a/mozilla/modules/plugin/base/src/nsIPluginHost.h +++ b/mozilla/modules/plugin/base/src/nsIPluginHost.h @@ -71,6 +71,9 @@ public: NS_IMETHOD GetPlugins(PRUint32 aPluginCount, nsIDOMPlugin* aPluginArray[]) = 0; + + NS_IMETHOD + StopPluginInstance(nsIPluginInstance* aInstance) = 0; }; #endif // nsIPluginHost_h___ diff --git a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp index 5d81c36eba8..fea91519736 100644 --- a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp @@ -86,6 +86,7 @@ nsPluginTag::nsPluginTag() mLibrary = nsnull; mEntryPoint = nsnull; mFlags = NS_PLUGIN_FLAG_ENABLED; + mFileName = nsnull; } inline char* new_str(char* str) @@ -118,6 +119,7 @@ nsPluginTag::nsPluginTag(nsPluginTag* aPluginTag) mLibrary = nsnull; mEntryPoint = nsnull; mFlags = NS_PLUGIN_FLAG_ENABLED; + mFileName = new_str(aPluginTag->mFileName); } nsPluginTag::~nsPluginTag() @@ -168,6 +170,12 @@ nsPluginTag::~nsPluginTag() PR_UnloadLibrary(mLibrary); mLibrary = nsnull; } + + if(nsnull != mFileName) + { + delete [] mFileName; + mFileName = nsnull; + } } class nsPluginStreamInfo : public nsIPluginStreamInfo @@ -1470,10 +1478,9 @@ nsresult nsPluginHostImpl::FindStoppedPluginForURL(nsIURL* aURL, nsIPluginInstan for(i=0; iGetWindow(window); @@ -1487,6 +1494,8 @@ nsresult nsPluginHostImpl::FindStoppedPluginForURL(nsIURL* aURL, nsIPluginInstan instance->SetWindow(window); instance->Start(); + mActivePluginList[i].mStopped = PR_FALSE; + return NS_OK; } } @@ -1507,6 +1516,8 @@ void nsPluginHostImpl::AddInstanceToActiveList(nsIPluginInstance* aInstance, nsI mActivePluginList[mNumActivePlugins].mInstance = aInstance; aInstance->GetPeer(&(mActivePluginList[mNumActivePlugins].mPeer)); + mActivePluginList[mNumActivePlugins].mStopped = PR_FALSE; + ++mNumActivePlugins; } else @@ -1523,6 +1534,7 @@ void nsPluginHostImpl::AddInstanceToActiveList(nsIPluginInstance* aInstance, nsI mActivePluginList[mOldestActivePlugin].mURL = PL_strdup(url); mActivePluginList[mOldestActivePlugin].mInstance = aInstance; aInstance->GetPeer(&(mActivePluginList[mOldestActivePlugin].mPeer)); + mActivePluginList[mOldestActivePlugin].mStopped = PR_FALSE; ++mOldestActivePlugin; if(mOldestActivePlugin == MAX_ACTIVE_PLUGINS) @@ -1727,8 +1739,7 @@ public: NS_METHOD GetFilename(nsString& aFilename) { - // FIXME: need to keep the filename around. - aFilename = mPluginTag.mName; + aFilename = mPluginTag.mFileName; return NS_OK; } @@ -1970,6 +1981,23 @@ NS_IMETHODIMP nsPluginHostImpl::NewPluginURLStream(const nsString& aURL, return rv; } + +NS_IMETHODIMP +nsPluginHostImpl::StopPluginInstance(nsIPluginInstance* aInstance) +{ + PRUint32 i; + for(i=0; iGetCString(); + fileName = PL_strrchr(path, '\\'); + if(fileName) + ++fileName; + versionsize = ::GetFileVersionInfoSize((char*)path, &zerome); if (versionsize > 0) verbuf = (char *)PR_Malloc(versionsize); @@ -300,6 +305,7 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info) info.fMimeTypeArray = MakeStringArray(info.fVariantCount, info.fMimeType); info.fMimeDescriptionArray = MakeStringArray(info.fVariantCount, info.fMimeDescription); info.fExtensionArray = MakeStringArray(info.fVariantCount, info.fExtensions); + info.fFileName = PL_strdup(fileName); } else return NS_ERROR_FAILURE; diff --git a/mozilla/modules/plugin/nglsrc/nsIPluginHost.h b/mozilla/modules/plugin/nglsrc/nsIPluginHost.h index 867c426826c..de852f82a0f 100644 --- a/mozilla/modules/plugin/nglsrc/nsIPluginHost.h +++ b/mozilla/modules/plugin/nglsrc/nsIPluginHost.h @@ -71,6 +71,9 @@ public: NS_IMETHOD GetPlugins(PRUint32 aPluginCount, nsIDOMPlugin* aPluginArray[]) = 0; + + NS_IMETHOD + StopPluginInstance(nsIPluginInstance* aInstance) = 0; }; #endif // nsIPluginHost_h___ diff --git a/mozilla/modules/plugin/nglsrc/nsPluginHostImpl.cpp b/mozilla/modules/plugin/nglsrc/nsPluginHostImpl.cpp index 5d81c36eba8..fea91519736 100644 --- a/mozilla/modules/plugin/nglsrc/nsPluginHostImpl.cpp +++ b/mozilla/modules/plugin/nglsrc/nsPluginHostImpl.cpp @@ -86,6 +86,7 @@ nsPluginTag::nsPluginTag() mLibrary = nsnull; mEntryPoint = nsnull; mFlags = NS_PLUGIN_FLAG_ENABLED; + mFileName = nsnull; } inline char* new_str(char* str) @@ -118,6 +119,7 @@ nsPluginTag::nsPluginTag(nsPluginTag* aPluginTag) mLibrary = nsnull; mEntryPoint = nsnull; mFlags = NS_PLUGIN_FLAG_ENABLED; + mFileName = new_str(aPluginTag->mFileName); } nsPluginTag::~nsPluginTag() @@ -168,6 +170,12 @@ nsPluginTag::~nsPluginTag() PR_UnloadLibrary(mLibrary); mLibrary = nsnull; } + + if(nsnull != mFileName) + { + delete [] mFileName; + mFileName = nsnull; + } } class nsPluginStreamInfo : public nsIPluginStreamInfo @@ -1470,10 +1478,9 @@ nsresult nsPluginHostImpl::FindStoppedPluginForURL(nsIURL* aURL, nsIPluginInstan for(i=0; iGetWindow(window); @@ -1487,6 +1494,8 @@ nsresult nsPluginHostImpl::FindStoppedPluginForURL(nsIURL* aURL, nsIPluginInstan instance->SetWindow(window); instance->Start(); + mActivePluginList[i].mStopped = PR_FALSE; + return NS_OK; } } @@ -1507,6 +1516,8 @@ void nsPluginHostImpl::AddInstanceToActiveList(nsIPluginInstance* aInstance, nsI mActivePluginList[mNumActivePlugins].mInstance = aInstance; aInstance->GetPeer(&(mActivePluginList[mNumActivePlugins].mPeer)); + mActivePluginList[mNumActivePlugins].mStopped = PR_FALSE; + ++mNumActivePlugins; } else @@ -1523,6 +1534,7 @@ void nsPluginHostImpl::AddInstanceToActiveList(nsIPluginInstance* aInstance, nsI mActivePluginList[mOldestActivePlugin].mURL = PL_strdup(url); mActivePluginList[mOldestActivePlugin].mInstance = aInstance; aInstance->GetPeer(&(mActivePluginList[mOldestActivePlugin].mPeer)); + mActivePluginList[mOldestActivePlugin].mStopped = PR_FALSE; ++mOldestActivePlugin; if(mOldestActivePlugin == MAX_ACTIVE_PLUGINS) @@ -1727,8 +1739,7 @@ public: NS_METHOD GetFilename(nsString& aFilename) { - // FIXME: need to keep the filename around. - aFilename = mPluginTag.mName; + aFilename = mPluginTag.mFileName; return NS_OK; } @@ -1970,6 +1981,23 @@ NS_IMETHODIMP nsPluginHostImpl::NewPluginURLStream(const nsString& aURL, return rv; } + +NS_IMETHODIMP +nsPluginHostImpl::StopPluginInstance(nsIPluginInstance* aInstance) +{ + PRUint32 i; + for(i=0; iGetCString(); + fileName = PL_strrchr(path, '\\'); + if(fileName) + ++fileName; + versionsize = ::GetFileVersionInfoSize((char*)path, &zerome); if (versionsize > 0) verbuf = (char *)PR_Malloc(versionsize); @@ -300,6 +305,7 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info) info.fMimeTypeArray = MakeStringArray(info.fVariantCount, info.fMimeType); info.fMimeDescriptionArray = MakeStringArray(info.fVariantCount, info.fMimeDescription); info.fExtensionArray = MakeStringArray(info.fVariantCount, info.fExtensions); + info.fFileName = PL_strdup(fileName); } else return NS_ERROR_FAILURE;