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
10 #include "nsJSPrincipals.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
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; }
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
;
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
;
55 virtual ~ContentPrincipal();
57 bool SubsumesInternal(nsIPrincipal
* aOther
,
58 DocumentDomainConsideration aConsideration
) override
;
59 bool MayLoadInternal(nsIURI
* aURI
) override
;
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