/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* 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/. */ #ifndef nsChromeRegistryContent_h #define nsChromeRegistryContent_h #include "nsChromeRegistry.h" #include "nsClassHashtable.h" struct ChromePackage; struct ResourceMapping; struct OverrideMapping; class nsChromeRegistryContent : public nsChromeRegistry { public: nsChromeRegistryContent(); void RegisterRemoteChrome(const InfallibleTArray& aPackages, const InfallibleTArray& aResources, const InfallibleTArray& aOverrides, const nsACString& aLocale, bool aReset); NS_IMETHOD GetLocalesForPackage(const nsACString& aPackage, nsIUTF8StringEnumerator* *aResult) MOZ_OVERRIDE; NS_IMETHOD CheckForNewChrome() MOZ_OVERRIDE; NS_IMETHOD CheckForOSAccessibility() MOZ_OVERRIDE; NS_IMETHOD Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData) MOZ_OVERRIDE; NS_IMETHOD IsLocaleRTL(const nsACString& package, bool *aResult) MOZ_OVERRIDE; NS_IMETHOD GetSelectedLocale(const nsACString& aPackage, nsACString& aLocale) MOZ_OVERRIDE; NS_IMETHOD GetStyleOverlays(nsIURI *aChromeURL, nsISimpleEnumerator **aResult) MOZ_OVERRIDE; NS_IMETHOD GetXULOverlays(nsIURI *aChromeURL, nsISimpleEnumerator **aResult) MOZ_OVERRIDE; void RegisterPackage(const ChromePackage& aPackage); void RegisterOverride(const OverrideMapping& aOverride); void RegisterResource(const ResourceMapping& aResource); private: struct PackageEntry { PackageEntry() : flags(0) { } ~PackageEntry() { } nsCOMPtr contentBaseURI; nsCOMPtr localeBaseURI; nsCOMPtr skinBaseURI; uint32_t flags; }; nsresult UpdateSelectedLocale() MOZ_OVERRIDE; nsIURI* GetBaseURIFromPackage(const nsCString& aPackage, const nsCString& aProvider, const nsCString& aPath) MOZ_OVERRIDE; nsresult GetFlagsFromPackage(const nsCString& aPackage, uint32_t* aFlags) MOZ_OVERRIDE; nsClassHashtable mPackagesHash; nsCString mLocale; virtual void ManifestContent(ManifestProcessingContext& cx, int lineno, char *const * argv, bool platform, bool contentaccessible); virtual void ManifestLocale(ManifestProcessingContext& cx, int lineno, char *const * argv, bool platform, bool contentaccessible); virtual void ManifestSkin(ManifestProcessingContext& cx, int lineno, char *const * argv, bool platform, bool contentaccessible); virtual void ManifestOverlay(ManifestProcessingContext& cx, int lineno, char *const * argv, bool platform, bool contentaccessible); virtual void ManifestStyle(ManifestProcessingContext& cx, int lineno, char *const * argv, bool platform, bool contentaccessible); virtual void ManifestOverride(ManifestProcessingContext& cx, int lineno, char *const * argv, bool platform, bool contentaccessible); virtual void ManifestResource(ManifestProcessingContext& cx, int lineno, char *const * argv, bool platform, bool contentaccessible); }; #endif // nsChromeRegistryContent_h