Skip to content
This repository has been archived by the owner on Jul 23, 2024. It is now read-only.

Commit

Permalink
Bug 1153988 - create nsNullPrincipals directly, rather than going thr…
Browse files Browse the repository at this point in the history
…ough 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.
  • Loading branch information
froydnj committed Apr 13, 2015
1 parent bbbc7ba commit 1e6cdad
Show file tree
Hide file tree
Showing 21 changed files with 52 additions and 59 deletions.
7 changes: 3 additions & 4 deletions docshell/base/nsDocShell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1628,7 +1628,7 @@ nsDocShell::LoadURI(nsIURI* aURI,

if (aLoadFlags & LOAD_FLAGS_DISALLOW_INHERIT_OWNER) {
inheritOwner = false;
owner = do_CreateInstance("@mozilla.org/nullprincipal;1");
owner = nsNullPrincipal::Create();
}

uint32_t flags = 0;
Expand Down Expand Up @@ -12015,7 +12015,7 @@ nsDocShell::LoadHistoryEntry(nsISHEntry* aEntry, uint32_t aLoadType)
// Ensure that we have an owner. Otherwise javascript: URIs will
// pick it up from the about:blank page we just loaded, and we
// 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);
}
}
Expand Down Expand Up @@ -13690,8 +13690,7 @@ nsDocShell::GetPrintPreview(nsIWebBrowserPrint** aPrintPreview)
nsCOMPtr<nsIDocumentViewerPrint> print = do_QueryInterface(mContentViewer);
if (!print || !print->IsInitializedForPrintPreview()) {
Stop(nsIWebNavigation::STOP_ALL);
nsCOMPtr<nsIPrincipal> principal =
do_CreateInstance("@mozilla.org/nullprincipal;1");
nsCOMPtr<nsIPrincipal> principal = nsNullPrincipal::Create();
NS_ENSURE_STATE(principal);
nsresult rv = CreateAboutBlankContentViewer(principal, nullptr);
NS_ENSURE_SUCCESS(rv, rv);
Expand Down
10 changes: 5 additions & 5 deletions dom/base/DOMParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "nsDOMJSUtils.h"
#include "nsError.h"
#include "nsPIDOMWindow.h"
#include "nsNullPrincipal.h"
#include "mozilla/LoadInfo.h"
#include "mozilla/dom/BindingUtils.h"
#include "mozilla/dom/ScriptSettings.h"
Expand Down Expand Up @@ -348,8 +349,8 @@ DOMParser::Init(nsIPrincipal* principal, nsIURI* documentURI,
if (nsContentUtils::IsSystemPrincipal(mPrincipal)) {
// Don't give DOMParsers the system principal. Use a null
// principal instead.
mPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
mPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(mPrincipal, NS_ERROR_FAILURE);

if (!mDocumentURI) {
rv = mPrincipal->GetURI(getter_AddRefs(mDocumentURI));
Expand Down Expand Up @@ -464,9 +465,8 @@ DOMParser::SetUpDocument(DocumentFlavor aFlavor, nsIDOMDocument** aResult)
NS_ENSURE_TRUE(!mAttemptedInit, NS_ERROR_NOT_INITIALIZED);
AttemptedInitMarker marker(&mAttemptedInit);

nsCOMPtr<nsIPrincipal> prin =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> prin = nsNullPrincipal::Create();
NS_ENSURE_TRUE(prin, NS_ERROR_FAILURE);

rv = Init(prin, nullptr, nullptr, scriptHandlingObject);
NS_ENSURE_SUCCESS(rv, rv);
Expand Down
7 changes: 4 additions & 3 deletions dom/base/nsNodeInfoManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "nsCCUncollectableMarker.h"
#include "nsNameSpaceManager.h"
#include "nsDocument.h"
#include "nsNullPrincipal.h"

using namespace mozilla;
using mozilla::dom::NodeInfo;
Expand Down Expand Up @@ -188,9 +189,9 @@ nsNodeInfoManager::Init(nsIDocument *aDocument)

NS_PRECONDITION(!mPrincipal,
"Being inited when we already have a principal?");
nsresult rv;
mPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_TRUE(mPrincipal, rv);

mPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(mPrincipal, NS_ERROR_FAILURE);

if (aDocument) {
mBindingManager = new nsBindingManager(aDocument);
Expand Down
8 changes: 4 additions & 4 deletions dom/datastore/DataStoreDB.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "nsIDOMEvent.h"
#include "nsIPrincipal.h"
#include "nsIXPConnect.h"
#include "nsNullPrincipal.h"

#define DATASTOREDB_VERSION 1
#define DATASTOREDB_NAME "DataStoreDB"
Expand Down Expand Up @@ -103,10 +104,9 @@ DataStoreDB::CreateFactoryIfNeeded()
{
if (!mFactory) {
nsresult rv;
nsCOMPtr<nsIPrincipal> principal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
nsCOMPtr<nsIPrincipal> principal = nsNullPrincipal::Create();
if (!principal) {
return NS_ERROR_FAILURE;
}

nsIXPConnect* xpc = nsContentUtils::XPConnect();
Expand Down
5 changes: 2 additions & 3 deletions dom/json/nsJSON.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,9 +411,8 @@ nsJSON::DecodeInternal(JSContext* cx,
}

nsresult rv;
nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);

rv = NS_NewInputStreamChannel(getter_AddRefs(jsonChannel),
mURI,
Expand Down
5 changes: 2 additions & 3 deletions dom/jsurl/nsJSProtocolHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,9 +430,8 @@ nsresult nsJSChannel::Init(nsIURI *aURI)
// and the underlying Input Stream will not be created...
nsCOMPtr<nsIChannel> channel;

nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);

// If the resultant script evaluation actually does return a value, we
// treat it as html.
Expand Down
3 changes: 2 additions & 1 deletion dom/media/MediaManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
#include "VideoUtils.h"
#include "Latency.h"
#include "nsProxyRelease.h"
#include "nsNullPrincipal.h"

// For PR_snprintf
#include "prprf.h"
Expand Down Expand Up @@ -1007,7 +1008,7 @@ class GetUserMediaStreamRunnable : public nsRunnable

nsCOMPtr<nsIPrincipal> principal;
if (mPeerIdentity) {
principal = do_CreateInstance("@mozilla.org/nullprincipal;1");
principal = nsNullPrincipal::Create();
trackunion->SetPeerIdentity(mPeerIdentity.forget());
} else {
principal = window->GetExtantDoc()->NodePrincipal();
Expand Down
5 changes: 3 additions & 2 deletions dom/plugins/base/nsPluginHost.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@
#include "nsIImageLoadingContent.h"
#include "mozilla/Preferences.h"
#include "nsVersionComparator.h"
#include "nsNullPrincipal.h"

#if defined(XP_WIN)
#include "nsIWindowMediator.h"
Expand Down Expand Up @@ -3117,8 +3118,8 @@ nsresult nsPluginHost::NewPluginURLStream(const nsString& aURL,
// 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
// a nullPrincipal as the loadingPrincipal.
principal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
principal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(principal, NS_ERROR_FAILURE);
rv = NS_NewChannel(getter_AddRefs(channel),
url,
principal,
Expand Down
6 changes: 3 additions & 3 deletions dom/plugins/base/nsPluginStreamListenerPeer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include "GeckoProfiler.h"
#include "nsPluginInstanceOwner.h"
#include "nsDataHashtable.h"
#include "nsNullPrincipal.h"

#define MAGIC_REQUEST_CONTEXT 0x01020304

Expand Down Expand Up @@ -700,9 +701,8 @@ nsPluginStreamListenerPeer::RequestRead(NPByteRange* rangeList)
// 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
// a nullPrincipal as the loadingPrincipal.
nsCOMPtr<nsIPrincipal> principal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> principal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(principal, NS_ERROR_FAILURE);
rv = NS_NewChannel(getter_AddRefs(channel),
mURL,
principal,
Expand Down
3 changes: 2 additions & 1 deletion dom/security/nsCORSListenerProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "nsIDOMWindowUtils.h"
#include "nsIDOMWindow.h"
#include "nsINetworkInterceptController.h"
#include "nsNullPrincipal.h"
#include <algorithm>

using namespace mozilla;
Expand Down Expand Up @@ -752,7 +753,7 @@ nsCORSListenerProxy::AsyncOnChannelRedirect(nsIChannel *aOldChannel,
if (NS_SUCCEEDED(rv)) {
if (!equal) {
// Spec says to set our source origin to a unique origin.
mOriginHeaderPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1");
mOriginHeaderPrincipal = nsNullPrincipal::Create();
if (!mOriginHeaderPrincipal) {
rv = NS_ERROR_OUT_OF_MEMORY;
}
Expand Down
5 changes: 2 additions & 3 deletions dom/security/nsCSPContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -783,9 +783,8 @@ nsCSPContext::SendReports(nsISupports* aBlockedContentSource,
nsIContentPolicy::TYPE_CSP_REPORT);
}
else {
nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
rv = NS_NewChannel(getter_AddRefs(reportChannel),
reportURI,
nullPrincipal,
Expand Down
5 changes: 2 additions & 3 deletions image/decoders/icon/android/nsIconChannel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,8 @@ moz_icon_to_channel(nsIURI* aURI, const nsACString& aFileExt,
rv = stream->AdoptData((char*)buf, buf_size);
NS_ENSURE_SUCCESS(rv, rv);

nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);

return NS_NewInputStreamChannel(aChannel,
aURI,
Expand Down
5 changes: 2 additions & 3 deletions image/decoders/icon/gtk/nsIconChannel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,8 @@ moz_gdk_pixbuf_to_channel(GdkPixbuf* aPixbuf, nsIURI* aURI,
MOZ_ASSERT(NS_SUCCEEDED(rv));
NS_ENSURE_SUCCESS(rv, rv);

nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);

return NS_NewInputStreamChannel(aChannel,
aURI,
Expand Down
5 changes: 2 additions & 3 deletions image/decoders/icon/qt/nsIconChannel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,8 @@ moz_qicon_to_channel(QImage* image, nsIURI* aURI,
rv = stream->AdoptData((char*)buf, buf_size);
NS_ENSURE_SUCCESS(rv, rv);

nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);

return NS_NewInputStreamChannel(aChannel,
aURI,
Expand Down
3 changes: 2 additions & 1 deletion layout/style/CSSStyleSheet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#include "mozilla/Likely.h"
#include "mozilla/dom/CSSStyleSheetBinding.h"
#include "nsComponentManagerUtils.h"
#include "nsNullPrincipal.h"

using namespace mozilla;
using namespace mozilla::dom;
Expand Down Expand Up @@ -733,7 +734,7 @@ CSSStyleSheetInner::CSSStyleSheetInner(CSSStyleSheet* aPrimarySheet,
MOZ_COUNT_CTOR(CSSStyleSheetInner);
mSheets.AppendElement(aPrimarySheet);

mPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1");
mPrincipal = nsNullPrincipal::Create();
if (!mPrincipal) {
NS_RUNTIMEABORT("OOM");
}
Expand Down
5 changes: 2 additions & 3 deletions netwerk/base/nsURIChecker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,8 @@ NS_IMETHODIMP
nsURIChecker::Init(nsIURI *aURI)
{
nsresult rv;
nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
rv = NS_NewChannel(getter_AddRefs(mChannel),
aURI,
nullPrincipal,
Expand Down
5 changes: 2 additions & 3 deletions netwerk/protocol/viewsource/nsViewSourceChannel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,8 @@ nsViewSourceChannel::Init(nsIURI* uri)
// and sets the right loadInfo right after returning from this function.
// Until then we follow the principal of least privilege and use
// nullPrincipal as the loadingPrincipal.
nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);

rv = pService->NewChannel2(path,
nullptr, // aOriginCharset
Expand Down
4 changes: 2 additions & 2 deletions parser/html/nsParserUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include "nsTreeSanitizer.h"
#include "nsHtml5Module.h"
#include "mozilla/dom/DocumentFragment.h"
#include "nsNullPrincipal.h"

#define XHTML_DIV_TAG "div xmlns=\"http://www.w3.org/1999/xhtml\""

Expand Down Expand Up @@ -75,8 +76,7 @@ nsParserUtils::Sanitize(const nsAString& aFromStr,
{
nsCOMPtr<nsIURI> uri;
NS_NewURI(getter_AddRefs(uri), "about:blank");
nsCOMPtr<nsIPrincipal> principal =
do_CreateInstance("@mozilla.org/nullprincipal;1");
nsCOMPtr<nsIPrincipal> principal = nsNullPrincipal::Create();
nsCOMPtr<nsIDOMDocument> domDocument;
nsresult rv = NS_NewDOMDocument(getter_AddRefs(domDocument),
EmptyString(),
Expand Down
5 changes: 2 additions & 3 deletions parser/htmlparser/nsExpatDriver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -808,9 +808,8 @@ nsExpatDriver::OpenInputStreamFromExternalDTD(const char16_t* aFPIStr,
nsIContentPolicy::TYPE_DTD);
}
else {
nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);
rv = NS_NewChannel(getter_AddRefs(channel),
uri,
nullPrincipal,
Expand Down
5 changes: 2 additions & 3 deletions parser/xml/nsSAXXMLReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -496,9 +496,8 @@ nsSAXXMLReader::ParseFromStream(nsIInputStream *aStream,
rv = EnsureBaseURI();
NS_ENSURE_SUCCESS(rv, rv);

nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);

nsCOMPtr<nsIChannel> parserChannel;
rv = NS_NewInputStreamChannel(getter_AddRefs(parserChannel),
Expand Down
5 changes: 2 additions & 3 deletions rdf/base/nsRDFXMLParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,8 @@ nsRDFXMLParser::ParseString(nsIRDFDataSource* aSink, nsIURI* aBaseURI, const nsA
rv = NS_NewCStringInputStream(getter_AddRefs(stream), aString);
if (NS_FAILED(rv)) return rv;

nsCOMPtr<nsIPrincipal> nullPrincipal =
do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIPrincipal> nullPrincipal = nsNullPrincipal::Create();
NS_ENSURE_TRUE(nullPrincipal, NS_ERROR_FAILURE);

nsCOMPtr<nsIChannel> channel;
rv = NS_NewInputStreamChannel(getter_AddRefs(channel),
Expand Down

0 comments on commit 1e6cdad

Please sign in to comment.