tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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