Bug 1153988 - create nsNullPrincipals directly, rather than going through do_CreateInstance; r=smaug

There's a better way to create null principals than
do_CreateInstance("@mozilla.org/nullprincipal;1").  Let's do that and
save ourselves some XPCOM overhead.
This commit is contained in:
Nathan Froyd
2015-04-13 14:47:41 -04:00
parent 2d0efd09c4
commit 8fccbf9246
21 changed files with 52 additions and 59 deletions

View File

@@ -1628,7 +1628,7 @@ nsDocShell::LoadURI(nsIURI* aURI,
if (aLoadFlags & LOAD_FLAGS_DISALLOW_INHERIT_OWNER) { if (aLoadFlags & LOAD_FLAGS_DISALLOW_INHERIT_OWNER) {
inheritOwner = false; inheritOwner = false;
owner = do_CreateInstance("@mozilla.org/nullprincipal;1"); owner = nsNullPrincipal::Create();
} }
uint32_t flags = 0; uint32_t flags = 0;
@@ -12015,7 +12015,7 @@ nsDocShell::LoadHistoryEntry(nsISHEntry* aEntry, uint32_t aLoadType)
// Ensure that we have an owner. Otherwise javascript: URIs will // Ensure that we have an owner. Otherwise javascript: URIs will
// pick it up from the about:blank page we just loaded, and we // pick it up from the about:blank page we just loaded, and we
// don't really want even that in this case. // don't really want even that in this case.
owner = do_CreateInstance("@mozilla.org/nullprincipal;1"); owner = nsNullPrincipal::Create();
NS_ENSURE_TRUE(owner, NS_ERROR_OUT_OF_MEMORY); NS_ENSURE_TRUE(owner, NS_ERROR_OUT_OF_MEMORY);
} }
} }
@@ -13690,8 +13690,7 @@ nsDocShell::GetPrintPreview(nsIWebBrowserPrint** aPrintPreview)
nsCOMPtr<nsIDocumentViewerPrint> print = do_QueryInterface(mContentViewer); nsCOMPtr<nsIDocumentViewerPrint> print = do_QueryInterface(mContentViewer);
if (!print || !print->IsInitializedForPrintPreview()) { if (!print || !print->IsInitializedForPrintPreview()) {
Stop(nsIWebNavigation::STOP_ALL); Stop(nsIWebNavigation::STOP_ALL);
nsCOMPtr<nsIPrincipal> principal = nsCOMPtr<nsIPrincipal> principal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1");
NS_ENSURE_STATE(principal); NS_ENSURE_STATE(principal);
nsresult rv = CreateAboutBlankContentViewer(principal, nullptr); nsresult rv = CreateAboutBlankContentViewer(principal, nullptr);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);

View File

@@ -15,6 +15,7 @@
#include "nsDOMJSUtils.h" #include "nsDOMJSUtils.h"
#include "nsError.h" #include "nsError.h"
#include "nsPIDOMWindow.h" #include "nsPIDOMWindow.h"
#include "nsNullPrincipal.h"
#include "mozilla/LoadInfo.h" #include "mozilla/LoadInfo.h"
#include "mozilla/dom/BindingUtils.h" #include "mozilla/dom/BindingUtils.h"
#include "mozilla/dom/ScriptSettings.h" #include "mozilla/dom/ScriptSettings.h"
@@ -348,8 +349,8 @@ DOMParser::Init(nsIPrincipal* principal, nsIURI* documentURI,
if (nsContentUtils::IsSystemPrincipal(mPrincipal)) { if (nsContentUtils::IsSystemPrincipal(mPrincipal)) {
// Don't give DOMParsers the system principal. Use a null // Don't give DOMParsers the system principal. Use a null
// principal instead. // principal instead.
mPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); mPrincipal = nsNullPrincipal::Create();
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(mPrincipal, NS_ERROR_FAILURE);
if (!mDocumentURI) { if (!mDocumentURI) {
rv = mPrincipal->GetURI(getter_AddRefs(mDocumentURI)); rv = mPrincipal->GetURI(getter_AddRefs(mDocumentURI));
@@ -464,9 +465,8 @@ DOMParser::SetUpDocument(DocumentFlavor aFlavor, nsIDOMDocument** aResult)
NS_ENSURE_TRUE(!mAttemptedInit, NS_ERROR_NOT_INITIALIZED); NS_ENSURE_TRUE(!mAttemptedInit, NS_ERROR_NOT_INITIALIZED);
AttemptedInitMarker marker(&mAttemptedInit); AttemptedInitMarker marker(&mAttemptedInit);
nsCOMPtr<nsIPrincipal> prin = nsCOMPtr<nsIPrincipal> prin = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(prin, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
rv = Init(prin, nullptr, nullptr, scriptHandlingObject); rv = Init(prin, nullptr, nullptr, scriptHandlingObject);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);

View File

@@ -29,6 +29,7 @@
#include "nsCCUncollectableMarker.h" #include "nsCCUncollectableMarker.h"
#include "nsNameSpaceManager.h" #include "nsNameSpaceManager.h"
#include "nsDocument.h" #include "nsDocument.h"
#include "nsNullPrincipal.h"
using namespace mozilla; using namespace mozilla;
using mozilla::dom::NodeInfo; using mozilla::dom::NodeInfo;
@@ -188,9 +189,9 @@ nsNodeInfoManager::Init(nsIDocument *aDocument)
NS_PRECONDITION(!mPrincipal, NS_PRECONDITION(!mPrincipal,
"Being inited when we already have a principal?"); "Being inited when we already have a principal?");
nsresult rv;
mPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); mPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(mPrincipal, rv); NS_ENSURE_TRUE(mPrincipal, NS_ERROR_FAILURE);
if (aDocument) { if (aDocument) {
mBindingManager = new nsBindingManager(aDocument); mBindingManager = new nsBindingManager(aDocument);

View File

@@ -23,6 +23,7 @@
#include "nsIDOMEvent.h" #include "nsIDOMEvent.h"
#include "nsIPrincipal.h" #include "nsIPrincipal.h"
#include "nsIXPConnect.h" #include "nsIXPConnect.h"
#include "nsNullPrincipal.h"
#define DATASTOREDB_VERSION 1 #define DATASTOREDB_VERSION 1
#define DATASTOREDB_NAME "DataStoreDB" #define DATASTOREDB_NAME "DataStoreDB"
@@ -103,10 +104,9 @@ DataStoreDB::CreateFactoryIfNeeded()
{ {
if (!mFactory) { if (!mFactory) {
nsresult rv; nsresult rv;
nsCOMPtr<nsIPrincipal> principal = nsCOMPtr<nsIPrincipal> principal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); if (!principal) {
if (NS_WARN_IF(NS_FAILED(rv))) { return NS_ERROR_FAILURE;
return rv;
} }
nsIXPConnect* xpc = nsContentUtils::XPConnect(); nsIXPConnect* xpc = nsContentUtils::XPConnect();

View File

@@ -411,9 +411,8 @@ nsJSON::DecodeInternal(JSContext* cx,
} }
nsresult rv; nsresult rv;
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
rv = NS_NewInputStreamChannel(getter_AddRefs(jsonChannel), rv = NS_NewInputStreamChannel(getter_AddRefs(jsonChannel),
mURI, mURI,

View File

@@ -430,9 +430,8 @@ nsresult nsJSChannel::Init(nsIURI *aURI)
// and the underlying Input Stream will not be created... // and the underlying Input Stream will not be created...
nsCOMPtr<nsIChannel> channel; nsCOMPtr<nsIChannel> channel;
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
// If the resultant script evaluation actually does return a value, we // If the resultant script evaluation actually does return a value, we
// treat it as html. // treat it as html.

View File

@@ -47,6 +47,7 @@
#include "VideoUtils.h" #include "VideoUtils.h"
#include "Latency.h" #include "Latency.h"
#include "nsProxyRelease.h" #include "nsProxyRelease.h"
#include "nsNullPrincipal.h"
// For PR_snprintf // For PR_snprintf
#include "prprf.h" #include "prprf.h"
@@ -1007,7 +1008,7 @@ public:
nsCOMPtr<nsIPrincipal> principal; nsCOMPtr<nsIPrincipal> principal;
if (mPeerIdentity) { if (mPeerIdentity) {
principal = do_CreateInstance("@mozilla.org/nullprincipal;1"); principal = nsNullPrincipal::Create();
trackunion->SetPeerIdentity(mPeerIdentity.forget()); trackunion->SetPeerIdentity(mPeerIdentity.forget());
} else { } else {
principal = window->GetExtantDoc()->NodePrincipal(); principal = window->GetExtantDoc()->NodePrincipal();

View File

@@ -91,6 +91,7 @@
#include "nsIImageLoadingContent.h" #include "nsIImageLoadingContent.h"
#include "mozilla/Preferences.h" #include "mozilla/Preferences.h"
#include "nsVersionComparator.h" #include "nsVersionComparator.h"
#include "nsNullPrincipal.h"
#if defined(XP_WIN) #if defined(XP_WIN)
#include "nsIWindowMediator.h" #include "nsIWindowMediator.h"
@@ -3117,8 +3118,8 @@ nsresult nsPluginHost::NewPluginURLStream(const nsString& aURL,
// in this else branch we really don't know where the load is coming // in this else branch we really don't know where the load is coming
// from and in fact should use something better than just using // from and in fact should use something better than just using
// a nullPrincipal as the loadingPrincipal. // a nullPrincipal as the loadingPrincipal.
principal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); principal = nsNullPrincipal::Create();
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(principal, NS_ERROR_FAILURE);
rv = NS_NewChannel(getter_AddRefs(channel), rv = NS_NewChannel(getter_AddRefs(channel),
url, url,
principal, principal,

View File

@@ -32,6 +32,7 @@
#include "GeckoProfiler.h" #include "GeckoProfiler.h"
#include "nsPluginInstanceOwner.h" #include "nsPluginInstanceOwner.h"
#include "nsDataHashtable.h" #include "nsDataHashtable.h"
#include "nsNullPrincipal.h"
#define MAGIC_REQUEST_CONTEXT 0x01020304 #define MAGIC_REQUEST_CONTEXT 0x01020304
@@ -700,9 +701,8 @@ nsPluginStreamListenerPeer::RequestRead(NPByteRange* rangeList)
// in this else branch we really don't know where the load is coming // in this else branch we really don't know where the load is coming
// from and in fact should use something better than just using // from and in fact should use something better than just using
// a nullPrincipal as the loadingPrincipal. // a nullPrincipal as the loadingPrincipal.
nsCOMPtr<nsIPrincipal> principal = nsCOMPtr<nsIPrincipal> principal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(principal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
rv = NS_NewChannel(getter_AddRefs(channel), rv = NS_NewChannel(getter_AddRefs(channel),
mURL, mURL,
principal, principal,

View File

@@ -35,6 +35,7 @@
#include "nsIDOMWindowUtils.h" #include "nsIDOMWindowUtils.h"
#include "nsIDOMWindow.h" #include "nsIDOMWindow.h"
#include "nsINetworkInterceptController.h" #include "nsINetworkInterceptController.h"
#include "nsNullPrincipal.h"
#include <algorithm> #include <algorithm>
using namespace mozilla; using namespace mozilla;
@@ -752,7 +753,7 @@ nsCORSListenerProxy::AsyncOnChannelRedirect(nsIChannel *aOldChannel,
if (NS_SUCCEEDED(rv)) { if (NS_SUCCEEDED(rv)) {
if (!equal) { if (!equal) {
// Spec says to set our source origin to a unique origin. // Spec says to set our source origin to a unique origin.
mOriginHeaderPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1"); mOriginHeaderPrincipal = nsNullPrincipal::Create();
if (!mOriginHeaderPrincipal) { if (!mOriginHeaderPrincipal) {
rv = NS_ERROR_OUT_OF_MEMORY; rv = NS_ERROR_OUT_OF_MEMORY;
} }

View File

@@ -783,9 +783,8 @@ nsCSPContext::SendReports(nsISupports* aBlockedContentSource,
nsIContentPolicy::TYPE_CSP_REPORT); nsIContentPolicy::TYPE_CSP_REPORT);
} }
else { else {
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
rv = NS_NewChannel(getter_AddRefs(reportChannel), rv = NS_NewChannel(getter_AddRefs(reportChannel),
reportURI, reportURI,
nullPrincipal, nullPrincipal,

View File

@@ -111,9 +111,8 @@ moz_icon_to_channel(nsIURI* aURI, const nsACString& aFileExt,
rv = stream->AdoptData((char*)buf, buf_size); rv = stream->AdoptData((char*)buf, buf_size);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
return NS_NewInputStreamChannel(aChannel, return NS_NewInputStreamChannel(aChannel,
aURI, aURI,

View File

@@ -101,9 +101,8 @@ moz_gdk_pixbuf_to_channel(GdkPixbuf* aPixbuf, nsIURI* aURI,
MOZ_ASSERT(NS_SUCCEEDED(rv)); MOZ_ASSERT(NS_SUCCEEDED(rv));
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
return NS_NewInputStreamChannel(aChannel, return NS_NewInputStreamChannel(aChannel,
aURI, aURI,

View File

@@ -84,9 +84,8 @@ moz_qicon_to_channel(QImage* image, nsIURI* aURI,
rv = stream->AdoptData((char*)buf, buf_size); rv = stream->AdoptData((char*)buf, buf_size);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
return NS_NewInputStreamChannel(aChannel, return NS_NewInputStreamChannel(aChannel,
aURI, aURI,

View File

@@ -43,6 +43,7 @@
#include "mozilla/Likely.h" #include "mozilla/Likely.h"
#include "mozilla/dom/CSSStyleSheetBinding.h" #include "mozilla/dom/CSSStyleSheetBinding.h"
#include "nsComponentManagerUtils.h" #include "nsComponentManagerUtils.h"
#include "nsNullPrincipal.h"
using namespace mozilla; using namespace mozilla;
using namespace mozilla::dom; using namespace mozilla::dom;
@@ -733,7 +734,7 @@ CSSStyleSheetInner::CSSStyleSheetInner(CSSStyleSheet* aPrimarySheet,
MOZ_COUNT_CTOR(CSSStyleSheetInner); MOZ_COUNT_CTOR(CSSStyleSheetInner);
mSheets.AppendElement(aPrimarySheet); mSheets.AppendElement(aPrimarySheet);
mPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1"); mPrincipal = nsNullPrincipal::Create();
if (!mPrincipal) { if (!mPrincipal) {
NS_RUNTIMEABORT("OOM"); NS_RUNTIMEABORT("OOM");
} }

View File

@@ -137,9 +137,8 @@ NS_IMETHODIMP
nsURIChecker::Init(nsIURI *aURI) nsURIChecker::Init(nsIURI *aURI)
{ {
nsresult rv; nsresult rv;
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
rv = NS_NewChannel(getter_AddRefs(mChannel), rv = NS_NewChannel(getter_AddRefs(mChannel),
aURI, aURI,
nullPrincipal, nullPrincipal,

View File

@@ -60,9 +60,8 @@ nsViewSourceChannel::Init(nsIURI* uri)
// and sets the right loadInfo right after returning from this function. // and sets the right loadInfo right after returning from this function.
// Until then we follow the principal of least privilege and use // Until then we follow the principal of least privilege and use
// nullPrincipal as the loadingPrincipal. // nullPrincipal as the loadingPrincipal.
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
rv = pService->NewChannel2(path, rv = pService->NewChannel2(path,
nullptr, // aOriginCharset nullptr, // aOriginCharset

View File

@@ -36,6 +36,7 @@
#include "nsTreeSanitizer.h" #include "nsTreeSanitizer.h"
#include "nsHtml5Module.h" #include "nsHtml5Module.h"
#include "mozilla/dom/DocumentFragment.h" #include "mozilla/dom/DocumentFragment.h"
#include "nsNullPrincipal.h"
#define XHTML_DIV_TAG "div xmlns=\"http://www.w3.org/1999/xhtml\"" #define XHTML_DIV_TAG "div xmlns=\"http://www.w3.org/1999/xhtml\""
@@ -75,8 +76,7 @@ nsParserUtils::Sanitize(const nsAString& aFromStr,
{ {
nsCOMPtr<nsIURI> uri; nsCOMPtr<nsIURI> uri;
NS_NewURI(getter_AddRefs(uri), "about:blank"); NS_NewURI(getter_AddRefs(uri), "about:blank");
nsCOMPtr<nsIPrincipal> principal = nsCOMPtr<nsIPrincipal> principal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1");
nsCOMPtr<nsIDOMDocument> domDocument; nsCOMPtr<nsIDOMDocument> domDocument;
nsresult rv = NS_NewDOMDocument(getter_AddRefs(domDocument), nsresult rv = NS_NewDOMDocument(getter_AddRefs(domDocument),
EmptyString(), EmptyString(),

View File

@@ -808,9 +808,8 @@ nsExpatDriver::OpenInputStreamFromExternalDTD(const char16_t* aFPIStr,
nsIContentPolicy::TYPE_DTD); nsIContentPolicy::TYPE_DTD);
} }
else { else {
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
rv = NS_NewChannel(getter_AddRefs(channel), rv = NS_NewChannel(getter_AddRefs(channel),
uri, uri,
nullPrincipal, nullPrincipal,

View File

@@ -496,9 +496,8 @@ nsSAXXMLReader::ParseFromStream(nsIInputStream *aStream,
rv = EnsureBaseURI(); rv = EnsureBaseURI();
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIChannel> parserChannel; nsCOMPtr<nsIChannel> parserChannel;
rv = NS_NewInputStreamChannel(getter_AddRefs(parserChannel), rv = NS_NewInputStreamChannel(getter_AddRefs(parserChannel),

View File

@@ -115,9 +115,8 @@ nsRDFXMLParser::ParseString(nsIRDFDataSource* aSink, nsIURI* aBaseURI, const nsA
rv = NS_NewCStringInputStream(getter_AddRefs(stream), aString); rv = NS_NewCStringInputStream(getter_AddRefs(stream), aString);
if (NS_FAILED(rv)) return rv; if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIPrincipal> nullPrincipal = nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv); NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIChannel> channel; nsCOMPtr<nsIChannel> channel;
rv = NS_NewInputStreamChannel(getter_AddRefs(channel), rv = NS_NewInputStreamChannel(getter_AddRefs(channel),