mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 07:15:46 +00:00
Make sure to always have a principal for a document; fall back to a null
principal if all else fails. Bug 327246, r+sr=jst
This commit is contained in:
parent
c4f9fa3841
commit
3cb291fd96
@ -51,6 +51,7 @@
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsLayoutAtoms.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
|
||||
PRUint32 nsNodeInfoManager::gNodeManagerCount;
|
||||
|
||||
@ -114,6 +115,7 @@ nsNodeInfoManager::~nsNodeInfoManager()
|
||||
nsNodeInfo::ClearCache();
|
||||
}
|
||||
|
||||
// Note: mPrincipal may be null here if we never got inited correctly
|
||||
NS_IF_RELEASE(mPrincipal);
|
||||
|
||||
#ifdef DEBUG_jst
|
||||
@ -153,6 +155,14 @@ nsNodeInfoManager::Init(nsIDocument *aDocument)
|
||||
{
|
||||
NS_ENSURE_TRUE(mNodeInfoHash, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
NS_PRECONDITION(!mPrincipal,
|
||||
"Being inited when we already have a principal?");
|
||||
nsresult rv = CallCreateInstance("@mozilla.org/nullprincipal;1",
|
||||
&mPrincipal);
|
||||
NS_ENSURE_TRUE(mPrincipal, rv);
|
||||
|
||||
mDefaultPrincipal = mPrincipal;
|
||||
|
||||
mDocument = aDocument;
|
||||
|
||||
return NS_OK;
|
||||
@ -300,8 +310,11 @@ nsNodeInfoManager::GetDocumentNodeInfo()
|
||||
void
|
||||
nsNodeInfoManager::SetDocumentPrincipal(nsIPrincipal *aPrincipal)
|
||||
{
|
||||
NS_IF_RELEASE(mPrincipal);
|
||||
NS_IF_ADDREF(mPrincipal = aPrincipal);
|
||||
NS_RELEASE(mPrincipal);
|
||||
if (!aPrincipal) {
|
||||
aPrincipal = mDefaultPrincipal;
|
||||
}
|
||||
NS_ADDREF(mPrincipal = aPrincipal);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -151,7 +151,9 @@ private:
|
||||
PLHashTable *mNodeInfoHash;
|
||||
nsIDocument *mDocument; // WEAK
|
||||
nsIPrincipal *mPrincipal; // STRONG, but not nsCOMPtr to avoid include hell
|
||||
// while inlining of GetPrincipal()
|
||||
// while inlining of GetPrincipal(). Never null
|
||||
// after Init() succeeds.
|
||||
nsCOMPtr<nsIPrincipal> mDefaultPrincipal; // Never null after Init() succeeds
|
||||
nsINodeInfo *mTextNodeInfo; // WEAK to avoid circular ownership
|
||||
nsINodeInfo *mCommentNodeInfo; // WEAK to avoid circular ownership
|
||||
nsINodeInfo *mDocumentNodeInfo; // WEAK to avoid circular ownership
|
||||
|
Loading…
Reference in New Issue
Block a user