mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 14:54:25 +00:00
9847e9f759
Per the CSP specification, content injected by extensions is meant to be exempt from page CSP. This patch takes care of the most common case of content injected by extension content scripts, which always have expanded principals which inherit from the page principal. To make this easier, de-virtualize BasePrincipal::Kind(), using CTOR initializers instead.
60 lines
1.9 KiB
C++
60 lines
1.9 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/* The privileged system principal. */
|
|
|
|
#ifndef nsSystemPrincipal_h__
|
|
#define nsSystemPrincipal_h__
|
|
|
|
#include "nsIPrincipal.h"
|
|
#include "nsJSPrincipals.h"
|
|
|
|
#include "mozilla/BasePrincipal.h"
|
|
|
|
#define NS_SYSTEMPRINCIPAL_CID \
|
|
{ 0x4a6212db, 0xaccb, 0x11d3, \
|
|
{ 0xb7, 0x65, 0x0, 0x60, 0xb0, 0xb6, 0xce, 0xcb }}
|
|
#define NS_SYSTEMPRINCIPAL_CONTRACTID "@mozilla.org/systemprincipal;1"
|
|
|
|
|
|
class nsSystemPrincipal final : public mozilla::BasePrincipal
|
|
{
|
|
public:
|
|
NS_DECL_NSISERIALIZABLE
|
|
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr) override;
|
|
NS_IMETHOD GetHashValue(uint32_t* aHashValue) override;
|
|
NS_IMETHOD GetURI(nsIURI** aURI) override;
|
|
NS_IMETHOD GetDomain(nsIURI** aDomain) override;
|
|
NS_IMETHOD SetDomain(nsIURI* aDomain) override;
|
|
NS_IMETHOD GetCsp(nsIContentSecurityPolicy** aCsp) override;
|
|
NS_IMETHOD SetCsp(nsIContentSecurityPolicy* aCsp) override;
|
|
NS_IMETHOD EnsureCSP(nsIDOMDocument* aDocument, nsIContentSecurityPolicy** aCSP) override;
|
|
NS_IMETHOD GetPreloadCsp(nsIContentSecurityPolicy** aPreloadCSP) override;
|
|
NS_IMETHOD EnsurePreloadCSP(nsIDOMDocument* aDocument, nsIContentSecurityPolicy** aCSP) override;
|
|
NS_IMETHOD GetBaseDomain(nsACString& aBaseDomain) override;
|
|
nsresult GetOriginInternal(nsACString& aOrigin) override;
|
|
|
|
nsSystemPrincipal()
|
|
: BasePrincipal(eSystemPrincipal)
|
|
{}
|
|
|
|
virtual nsresult GetScriptLocation(nsACString &aStr) override;
|
|
|
|
protected:
|
|
virtual ~nsSystemPrincipal(void) {}
|
|
|
|
bool SubsumesInternal(nsIPrincipal *aOther, DocumentDomainConsideration aConsideration) override
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool MayLoadInternal(nsIURI* aURI) override
|
|
{
|
|
return true;
|
|
}
|
|
};
|
|
|
|
#endif // nsSystemPrincipal_h__
|