author | Andrea Marchesini <amarchesini@mozilla.com> |
Wed, 22 Mar 2017 11:39:08 +0100 | |
changeset 348783 | 6e45140618b1f3c5d1d98b2f7c351e81a09f2584 |
parent 348782 | ed03003277e0cfb0cc09c7b9710f852fcec235e0 |
child 348784 | a8b48c193197fdcd3075db581e5b7e7de34c7b39 |
push id | 88318 |
push user | amarchesini@mozilla.com |
push date | Wed, 22 Mar 2017 10:39:47 +0000 |
treeherder | mozilla-inbound@a8b48c193197 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | qdot |
bugs | 1343933 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
caps/SystemPrincipal.cpp | file | annotate | diff | comparison | revisions | |
caps/SystemPrincipal.h | file | annotate | diff | comparison | revisions | |
caps/moz.build | file | annotate | diff | comparison | revisions | |
caps/nsIPrincipal.idl | file | annotate | diff | comparison | revisions | |
caps/nsScriptSecurityManager.cpp | file | annotate | diff | comparison | revisions | |
caps/nsScriptSecurityManager.h | file | annotate | diff | comparison | revisions | |
caps/nsSystemPrincipal.cpp | file | annotate | diff | comparison | revisions | |
caps/nsSystemPrincipal.h | file | annotate | diff | comparison | revisions | |
layout/build/nsLayoutModule.cpp | file | annotate | diff | comparison | revisions |
rename from caps/nsSystemPrincipal.cpp rename to caps/SystemPrincipal.cpp --- a/caps/nsSystemPrincipal.cpp +++ b/caps/SystemPrincipal.cpp @@ -1,156 +1,156 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* 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. */ #include "nscore.h" -#include "nsSystemPrincipal.h" +#include "SystemPrincipal.h" #include "nsIComponentManager.h" #include "nsIServiceManager.h" #include "nsIURL.h" #include "nsCOMPtr.h" #include "nsXPIDLString.h" #include "nsReadableUtils.h" #include "nsCRT.h" #include "nsString.h" #include "nsIClassInfoImpl.h" #include "nsIScriptSecurityManager.h" #include "pratom.h" -NS_IMPL_CLASSINFO(nsSystemPrincipal, nullptr, +NS_IMPL_CLASSINFO(SystemPrincipal, nullptr, nsIClassInfo::SINGLETON | nsIClassInfo::MAIN_THREAD_ONLY, NS_SYSTEMPRINCIPAL_CID) -NS_IMPL_QUERY_INTERFACE_CI(nsSystemPrincipal, +NS_IMPL_QUERY_INTERFACE_CI(SystemPrincipal, nsIPrincipal, nsISerializable) -NS_IMPL_CI_INTERFACE_GETTER(nsSystemPrincipal, +NS_IMPL_CI_INTERFACE_GETTER(SystemPrincipal, nsIPrincipal, nsISerializable) #define SYSTEM_PRINCIPAL_SPEC "[System Principal]" -already_AddRefed<nsSystemPrincipal> -nsSystemPrincipal::Create() +already_AddRefed<SystemPrincipal> +SystemPrincipal::Create() { - RefPtr<nsSystemPrincipal> sp = new nsSystemPrincipal(); + RefPtr<SystemPrincipal> sp = new SystemPrincipal(); sp->FinishInit(); return sp.forget(); } nsresult -nsSystemPrincipal::GetScriptLocation(nsACString &aStr) +SystemPrincipal::GetScriptLocation(nsACString &aStr) { aStr.AssignLiteral(SYSTEM_PRINCIPAL_SPEC); return NS_OK; } /////////////////////////////////////// // Methods implementing nsIPrincipal // /////////////////////////////////////// NS_IMETHODIMP -nsSystemPrincipal::GetHashValue(uint32_t *result) +SystemPrincipal::GetHashValue(uint32_t *result) { *result = NS_PTR_TO_INT32(this); return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::GetURI(nsIURI** aURI) +SystemPrincipal::GetURI(nsIURI** aURI) { *aURI = nullptr; return NS_OK; } nsresult -nsSystemPrincipal::GetOriginInternal(nsACString& aOrigin) +SystemPrincipal::GetOriginInternal(nsACString& aOrigin) { aOrigin.AssignLiteral(SYSTEM_PRINCIPAL_SPEC); return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::GetCsp(nsIContentSecurityPolicy** aCsp) +SystemPrincipal::GetCsp(nsIContentSecurityPolicy** aCsp) { *aCsp = nullptr; return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::SetCsp(nsIContentSecurityPolicy* aCsp) +SystemPrincipal::SetCsp(nsIContentSecurityPolicy* aCsp) { // Never destroy an existing CSP on the principal. // This method should only be called in rare cases. return NS_ERROR_FAILURE; } NS_IMETHODIMP -nsSystemPrincipal::EnsureCSP(nsIDOMDocument* aDocument, - nsIContentSecurityPolicy** aCSP) +SystemPrincipal::EnsureCSP(nsIDOMDocument* aDocument, + nsIContentSecurityPolicy** aCSP) { // CSP on a system principal makes no sense return NS_ERROR_FAILURE; } NS_IMETHODIMP -nsSystemPrincipal::GetPreloadCsp(nsIContentSecurityPolicy** aPreloadCSP) +SystemPrincipal::GetPreloadCsp(nsIContentSecurityPolicy** aPreloadCSP) { *aPreloadCSP = nullptr; return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::EnsurePreloadCSP(nsIDOMDocument* aDocument, - nsIContentSecurityPolicy** aPreloadCSP) +SystemPrincipal::EnsurePreloadCSP(nsIDOMDocument* aDocument, + nsIContentSecurityPolicy** aPreloadCSP) { // CSP on a system principal makes no sense return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::GetDomain(nsIURI** aDomain) +SystemPrincipal::GetDomain(nsIURI** aDomain) { *aDomain = nullptr; return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::SetDomain(nsIURI* aDomain) +SystemPrincipal::SetDomain(nsIURI* aDomain) { return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::GetBaseDomain(nsACString& aBaseDomain) +SystemPrincipal::GetBaseDomain(nsACString& aBaseDomain) { // No base domain for chrome. return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::GetAddonId(nsAString& aAddonId) +SystemPrincipal::GetAddonId(nsAString& aAddonId) { aAddonId.Truncate(); return NS_OK; }; ////////////////////////////////////////// // Methods implementing nsISerializable // ////////////////////////////////////////// NS_IMETHODIMP -nsSystemPrincipal::Read(nsIObjectInputStream* aStream) +SystemPrincipal::Read(nsIObjectInputStream* aStream) { // no-op: CID is sufficient to identify the mSystemPrincipal singleton return NS_OK; } NS_IMETHODIMP -nsSystemPrincipal::Write(nsIObjectOutputStream* aStream) +SystemPrincipal::Write(nsIObjectOutputStream* aStream) { // no-op: CID is sufficient to identify the mSystemPrincipal singleton return NS_OK; }
rename from caps/nsSystemPrincipal.h rename to caps/SystemPrincipal.h --- a/caps/nsSystemPrincipal.h +++ b/caps/SystemPrincipal.h @@ -1,39 +1,39 @@ /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* 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__ +#ifndef SystemPrincipal_h +#define SystemPrincipal_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 +class SystemPrincipal final : public mozilla::BasePrincipal { - nsSystemPrincipal() + SystemPrincipal() : BasePrincipal(eSystemPrincipal) { } public: - static already_AddRefed<nsSystemPrincipal> Create(); + static already_AddRefed<SystemPrincipal> Create(); 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; @@ -43,22 +43,23 @@ public: NS_IMETHOD EnsurePreloadCSP(nsIDOMDocument* aDocument, nsIContentSecurityPolicy** aCSP) override; NS_IMETHOD GetBaseDomain(nsACString& aBaseDomain) override; NS_IMETHOD GetAddonId(nsAString& aAddonId) override; nsresult GetOriginInternal(nsACString& aOrigin) override; virtual nsresult GetScriptLocation(nsACString &aStr) override; protected: - virtual ~nsSystemPrincipal(void) {} + virtual ~SystemPrincipal(void) {} - bool SubsumesInternal(nsIPrincipal *aOther, DocumentDomainConsideration aConsideration) override + bool SubsumesInternal(nsIPrincipal *aOther, + DocumentDomainConsideration aConsideration) override { return true; } bool MayLoadInternal(nsIURI* aURI) override { return true; } }; -#endif // nsSystemPrincipal_h__ +#endif // SystemPrincipal_h
--- a/caps/moz.build +++ b/caps/moz.build @@ -40,19 +40,19 @@ SOURCES += [ ] UNIFIED_SOURCES += [ 'DomainPolicy.cpp', 'ExpandedPrincipal.cpp', 'nsJSPrincipals.cpp', 'nsPrincipal.cpp', 'nsScriptSecurityManager.cpp', - 'nsSystemPrincipal.cpp', 'NullPrincipal.cpp', 'NullPrincipalURI.cpp', + 'SystemPrincipal.cpp', ] LOCAL_INCLUDES += [ '/docshell/base', '/dom/base', '/js/xpconnect/src', ]
--- a/caps/nsIPrincipal.idl +++ b/caps/nsIPrincipal.idl @@ -352,17 +352,17 @@ interface nsIPrincipal : nsISerializable /** * Returns true iff this is the system principal. */ [infallible] readonly attribute boolean isSystemPrincipal; }; /** - * If nsSystemPrincipal is too risky to use, but we want a principal to access + * If SystemPrincipal is too risky to use, but we want a principal to access * more than one origin, ExpandedPrincipals letting us define an array of * principals it subsumes. So script with an ExpandedPrincipals will gain * same origin access when at least one of its principals it contains gained * sameorigin acccess. An ExpandedPrincipal will be subsumed by the system * principal, and by another ExpandedPrincipal that has all its principals. * It is added for jetpack content-scripts to let them interact with the * content and a well defined set of other domains, without the risk of * leaking out a system principal to the content. See: Bug 734891
--- a/caps/nsScriptSecurityManager.cpp +++ b/caps/nsScriptSecurityManager.cpp @@ -15,17 +15,17 @@ #include "nsIServiceManager.h" #include "nsIScriptObjectPrincipal.h" #include "nsIScriptContext.h" #include "nsIURL.h" #include "nsINestedURI.h" #include "nspr.h" #include "nsJSPrincipals.h" #include "mozilla/BasePrincipal.h" -#include "nsSystemPrincipal.h" +#include "SystemPrincipal.h" #include "nsPrincipal.h" #include "NullPrincipal.h" #include "DomainPolicy.h" #include "nsXPIDLString.h" #include "nsCRT.h" #include "nsCRTGlue.h" #include "nsDocShell.h" #include "nsError.h" @@ -1330,17 +1330,17 @@ nsresult nsScriptSecurityManager::Init() mozilla::services::GetStringBundleService(); if (!bundleService) return NS_ERROR_FAILURE; rv = bundleService->CreateBundle("chrome://global/locale/security/caps.properties", &sStrBundle); NS_ENSURE_SUCCESS(rv, rv); // Create our system principal singleton - RefPtr<nsSystemPrincipal> system = nsSystemPrincipal::Create(); + RefPtr<SystemPrincipal> system = SystemPrincipal::Create(); mSystemPrincipal = system; //-- Register security check callback in the JS engine // Currently this is used to control access to function.caller sContext = danger::GetJSContext(); static const JSSecurityCallbacks securityCallbacks = { @@ -1402,23 +1402,23 @@ nsScriptSecurityManager::InitStatics() ClearOnShutdown(&gScriptSecMan); gScriptSecMan = ssManager; } // Currently this nsGenericFactory constructor is used only from FastLoad // (XPCOM object deserialization) code, when "creating" the system principal // singleton. -nsSystemPrincipal * +SystemPrincipal * nsScriptSecurityManager::SystemPrincipalSingletonConstructor() { nsIPrincipal *sysprin = nullptr; if (gScriptSecMan) NS_ADDREF(sysprin = gScriptSecMan->mSystemPrincipal); - return static_cast<nsSystemPrincipal*>(sysprin); + return static_cast<SystemPrincipal*>(sysprin); } struct IsWhitespace { static bool Test(char aChar) { return NS_IsAsciiWhitespace(aChar); }; }; struct IsWhitespaceOrComma { static bool Test(char aChar) { return aChar == ',' || NS_IsAsciiWhitespace(aChar); }; };
--- a/caps/nsScriptSecurityManager.h +++ b/caps/nsScriptSecurityManager.h @@ -19,17 +19,17 @@ #include "plstr.h" #include "js/TypeDecls.h" #include <stdint.h> class nsCString; class nsIIOService; class nsIStringBundle; -class nsSystemPrincipal; +class SystemPrincipal; namespace mozilla { class OriginAttributes; } // namespace mozilla ///////////////////////////// // nsScriptSecurityManager // ///////////////////////////// @@ -50,17 +50,17 @@ public: NS_DECL_NSIOBSERVER static nsScriptSecurityManager* GetScriptSecurityManager(); // Invoked exactly once, by XPConnect. static void InitStatics(); - static nsSystemPrincipal* + static SystemPrincipal* SystemPrincipalSingletonConstructor(); /** * Utility method for comparing two URIs. For security purposes, two URIs * are equivalent if their schemes, hosts, and ports (if any) match. This * method returns true if aSubjectURI and aObjectURI have the same origin, * false otherwise. */
--- a/layout/build/nsLayoutModule.cpp +++ b/layout/build/nsLayoutModule.cpp @@ -127,17 +127,17 @@ using mozilla::dom::AudioChannelAgent; #include "mozilla/EditorController.h" //CID #include "mozilla/HTMLEditor.h" #include "nsTextServicesDocument.h" #include "nsTextServicesCID.h" #include "nsScriptSecurityManager.h" #include "nsPrincipal.h" -#include "nsSystemPrincipal.h" +#include "SystemPrincipal.h" #include "NullPrincipal.h" #include "nsNetCID.h" #ifndef MOZ_WIDGET_GONK #if defined(MOZ_WIDGET_ANDROID) #include "nsHapticFeedback.h" #endif #endif #include "nsParserUtils.h" @@ -586,17 +586,17 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(PocketSph #endif NS_GENERIC_FACTORY_CONSTRUCTOR(nsContentSecurityManager) NS_GENERIC_FACTORY_CONSTRUCTOR(nsCSPContext) NS_GENERIC_FACTORY_CONSTRUCTOR(CSPService) NS_GENERIC_FACTORY_CONSTRUCTOR(nsMixedContentBlocker) NS_GENERIC_FACTORY_CONSTRUCTOR(nsPrincipal) -NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSystemPrincipal, +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(SystemPrincipal, nsScriptSecurityManager::SystemPrincipalSingletonConstructor) NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NullPrincipal, Init) NS_GENERIC_FACTORY_CONSTRUCTOR(nsStructuredCloneContainer) NS_GENERIC_FACTORY_CONSTRUCTOR(OSFileConstantsService) NS_GENERIC_FACTORY_CONSTRUCTOR(UDPSocketChild) NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GeckoMediaPluginService, GeckoMediaPluginService::GetGeckoMediaPluginService) @@ -1023,17 +1023,17 @@ static const mozilla::Module::CIDEntry k { &kNS_CSPCONTEXT_CID, false, nullptr, nsCSPContextConstructor }, { &kNS_MIXEDCONTENTBLOCKER_CID, false, nullptr, nsMixedContentBlockerConstructor }, { &kNS_EVENTLISTENERSERVICE_CID, false, nullptr, CreateEventListenerService }, { &kNS_GLOBALMESSAGEMANAGER_CID, false, nullptr, CreateGlobalMessageManager }, { &kNS_PARENTPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateParentMessageManager }, { &kNS_CHILDPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateChildMessageManager }, { &kNS_SCRIPTSECURITYMANAGER_CID, false, nullptr, Construct_nsIScriptSecurityManager }, { &kNS_PRINCIPAL_CID, false, nullptr, nsPrincipalConstructor }, - { &kNS_SYSTEMPRINCIPAL_CID, false, nullptr, nsSystemPrincipalConstructor }, + { &kNS_SYSTEMPRINCIPAL_CID, false, nullptr, SystemPrincipalConstructor }, { &kNS_NULLPRINCIPAL_CID, false, nullptr, NullPrincipalConstructor }, { &kNS_DEVICE_SENSORS_CID, false, nullptr, nsDeviceSensorsConstructor }, #ifndef MOZ_WIDGET_GONK #if defined(ANDROID) { &kNS_HAPTICFEEDBACK_CID, false, nullptr, nsHapticFeedbackConstructor }, #endif #endif { &kTHIRDPARTYUTIL_CID, false, nullptr, ThirdPartyUtilConstructor },