bool GMPChild::GetUTF8LibPath(nsACString& aOutLibPath) { #if defined(XP_MACOSX) && defined(MOZ_GMP_SANDBOX) nsAutoCString pluginDirectoryPath, pluginFilePath; if (!GetPluginPaths(mPluginPath, pluginDirectoryPath, pluginFilePath)) { MOZ_CRASH("Error scanning plugin path"); } aOutLibPath.Assign(pluginFilePath); return true; #else nsCOMPtr<nsIFile> libFile; if (!GetPluginFile(mPluginPath, libFile)) { return false; } if (!FileExists(libFile)) { NS_WARNING("Can't find GMP library file!"); return false; } nsAutoString path; libFile->GetPath(path); aOutLibPath = NS_ConvertUTF16toUTF8(path); return true; #endif }
static bool GetPluginFile(const nsAString& aPluginPath, nsCOMPtr<nsIFile>& aLibFile) { nsCOMPtr<nsIFile> unusedlibDir; return GetPluginFile(aPluginPath, unusedlibDir, aLibFile); }
static bool GetPluginPaths(const nsAString& aPluginPath, nsCString &aPluginDirectoryPath, nsCString &aPluginFilePath) { nsCOMPtr<nsIFile> libDirectory, libFile; if (!GetPluginFile(aPluginPath, libDirectory, libFile)) { return false; } // Mac sandbox rules expect paths to actual files and directories -- not // soft links. bool isLink; libDirectory->IsSymlink(&isLink); if (isLink) { libDirectory->GetNativeTarget(aPluginDirectoryPath); } else { libDirectory->GetNativePath(aPluginDirectoryPath); } libFile->IsSymlink(&isLink); if (isLink) { libFile->GetNativeTarget(aPluginFilePath); } else { libFile->GetNativePath(aPluginFilePath); } return true; }
static bool GetPluginPaths(const nsAString& aPluginPath, nsCString &aPluginDirectoryPath, nsCString &aPluginFilePath) { nsCOMPtr<nsIFile> libDirectory, libFile; if (!GetPluginFile(aPluginPath, libDirectory, libFile)) { return false; } // Mac sandbox rules expect paths to actual files and directories -- not // soft links. aPluginDirectoryPath = GetNativeTarget(libDirectory); aPluginFilePath = GetNativeTarget(libFile); return true; }