Source code

Revision control

Other Tools

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