nsChromeRegistryContent.h (2817B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef nsChromeRegistryContent_h 7 #define nsChromeRegistryContent_h 8 9 #include "nsChromeRegistry.h" 10 #include "nsClassHashtable.h" 11 12 struct ChromePackage; 13 struct SubstitutionMapping; 14 struct OverrideMapping; 15 16 class nsChromeRegistryContent : public nsChromeRegistry { 17 public: 18 nsChromeRegistryContent(); 19 20 void RegisterRemoteChrome(const nsTArray<ChromePackage>& aPackages, 21 const nsTArray<SubstitutionMapping>& aResources, 22 const nsTArray<OverrideMapping>& aOverrides, 23 const nsACString& aLocale, bool aReset); 24 25 NS_IMETHOD GetLocalesForPackage(const nsACString& aPackage, 26 nsIUTF8StringEnumerator** aResult) override; 27 NS_IMETHOD CheckForNewChrome() override; 28 NS_IMETHOD Observe(nsISupports* aSubject, const char* aTopic, 29 const char16_t* aData) override; 30 NS_IMETHOD IsLocaleRTL(const nsACString& package, bool* aResult) override; 31 32 void RegisterPackage(const ChromePackage& aPackage); 33 void RegisterOverride(const OverrideMapping& aOverride); 34 void RegisterSubstitution(const SubstitutionMapping& aResource); 35 36 private: 37 struct PackageEntry { 38 PackageEntry() : flags(0) {} 39 ~PackageEntry() {} 40 41 nsCOMPtr<nsIURI> contentBaseURI; 42 nsCOMPtr<nsIURI> localeBaseURI; 43 nsCOMPtr<nsIURI> skinBaseURI; 44 uint32_t flags; 45 }; 46 47 nsIURI* GetBaseURIFromPackage(const nsCString& aPackage, 48 const nsCString& aProvider, 49 const nsCString& aPath) override; 50 nsresult GetFlagsFromPackage(const nsCString& aPackage, 51 uint32_t* aFlags) override; 52 53 nsClassHashtable<nsCStringHashKey, PackageEntry> mPackagesHash; 54 nsCString mLocale; 55 56 virtual void ManifestContent(ManifestProcessingContext& cx, int lineno, 57 char* const* argv, int flags) override; 58 virtual void ManifestLocale(ManifestProcessingContext& cx, int lineno, 59 char* const* argv, int flags) override; 60 virtual void ManifestSkin(ManifestProcessingContext& cx, int lineno, 61 char* const* argv, int flags) override; 62 virtual void ManifestOverride(ManifestProcessingContext& cx, int lineno, 63 char* const* argv, int flags) override; 64 virtual void ManifestResource(ManifestProcessingContext& cx, int lineno, 65 char* const* argv, int flags) override; 66 }; 67 68 #endif // nsChromeRegistryContent_h