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/. */
6 #ifndef nsChromeRegistryContent_h
7 #define nsChromeRegistryContent_h
9 #include "nsChromeRegistry.h"
10 #include "nsClassHashtable.h"
13 struct SubstitutionMapping
;
14 struct OverrideMapping
;
16 class nsChromeRegistryContent
: public nsChromeRegistry
{
18 nsChromeRegistryContent();
20 void RegisterRemoteChrome(const nsTArray
<ChromePackage
>& aPackages
,
21 const nsTArray
<SubstitutionMapping
>& aResources
,
22 const nsTArray
<OverrideMapping
>& aOverrides
,
23 const nsACString
& aLocale
, bool aReset
);
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
;
32 void RegisterPackage(const ChromePackage
& aPackage
);
33 void RegisterOverride(const OverrideMapping
& aOverride
);
34 void RegisterSubstitution(const SubstitutionMapping
& aResource
);
38 PackageEntry() : flags(0) {}
41 nsCOMPtr
<nsIURI
> contentBaseURI
;
42 nsCOMPtr
<nsIURI
> localeBaseURI
;
43 nsCOMPtr
<nsIURI
> skinBaseURI
;
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
;
53 nsClassHashtable
<nsCStringHashKey
, PackageEntry
> mPackagesHash
;
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
;
68 #endif // nsChromeRegistryContent_h