diff options
Diffstat (limited to 'b2g/components/GaiaChrome.cpp')
-rw-r--r-- | b2g/components/GaiaChrome.cpp | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/b2g/components/GaiaChrome.cpp b/b2g/components/GaiaChrome.cpp deleted file mode 100644 index 2b53750c2..000000000 --- a/b2g/components/GaiaChrome.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "GaiaChrome.h" - -#include "nsAppDirectoryServiceDefs.h" -#include "nsChromeRegistry.h" -#include "nsDirectoryServiceDefs.h" -#include "nsLocalFile.h" -#include "nsXULAppAPI.h" - -#include "mozilla/ClearOnShutdown.h" -#include "mozilla/ModuleUtils.h" -#include "mozilla/Services.h" -#include "mozilla/FileLocation.h" - -#define NS_GAIACHROME_CID \ - { 0x83f8f999, 0x6b87, 0x4dd8, { 0xa0, 0x93, 0x72, 0x0b, 0xfb, 0x67, 0x4d, 0x38 } } - -using namespace mozilla; - -StaticRefPtr<GaiaChrome> gGaiaChrome; - -NS_IMPL_ISUPPORTS(GaiaChrome, nsIGaiaChrome) - -GaiaChrome::GaiaChrome() - : mPackageName(NS_LITERAL_CSTRING("gaia")) - , mAppsDir(NS_LITERAL_STRING("apps")) - , mDataRoot(NS_LITERAL_STRING("/data/local")) - , mSystemRoot(NS_LITERAL_STRING("/system/b2g")) -{ - MOZ_ASSERT(NS_IsMainThread()); - - GetProfileDir(); - Register(); -} - -//virtual -GaiaChrome::~GaiaChrome() -{ -} - -nsresult -GaiaChrome::GetProfileDir() -{ - nsCOMPtr<nsIFile> profDir; - nsresult rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, - getter_AddRefs(profDir)); - NS_ENSURE_SUCCESS(rv, rv); - - rv = profDir->Clone(getter_AddRefs(mProfDir)); - NS_ENSURE_SUCCESS(rv, rv); - - return NS_OK; -} - -nsresult -GaiaChrome::ComputeAppsPath(nsIFile* aPath) -{ -#if defined(MOZ_MULET) - aPath->InitWithFile(mProfDir); -#elif defined(MOZ_WIDGET_GONK) - nsCOMPtr<nsIFile> locationDetection = new nsLocalFile(); - locationDetection->InitWithPath(mSystemRoot); - locationDetection->Append(mAppsDir); - bool appsInSystem = EnsureIsDirectory(locationDetection); - locationDetection->InitWithPath(mDataRoot); - locationDetection->Append(mAppsDir); - bool appsInData = EnsureIsDirectory(locationDetection); - - if (!appsInData && !appsInSystem) { - printf_stderr("!!! NO root directory with apps found\n"); - MOZ_ASSERT(false); - return NS_ERROR_UNEXPECTED; - } - - aPath->InitWithPath(appsInData ? mDataRoot : mSystemRoot); -#else - return NS_ERROR_UNEXPECTED; -#endif - - aPath->Append(mAppsDir); - aPath->Append(NS_LITERAL_STRING(".")); - - nsresult rv = EnsureValidPath(aPath); - NS_ENSURE_SUCCESS(rv, rv); - - return NS_OK; -} - -bool -GaiaChrome::EnsureIsDirectory(nsIFile* aPath) -{ - bool isDir = false; - aPath->IsDirectory(&isDir); - return isDir; -} - -nsresult -GaiaChrome::EnsureValidPath(nsIFile* appsDir) -{ - // Ensure there is a valid "apps/system" directory - nsCOMPtr<nsIFile> systemAppDir = new nsLocalFile(); - systemAppDir->InitWithFile(appsDir); - systemAppDir->Append(NS_LITERAL_STRING("system")); - - bool hasSystemAppDir = EnsureIsDirectory(systemAppDir); - if (!hasSystemAppDir) { - nsCString path; appsDir->GetNativePath(path); - // We don't want to continue if the apps path does not exists ... - printf_stderr("!!! Gaia chrome package is not a directory: %s\n", path.get()); - return NS_ERROR_UNEXPECTED; - } - - return NS_OK; -} - -NS_IMETHODIMP -GaiaChrome::Register() -{ - MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(nsChromeRegistry::gChromeRegistry != nullptr); - - nsCOMPtr<nsIFile> aPath = new nsLocalFile(); - nsresult rv = ComputeAppsPath(aPath); - NS_ENSURE_SUCCESS(rv, rv); - - FileLocation appsLocation(aPath); - nsCString uri; - appsLocation.GetURIString(uri); - - char* argv[2]; - argv[0] = (char*)mPackageName.get(); - argv[1] = (char*)uri.get(); - - nsChromeRegistry::ManifestProcessingContext cx(NS_APP_LOCATION, appsLocation); - nsChromeRegistry::gChromeRegistry->ManifestContent(cx, 0, argv, 0); - - return NS_OK; -} - -already_AddRefed<GaiaChrome> -GaiaChrome::FactoryCreate() -{ - if (!XRE_IsParentProcess()) { - return nullptr; - } - - MOZ_ASSERT(NS_IsMainThread()); - - if (!gGaiaChrome) { - gGaiaChrome = new GaiaChrome(); - ClearOnShutdown(&gGaiaChrome); - } - - RefPtr<GaiaChrome> service = gGaiaChrome.get(); - return service.forget(); -} - -NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GaiaChrome, - GaiaChrome::FactoryCreate) - -NS_DEFINE_NAMED_CID(NS_GAIACHROME_CID); - -static const mozilla::Module::CIDEntry kGaiaChromeCIDs[] = { - { &kNS_GAIACHROME_CID, false, nullptr, GaiaChromeConstructor }, - { nullptr } -}; - -static const mozilla::Module::ContractIDEntry kGaiaChromeContracts[] = { - { "@mozilla.org/b2g/gaia-chrome;1", &kNS_GAIACHROME_CID }, - { nullptr } -}; - -static const mozilla::Module::CategoryEntry kGaiaChromeCategories[] = { - { "profile-after-change", "Gaia Chrome Registration", GAIACHROME_CONTRACTID }, - { nullptr } -}; - -static const mozilla::Module kGaiaChromeModule = { - mozilla::Module::kVersion, - kGaiaChromeCIDs, - kGaiaChromeContracts, - kGaiaChromeCategories -}; - -NSMODULE_DEFN(GaiaChromeModule) = &kGaiaChromeModule; |