Bug 1457047 [wpt PR 10645] - Update webidl2.js to v10.2.1, a=testonly
[gecko.git] / caps / ContentPrincipal.h
blobfa7c2ff09c8f0878ab458287d8c55d4dd11ddeca
1 /* -*- Mode: C++; tab-width: 2; 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 ContentPrincipal_h
7 #define ContentPrincipal_h
9 #include "nsCOMPtr.h"
10 #include "nsJSPrincipals.h"
11 #include "nsTArray.h"
12 #include "nsIContentSecurityPolicy.h"
13 #include "nsIProtocolHandler.h"
14 #include "nsNetUtil.h"
15 #include "nsScriptSecurityManager.h"
16 #include "mozilla/BasePrincipal.h"
17 #include "mozilla/extensions/WebExtensionPolicy.h"
19 class ContentPrincipal final : public mozilla::BasePrincipal
21 public:
22 NS_DECL_NSISERIALIZABLE
23 NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr) override;
24 NS_IMETHOD GetHashValue(uint32_t* aHashValue) override;
25 NS_IMETHOD GetURI(nsIURI** aURI) override;
26 NS_IMETHOD GetDomain(nsIURI** aDomain) override;
27 NS_IMETHOD SetDomain(nsIURI* aDomain) override;
28 NS_IMETHOD GetBaseDomain(nsACString& aBaseDomain) override;
29 NS_IMETHOD GetAddonId(nsAString& aAddonId) override;
30 bool IsCodebasePrincipal() const override { return true; }
32 ContentPrincipal();
34 static PrincipalKind Kind() { return eCodebasePrincipal; }
36 // Init() must be called before the principal is in a usable state.
37 nsresult Init(nsIURI* aCodebase,
38 const mozilla::OriginAttributes& aOriginAttributes,
39 const nsACString& aOriginNoSuffix);
41 virtual nsresult GetScriptLocation(nsACString& aStr) override;
43 static nsresult
44 GenerateOriginNoSuffixFromURI(nsIURI* aURI, nsACString& aOrigin);
46 mozilla::extensions::WebExtensionPolicy* AddonPolicy();
48 nsCOMPtr<nsIURI> mDomain;
49 nsCOMPtr<nsIURI> mCodebase;
50 // If mCodebaseImmutable is true, mCodebase is non-null and immutable
51 bool mCodebaseImmutable;
52 bool mDomainImmutable;
54 protected:
55 virtual ~ContentPrincipal();
57 bool SubsumesInternal(nsIPrincipal* aOther,
58 DocumentDomainConsideration aConsideration) override;
59 bool MayLoadInternal(nsIURI* aURI) override;
61 private:
62 mozilla::Maybe<mozilla::WeakPtr<mozilla::extensions::WebExtensionPolicy>> mAddon;
65 #define NS_PRINCIPAL_CONTRACTID "@mozilla.org/principal;1"
66 #define NS_PRINCIPAL_CID \
67 { 0x653e0e4d, 0x3ee4, 0x45fa, \
68 { 0xb2, 0x72, 0x97, 0xc2, 0x0b, 0xc0, 0x1e, 0xb8 } }
70 #endif // ContentPrincipal_h