Simplify code for exposing plugin file names vs. full path. b=488181 r/sr=jst

This commit is contained in:
Josh Aas 2009-05-15 18:26:21 -04:00
parent 491baea6c3
commit 956f9c56b6
7 changed files with 71 additions and 60 deletions

View File

@ -7,7 +7,7 @@ installedplugins_label=Installed plugins
nopluginsareinstalled_label=No plugins are installed
findmore_label=Find more information about browser plugins at
installhelp_label=Help for installing plugins is available from
filename_label=File name:
file_label=File:
version_label=Version:
mimetype_label=MIME Type
description_label=Description

View File

@ -3702,11 +3702,11 @@ nsPluginHostImpl::TrySetUpPluginInstance(const char *aMimeType,
return NS_ERROR_FAILURE;
}
}
else
else {
mimetype = aMimeType;
}
NS_ASSERTION(pluginTag, "Must have plugin tag here!");
PRBool isJavaPlugin = pluginTag->mIsJavaPlugin;
nsCAutoString contractID(
NS_LITERAL_CSTRING(NS_INLINE_PLUGIN_CONTRACTID_PREFIX) +
@ -3724,7 +3724,7 @@ nsPluginHostImpl::TrySetUpPluginInstance(const char *aMimeType,
static BOOL firstJavaPlugin = FALSE;
BOOL restoreOrigDir = FALSE;
char origDir[_MAX_PATH];
if (isJavaPlugin && !firstJavaPlugin) {
if (pluginTag->mIsJavaPlugin && !firstJavaPlugin) {
DWORD dw = ::GetCurrentDirectory(_MAX_PATH, origDir);
NS_ASSERTION(dw <= _MAX_PATH, "Falied to obtain the current directory, which may leads to incorrect class laoding");
nsCOMPtr<nsIFile> binDirectory;
@ -3995,33 +3995,14 @@ public:
PRBool bShowPath;
nsCOMPtr<nsIPrefBranch> prefService = do_GetService(NS_PREFSERVICE_CONTRACTID);
if (prefService &&
NS_SUCCEEDED(prefService->GetBoolPref("plugin.expose_full_path",&bShowPath)) &&
NS_SUCCEEDED(prefService->GetBoolPref("plugin.expose_full_path", &bShowPath)) &&
bShowPath) {
// only show the full path if people have set the pref,
// the default should not reveal path information (bug 88183)
#if defined(XP_MACOSX)
CopyUTF8toUTF16(mPluginTag.mFullPath, aFilename);
#else
CopyUTF8toUTF16(mPluginTag.mFileName, aFilename);
#endif
return NS_OK;
}
nsAutoString spec;
if (!mPluginTag.mFullPath.IsEmpty()) {
#if !defined(XP_MACOSX)
NS_ERROR("Only MAC should be using nsPluginTag::mFullPath!");
#endif
CopyUTF8toUTF16(mPluginTag.mFullPath, spec);
} else {
CopyUTF8toUTF16(mPluginTag.mFileName, spec);
CopyUTF8toUTF16(mPluginTag.mFileName, aFilename);
}
nsCString leafName;
nsCOMPtr<nsILocalFile> pluginPath;
NS_NewLocalFile(spec, PR_TRUE, getter_AddRefs(pluginPath));
return pluginPath->GetLeafName(aFilename);
return NS_OK;
}
NS_METHOD GetVersion(nsAString& aVersion)
@ -4371,14 +4352,10 @@ NS_IMETHODIMP nsPluginHostImpl::GetPluginFactory(const char *aMimeType, nsIPlugi
#endif
if (!pluginTag->mLibrary) { // if we haven't done this yet
nsCOMPtr<nsILocalFile> file = do_CreateInstance("@mozilla.org/file/local;1");
#if !defined(XP_MACOSX)
file->InitWithPath(NS_ConvertUTF8toUTF16(pluginTag->mFileName));
#else
if (pluginTag->mFullPath.IsEmpty())
return NS_ERROR_FAILURE;
nsCOMPtr<nsILocalFile> file = do_CreateInstance("@mozilla.org/file/local;1");
file->InitWithPath(NS_ConvertUTF8toUTF16(pluginTag->mFullPath));
#endif
nsPluginFile pluginFile(file);
PRLibrary* pluginLibrary = NULL;

View File

@ -164,12 +164,16 @@ typedef char* (*BeOS_Plugin_GetMIMEDescription)();
nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
{
info.fVersion = nsnull;
nsCAutoString fpath;
nsresult rv = mPlugin->GetNativePath(fpath);
if (NS_OK != rv) {
nsCAutoString fullPath;
if (NS_FAILED(rv = mPlugin->GetNativePath(path)))
return rv;
}
const char *path = fpath.get();
nsCAutoString fileName;
if (NS_FAILED(rv = mPlugin->GetNativeLeafName(fileName)))
return rv;
const char *path = fullPath.get();
int i;
#ifdef NS_PLUGIN_BEOS_DEBUG
@ -243,8 +247,8 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
}
info.fVariantCount = types_num;
info.fFileName = PL_strdup(path);
info.fFullPath = PL_strdup(fullPath.get());
info.fFileName = PL_strdup(fileName.get());
#ifdef NS_PLUGIN_BEOS_DEBUG
printf("info.fFileName = %s\n", info.fFileName);
@ -278,6 +282,9 @@ nsresult nsPluginFile::FreePluginInfo(nsPluginInfo& info)
PR_FREEIF(info.fMimeDescriptionArray);
PR_FREEIF(info.fExtensionArray);
if (info.fFullPath)
PL_strfree(info.fFullPath);
if (info.fFileName)
PL_strfree(info.fFileName);

View File

@ -219,11 +219,15 @@ nsresult nsPluginFile::GetPluginInfo( nsPluginInfo &info)
char failure[ CCHMAXPATH] = "";
APIRET ret;
const char* path;
nsCAutoString temp;
mPlugin->GetNativePath(temp);
path = temp.get();
ret = DosLoadModule( failure, CCHMAXPATH, path, &hPlug);
nsCAutoString path;
if (NS_FAILED(rv = mPlugin->GetNativePath(path)))
return rv;
nsCAutoString fileName;
if (NS_FAILED(rv = mPlugin->GetNativeLeafName(fileName)))
return rv;
ret = DosLoadModule( failure, CCHMAXPATH, path.get(), &hPlug);
info.fVersion = nsnull;
while( ret == NO_ERROR)
@ -255,7 +259,8 @@ nsresult nsPluginFile::GetPluginInfo( nsPluginInfo &info)
info.fExtensionArray = MakeStringArray(info.fVariantCount, extensions);
if( nsnull == info.fExtensionArray) break;
info.fFileName = PL_strdup(path);
info.fFullPath = PL_strdup(path.get());
info.fFileName = PL_strdup(fileName.get());
rc = NS_OK;
break;
@ -271,7 +276,10 @@ nsresult nsPluginFile::FreePluginInfo(nsPluginInfo& info)
{
if(info.fName != nsnull)
PL_strfree(info.fName);
if(info.fFullPath != nsnull)
PL_strfree(info.fFullPath);
if(info.fFileName != nsnull)
PL_strfree(info.fFileName);

View File

@ -434,7 +434,7 @@ nsresult nsPluginFile::LoadPlugin(PRLibrary* &outLibrary)
nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
{
nsresult rv;
const char* mimedescr = 0, *name = 0, *description = 0;
const char *mimedescr = NULL, *name = NULL, *description = NULL;
// No, this doesn't leak. GetGlobalServiceManager() doesn't addref
// it's out pointer. Maybe it should.
@ -488,13 +488,20 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
#endif
if (NS_FAILED(rv = ParsePluginMimeDescription(mimedescr, info)))
return rv;
nsCAutoString filename;
if (NS_FAILED(rv = mPlugin->GetNativePath(filename)))
nsCAutoString path;
if (NS_FAILED(rv = mPlugin->GetNativePath(path)))
return rv;
info.fFileName = PL_strdup(filename.get());
info.fFullPath = PL_strdup(path.get());
nsCAutoString fileName;
if (NS_FAILED(rv = mPlugin->GetNativeLeafName(fileName)))
return rv;
info.fFileName = PL_strdup(fileName.get());
plugin->GetValue(nsPluginVariable_NameString, &name);
if (!name)
name = PL_strrchr(info.fFileName, '/') + 1;
name = "";
info.fName = PL_strdup(name);
plugin->GetValue(nsPluginVariable_DescriptionString, &description);
@ -529,6 +536,9 @@ nsresult nsPluginFile::FreePluginInfo(nsPluginInfo& info)
PR_FREEIF(info.fMimeDescriptionArray);
PR_FREEIF(info.fExtensionArray);
if (info.fFullPath != nsnull)
PL_strfree(info.fFullPath);
if (info.fFileName != nsnull)
PL_strfree(info.fFileName);

View File

@ -259,7 +259,7 @@ nsresult nsPluginFile::LoadPlugin(PRLibrary* &outLibrary)
*/
nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
{
nsresult res = NS_OK;
nsresult rv = NS_OK;
DWORD zerome, versionsize;
TCHAR* verbuf = nsnull;
@ -268,15 +268,20 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
if (!mPlugin)
return NS_ERROR_NULL_POINTER;
nsCAutoString temp;
mPlugin->GetNativePath(temp);
nsCAutoString fullPath;
if (NS_FAILED(rv = mPlugin->GetNativePath(fullPath)))
return rv;
nsCAutoString fileName;
if (NS_FAILED(rv = mPlugin->GetNativeLeafName(fileName)))
return rv;
#ifdef UNICODE
NS_ConvertASCIItoUTF16 temp2(temp);
path = temp2.get();
NS_ConvertASCIItoUTF16 utf16Path(fullPath);
path = utf16Path.get();
versionsize = ::GetFileVersionInfoSizeW((TCHAR*)path, &zerome);
#else
path = temp.get();
path = fullPath.get();
versionsize = ::GetFileVersionInfoSize((TCHAR*)path, &zerome);
#endif
@ -302,7 +307,8 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
info.fMimeTypeArray = MakeStringArray(info.fVariantCount, mimeType);
info.fMimeDescriptionArray = MakeStringArray(info.fVariantCount, mimeDescription);
info.fExtensionArray = MakeStringArray(info.fVariantCount, extensions);
info.fFileName = PL_strdup(temp.get());
info.fFullPath = PL_strdup(fullPath.get());
info.fFileName = PL_strdup(fileName.get());
info.fVersion = GetVersion(verbuf);
PL_strfree(mimeType);
@ -310,12 +316,12 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
PL_strfree(extensions);
}
else {
res = NS_ERROR_FAILURE;
rv = NS_ERROR_FAILURE;
}
PR_Free(verbuf);
return res;
return rv;
}
nsresult nsPluginFile::FreePluginInfo(nsPluginInfo& info)
@ -335,6 +341,9 @@ nsresult nsPluginFile::FreePluginInfo(nsPluginInfo& info)
if (info.fExtensionArray)
FreeStringArray(info.fVariantCount, info.fExtensionArray);
if (info.fFullPath)
PL_strfree(info.fFullPath);
if (info.fFileName)
PL_strfree(info.fFileName);

View File

@ -116,7 +116,7 @@
document.write(plugin.name);
document.writeln("<\/h2>");
document.writeln("<dl><dd><span class=\"label\">" + pluginsbundle.GetStringFromName("filename_label") + "<\/span> ");
document.writeln("<dl><dd><span class=\"label\">" + pluginsbundle.GetStringFromName("file_label") + "<\/span> ");
document.write(plugin.filename);
document.writeln("<\/dd><dd><span class=\"label\">" + pluginsbundle.GetStringFromName("version_label") + "<\/span> ");
document.write(plugin.version);