michael@0: /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef nsChromeRegistryContent_h michael@0: #define nsChromeRegistryContent_h michael@0: michael@0: #include "nsChromeRegistry.h" michael@0: #include "nsClassHashtable.h" michael@0: michael@0: struct ChromePackage; michael@0: struct ResourceMapping; michael@0: struct OverrideMapping; michael@0: michael@0: class nsChromeRegistryContent : public nsChromeRegistry michael@0: { michael@0: public: michael@0: nsChromeRegistryContent(); michael@0: michael@0: void RegisterRemoteChrome(const InfallibleTArray& aPackages, michael@0: const InfallibleTArray& aResources, michael@0: const InfallibleTArray& aOverrides, michael@0: const nsACString& aLocale); michael@0: michael@0: NS_IMETHOD GetLocalesForPackage(const nsACString& aPackage, michael@0: nsIUTF8StringEnumerator* *aResult) MOZ_OVERRIDE; michael@0: NS_IMETHOD CheckForNewChrome() MOZ_OVERRIDE; michael@0: NS_IMETHOD CheckForOSAccessibility() MOZ_OVERRIDE; michael@0: NS_IMETHOD Observe(nsISupports* aSubject, const char* aTopic, michael@0: const char16_t* aData) MOZ_OVERRIDE; michael@0: NS_IMETHOD IsLocaleRTL(const nsACString& package, michael@0: bool *aResult) MOZ_OVERRIDE; michael@0: NS_IMETHOD GetSelectedLocale(const nsACString& aPackage, michael@0: nsACString& aLocale) MOZ_OVERRIDE; michael@0: NS_IMETHOD GetStyleOverlays(nsIURI *aChromeURL, michael@0: nsISimpleEnumerator **aResult) MOZ_OVERRIDE; michael@0: NS_IMETHOD GetXULOverlays(nsIURI *aChromeURL, michael@0: nsISimpleEnumerator **aResult) MOZ_OVERRIDE; michael@0: michael@0: private: michael@0: struct PackageEntry michael@0: { michael@0: PackageEntry() : flags(0) { } michael@0: ~PackageEntry() { } michael@0: michael@0: nsCOMPtr contentBaseURI; michael@0: nsCOMPtr localeBaseURI; michael@0: nsCOMPtr skinBaseURI; michael@0: uint32_t flags; michael@0: }; michael@0: michael@0: void RegisterPackage(const ChromePackage& aPackage); michael@0: void RegisterResource(const ResourceMapping& aResource); michael@0: void RegisterOverride(const OverrideMapping& aOverride); michael@0: michael@0: nsresult UpdateSelectedLocale() MOZ_OVERRIDE; michael@0: nsIURI* GetBaseURIFromPackage(const nsCString& aPackage, michael@0: const nsCString& aProvider, michael@0: const nsCString& aPath) MOZ_OVERRIDE; michael@0: nsresult GetFlagsFromPackage(const nsCString& aPackage, uint32_t* aFlags) MOZ_OVERRIDE; michael@0: michael@0: nsClassHashtable mPackagesHash; michael@0: nsCString mLocale; michael@0: michael@0: virtual void ManifestContent(ManifestProcessingContext& cx, int lineno, michael@0: char *const * argv, bool platform, michael@0: bool contentaccessible); michael@0: virtual void ManifestLocale(ManifestProcessingContext& cx, int lineno, michael@0: char *const * argv, bool platform, michael@0: bool contentaccessible); michael@0: virtual void ManifestSkin(ManifestProcessingContext& cx, int lineno, michael@0: char *const * argv, bool platform, michael@0: bool contentaccessible); michael@0: virtual void ManifestOverlay(ManifestProcessingContext& cx, int lineno, michael@0: char *const * argv, bool platform, michael@0: bool contentaccessible); michael@0: virtual void ManifestStyle(ManifestProcessingContext& cx, int lineno, michael@0: char *const * argv, bool platform, michael@0: bool contentaccessible); michael@0: virtual void ManifestOverride(ManifestProcessingContext& cx, int lineno, michael@0: char *const * argv, bool platform, michael@0: bool contentaccessible); michael@0: virtual void ManifestResource(ManifestProcessingContext& cx, int lineno, michael@0: char *const * argv, bool platform, michael@0: bool contentaccessible); michael@0: }; michael@0: michael@0: #endif // nsChromeRegistryContent_h