gecko-dev/layout/style/URLExtraData.cpp
Tom Ritter 449237fc51 Bug 1378552 - Reduce the liklihood of inadvertently misusing NullPrincipal::Create(). r=ckerschb
NullPrincipal::Create() (will null OA) may cause an OriginAttributes bypass.
We change Create() so OriginAttributes is no longer optional, and rename
Create() with no arguments to make it more explicit about what the caller is doing.

MozReview-Commit-ID: 7DQGlgh1tgJ
2018-03-22 13:36:20 -05:00

47 lines
1.4 KiB
C++

/* -*- 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/. */
/* thread-safe container of information for resolving url values */
#include "mozilla/URLExtraData.h"
#include "nsProxyRelease.h"
#include "NullPrincipalURI.h"
namespace mozilla {
StaticRefPtr<URLExtraData> URLExtraData::sDummy;
/* static */ void
URLExtraData::InitDummy()
{
RefPtr<nsIURI> baseURI = NullPrincipalURI::Create();
RefPtr<nsIURI> referrer = baseURI;
sDummy = new URLExtraData(baseURI.forget(),
referrer.forget(),
NullPrincipal::CreateWithoutOriginAttributes());
}
/* static */ void
URLExtraData::ReleaseDummy()
{
sDummy = nullptr;
}
URLExtraData::~URLExtraData()
{
if (!NS_IsMainThread()) {
NS_ReleaseOnMainThreadSystemGroup("URLExtraData::mBaseURI",
mBaseURI.forget());
NS_ReleaseOnMainThreadSystemGroup("URLExtraData::mReferrer",
mReferrer.forget());
NS_ReleaseOnMainThreadSystemGroup("URLExtraData::mPrincipal",
mPrincipal.forget());
}
}
} // namespace mozilla