void nsXREDirProvider::LoadAppBundleDirs() { nsCOMPtr<nsIFile> dir; nsresult rv = mXULAppDir->Clone(getter_AddRefs(dir)); if (NS_FAILED(rv)) return; dir->AppendNative(NS_LITERAL_CSTRING("distribution")); dir->AppendNative(NS_LITERAL_CSTRING("bundles")); nsCOMPtr<nsISimpleEnumerator> e; rv = dir->GetDirectoryEntries(getter_AddRefs(e)); if (NS_FAILED(rv)) return; nsCOMPtr<nsIDirectoryEnumerator> files = do_QueryInterface(e); if (!files) return; nsCOMPtr<nsIFile> subdir; while (NS_SUCCEEDED(files->GetNextFile(getter_AddRefs(subdir))) && subdir) { mAppBundleDirectories.AppendObject(subdir); nsCOMPtr<nsILocalFile> manifest = CloneAndAppend(subdir, "chrome.manifest"); XRE_AddManifestLocation(NS_COMPONENT_LOCATION, manifest); } }
static void LoadExtensionDirectories(nsINIParser &parser, const char *aSection, nsCOMArray<nsIFile> &aDirectories, NSLocationType aType) { nsresult rv; PRInt32 i = 0; do { nsCAutoString buf("Extension"); buf.AppendInt(i++); nsCAutoString path; rv = parser.GetString(aSection, buf.get(), path); if (NS_FAILED(rv)) return; nsCOMPtr<nsILocalFile> dir = do_CreateInstance("@mozilla.org/file/local;1", &rv); if (NS_FAILED(rv)) continue; rv = dir->SetPersistentDescriptor(path); if (NS_FAILED(rv)) continue; aDirectories.AppendObject(dir); nsCOMPtr<nsILocalFile> manifest = CloneAndAppend(dir, "chrome.manifest"); XRE_AddManifestLocation(aType, manifest); } while (PR_TRUE); }
void nsXREDirProvider::LoadExtensionBundleDirectories() { if (!mozilla::Preferences::GetBool("extensions.defaultProviders.enabled", true)) return; if (mProfileDir) { if (!gSafeMode) { nsCOMPtr<nsIFile> extensionsINI; mProfileDir->Clone(getter_AddRefs(extensionsINI)); if (!extensionsINI) return; extensionsINI->AppendNative(NS_LITERAL_CSTRING("extensions.ini")); nsCOMPtr<nsIFile> extensionsINILF = do_QueryInterface(extensionsINI); if (!extensionsINILF) return; nsINIParser parser; nsresult rv = parser.Init(extensionsINILF); if (NS_FAILED(rv)) return; RegisterExtensionInterpositions(parser); LoadExtensionDirectories(parser, "ExtensionDirs", mExtensionDirectories, NS_EXTENSION_LOCATION); LoadExtensionDirectories(parser, "ThemeDirs", mThemeDirectories, NS_SKIN_LOCATION); /* non-Firefox applications that use overrides in their default theme should * define AC_DEFINE(MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES) in their * configure.in */ #if defined(MOZ_BUILD_APP_IS_BROWSER) || defined(MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES) } else { // In safe mode, still load the default theme directory: nsCOMPtr<nsIFile> themeManifest; mXULAppDir->Clone(getter_AddRefs(themeManifest)); themeManifest->AppendNative(NS_LITERAL_CSTRING("extensions")); themeManifest->AppendNative(NS_LITERAL_CSTRING("{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi")); bool exists = false; if (NS_SUCCEEDED(themeManifest->Exists(&exists)) && exists) { XRE_AddJarManifestLocation(NS_SKIN_LOCATION, themeManifest); } else { themeManifest->SetNativeLeafName(NS_LITERAL_CSTRING("{972ce4c6-7e08-4474-a285-3208198ce6fd}")); themeManifest->AppendNative(NS_LITERAL_CSTRING("chrome.manifest")); XRE_AddManifestLocation(NS_SKIN_LOCATION, themeManifest); } #endif } } }
bool EmbedLiteApp::StartChildThread() { NS_ENSURE_TRUE(mEmbedType == EMBED_THREAD, false); LOGT("mUILoop:%p, current:%p", mUILoop, MessageLoop::current()); NS_ASSERTION(MessageLoop::current() != mUILoop, "Current message loop must be null and not equals to mUILoop"); for (int i = 0; i < sComponentDirs.Length(); i++) { nsCOMPtr<nsIFile> f; NS_NewNativeLocalFile(sComponentDirs[i], true, getter_AddRefs(f)); XRE_AddManifestLocation(NS_COMPONENT_LOCATION, f); } GeckoLoader::InitEmbedding(mProfilePath); mAppThread = new EmbedLiteAppThread(mUILoop); return true; }
static void LoadExtensionDirectories(nsINIParser &parser, const char *aSection, nsCOMArray<nsIFile> &aDirectories, NSLocationType aType) { nsresult rv; PRInt32 i = 0; nsCOMPtr<nsIPrefServiceInternal> prefs = do_GetService("@mozilla.org/preferences-service;1"); do { nsCAutoString buf("Extension"); buf.AppendInt(i++); nsCAutoString path; rv = parser.GetString(aSection, buf.get(), path); if (NS_FAILED(rv)) return; nsCOMPtr<nsILocalFile> dir = do_CreateInstance("@mozilla.org/file/local;1", &rv); if (NS_FAILED(rv)) continue; rv = dir->SetPersistentDescriptor(path); if (NS_FAILED(rv)) continue; if (Substring(path, path.Length() - 4).Equals(NS_LITERAL_CSTRING(".xpi"))) { XRE_AddJarManifestLocation(aType, dir); if (!prefs) continue; prefs->ReadExtensionPrefs(dir); } else { aDirectories.AppendObject(dir); nsCOMPtr<nsILocalFile> manifest = CloneAndAppend(dir, "chrome.manifest"); XRE_AddManifestLocation(aType, manifest); } } while (PR_TRUE); }
void nsXREDirProvider::LoadExtensionBundleDirectories() { if (!mozilla::Preferences::GetBool("extensions.defaultProviders.enabled", true)) return; if (mProfileDir) { if (!gSafeMode) { nsCOMPtr<nsIFile> extensionsINI; mProfileDir->Clone(getter_AddRefs(extensionsINI)); if (!extensionsINI) return; extensionsINI->AppendNative(NS_LITERAL_CSTRING("extensions.ini")); nsCOMPtr<nsIFile> extensionsINILF = do_QueryInterface(extensionsINI); if (!extensionsINILF) return; nsINIParser parser; nsresult rv = parser.Init(extensionsINILF); if (NS_FAILED(rv)) return; RegisterExtensionInterpositions(parser); LoadExtensionDirectories(parser, "ExtensionDirs", mExtensionDirectories, NS_EXTENSION_LOCATION); LoadExtensionDirectories(parser, "ThemeDirs", mThemeDirectories, NS_SKIN_LOCATION); #ifdef MOZ_BUILD_APP_IS_BROWSER } else { // In safe mode, still load the default theme directory: nsCOMPtr<nsIFile> themeManifest; mXULAppDir->Clone(getter_AddRefs(themeManifest)); themeManifest->AppendNative(NS_LITERAL_CSTRING("extensions")); themeManifest->AppendNative(NS_LITERAL_CSTRING("{972ce4c6-7e08-4474-a285-3208198ce6fd}")); themeManifest->AppendNative(NS_LITERAL_CSTRING("chrome.manifest")); XRE_AddManifestLocation(NS_SKIN_LOCATION, themeManifest); #endif } } }
static void LoadExtensionDirectories(nsINIParser &parser, const char *aSection, nsCOMArray<nsIFile> &aDirectories, NSLocationType aType) { nsresult rv; int32_t i = 0; do { nsAutoCString buf("Extension"); buf.AppendInt(i++); nsAutoCString path; rv = parser.GetString(aSection, buf.get(), path); if (NS_FAILED(rv)) return; nsCOMPtr<nsIFile> dir = do_CreateInstance("@mozilla.org/file/local;1", &rv); if (NS_FAILED(rv)) continue; rv = dir->SetPersistentDescriptor(path); if (NS_FAILED(rv)) continue; aDirectories.AppendObject(dir); if (Substring(path, path.Length() - 4).EqualsLiteral(".xpi")) { XRE_AddJarManifestLocation(aType, dir); } else { nsCOMPtr<nsIFile> manifest = CloneAndAppend(dir, "chrome.manifest"); XRE_AddManifestLocation(aType, manifest); } } while (true); }