void nsXREDirProvider::LoadAppBundleDirs() { nsCOMPtr<nsIFile> dir; bool persistent = false; nsresult rv = GetFile(XRE_APP_DISTRIBUTION_DIR, &persistent, getter_AddRefs(dir)); if (NS_FAILED(rv)) return; 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<nsIFile> manifest = CloneAndAppend(subdir, "chrome.manifest"); XRE_AddManifestLocation(NS_APP_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); }
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); }
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); }