Bug 1476928 - Remove nsIURI.CloneIgnoringRef and nsIURI.CloneWithNewRef r=JuniorHsu

The patch introduces NS_GetURIWithNewRef and NS_GetURIWithNewRef which perform the same function.

Differential Revision: https://phabricator.services.mozilla.com/D2239

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Valentin Gosu 2018-07-23 11:28:47 +00:00
parent 842fbbb159
commit 7937c7c4cc
37 changed files with 114 additions and 175 deletions

View File

@ -291,22 +291,6 @@ NullPrincipalURI::Clone(nsIURI** _newURI)
return NS_OK;
}
NS_IMETHODIMP
NullPrincipalURI::CloneIgnoringRef(nsIURI** _newURI)
{
// GetRef/SetRef not supported by NullPrincipalURI, so
// CloneIgnoringRef() is the same as Clone().
return Clone(_newURI);
}
NS_IMETHODIMP
NullPrincipalURI::CloneWithNewRef(const nsACString& newRef, nsIURI** _newURI)
{
// GetRef/SetRef not supported by NullPrincipalURI, so
// CloneWithNewRef() is the same as Clone().
return Clone(_newURI);
}
NS_IMPL_ISUPPORTS(NullPrincipalURI::Mutator, nsIURISetters, nsIURIMutator)
NS_IMETHODIMP

View File

@ -206,26 +206,6 @@ Location::GetURI(nsIURI** aURI, bool aGetInnermostURI)
return urifixup->CreateExposableURI(uri, aURI);
}
nsresult
Location::GetWritableURI(nsIURI** aURI, const nsACString* aNewRef)
{
*aURI = nullptr;
nsCOMPtr<nsIURI> uri;
nsresult rv = GetURI(getter_AddRefs(uri));
if (NS_FAILED(rv) || !uri) {
return rv;
}
if (!aNewRef) {
uri.forget(aURI);
return NS_OK;
}
return uri->CloneWithNewRef(*aNewRef, aURI);
}
nsresult
Location::SetURI(nsIURI* aURI, bool aReplace)
{
@ -313,7 +293,14 @@ Location::SetHash(const nsAString& aHash,
}
nsCOMPtr<nsIURI> uri;
aRv = GetWritableURI(getter_AddRefs(uri), &hash);
aRv = GetURI(getter_AddRefs(uri));
if (NS_WARN_IF(aRv.Failed()) || !uri) {
return;
}
aRv = NS_MutateURI(uri)
.SetRef(hash)
.Finalize(uri);
if (NS_WARN_IF(aRv.Failed()) || !uri) {
return;
}

View File

@ -166,11 +166,6 @@ protected:
// Note, this method can return NS_OK with a null value for aURL. This happens
// if the docShell is null.
nsresult GetURI(nsIURI** aURL, bool aGetInnermostURI = false);
// Note, this method can return NS_OK with a null value for aURL. This happens
// if the docShell is null.
nsresult GetWritableURI(nsIURI** aURL,
// If not null, give it the new ref
const nsACString* aNewRef = nullptr);
nsresult SetURI(nsIURI* aURL, bool aReplace = false);
nsresult SetHrefWithBase(const nsAString& aHref, nsIURI* aBase,
bool aReplace);

View File

@ -376,7 +376,7 @@ nsContentSink::LinkContextIsOurDocument(const nsAString& aAnchor)
// we want to ignore that because it's invisible to the server
// and just affects the local interpretation in the recipient
nsCOMPtr<nsIURI> contextUri;
nsresult rv = docUri->CloneIgnoringRef(getter_AddRefs(contextUri));
nsresult rv = NS_GetURIWithoutRef(docUri, getter_AddRefs(contextUri));
if (NS_FAILED(rv)) {
// copying failed

View File

@ -827,7 +827,7 @@ nsExternalResourceMap::RequestResource(nsIURI* aURI,
// First, make sure we strip the ref from aURI.
nsCOMPtr<nsIURI> clone;
nsresult rv = aURI->CloneIgnoringRef(getter_AddRefs(clone));
nsresult rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(clone));
if (NS_FAILED(rv) || !clone) {
return nullptr;
}

View File

@ -1283,7 +1283,7 @@ nsGlobalWindowOuter::WouldReuseInnerWindow(nsIDocument* aNewDocument)
#ifdef DEBUG
{
nsCOMPtr<nsIURI> uri;
mDoc->GetDocumentURI()->CloneIgnoringRef(getter_AddRefs(uri));
NS_GetURIWithoutRef(mDoc->GetDocumentURI(), getter_AddRefs(uri));
NS_ASSERTION(NS_IsAboutBlank(uri), "How'd this happen?");
}
#endif

View File

@ -1287,7 +1287,7 @@ FetchDriver::AsyncOnChannelRedirect(nsIChannel* aOldChannel,
MOZ_ALWAYS_SUCCEEDS(aNewChannel->GetURI(getter_AddRefs(uri)));
nsCOMPtr<nsIURI> uriClone;
nsresult rv = uri->CloneIgnoringRef(getter_AddRefs(uriClone));
nsresult rv = NS_GetURIWithoutRef(uri, getter_AddRefs(uriClone));
if(NS_WARN_IF(NS_FAILED(rv))){
return rv;
}

View File

@ -117,9 +117,7 @@ GetRequestURLFromDocument(nsIDocument* aDocument, const nsAString& aInput,
}
nsCOMPtr<nsIURI> resolvedURIClone;
// We use CloneIgnoringRef to strip away the fragment even if the original URI
// is immutable.
aRv = resolvedURI->CloneIgnoringRef(getter_AddRefs(resolvedURIClone));
aRv = NS_GetURIWithoutRef(resolvedURI, getter_AddRefs(resolvedURIClone));
if (NS_WARN_IF(aRv.Failed())) {
return;
}
@ -165,9 +163,7 @@ GetRequestURLFromChrome(const nsAString& aInput, nsAString& aRequestURL,
}
nsCOMPtr<nsIURI> uriClone;
// We use CloneIgnoringRef to strip away the fragment even if the original URI
// is immutable.
aRv = uri->CloneIgnoringRef(getter_AddRefs(uriClone));
aRv = NS_GetURIWithoutRef(uri, getter_AddRefs(uriClone));
if (NS_WARN_IF(aRv.Failed())) {
return;
}

View File

@ -1518,7 +1518,7 @@ nsCSPContext::PermitsAncestry(nsIDocShell* aDocShell, bool* outPermitsAncestry)
// If setUserPass fails for some reason, just return a clone of the
// current URI
if (NS_FAILED(rv)) {
rv = currentURI->CloneIgnoringRef(getter_AddRefs(uriClone));
rv = NS_GetURIWithoutRef(currentURI, getter_AddRefs(uriClone));
NS_ENSURE_SUCCESS(rv, rv);
}

View File

@ -254,13 +254,13 @@ ServiceWorkerContainer::Register(const nsAString& aScriptURL,
// Strip the any ref from both the script and scope URLs.
nsCOMPtr<nsIURI> cloneWithoutRef;
aRv = scriptURI->CloneIgnoringRef(getter_AddRefs(cloneWithoutRef));
aRv = NS_GetURIWithoutRef(scriptURI, getter_AddRefs(cloneWithoutRef));
if (aRv.Failed()) {
return nullptr;
}
scriptURI = cloneWithoutRef.forget();
aRv = scopeURI->CloneIgnoringRef(getter_AddRefs(cloneWithoutRef));
aRv = NS_GetURIWithoutRef(scopeURI, getter_AddRefs(cloneWithoutRef));
if (aRv.Failed()) {
return nullptr;
}

View File

@ -1368,7 +1368,7 @@ public:
// fragment manually here instead. We can't do it later when we create
// the Request because that code executes off the main thread.
nsCOMPtr<nsIURI> uriNoFragment;
rv = uri->CloneIgnoringRef(getter_AddRefs(uriNoFragment));
rv = NS_GetURIWithoutRef(uri, getter_AddRefs(uriNoFragment));
NS_ENSURE_SUCCESS(rv, rv);
rv = uriNoFragment->GetSpec(mSpec);
NS_ENSURE_SUCCESS(rv, rv);

View File

@ -915,7 +915,7 @@ nsXBLService::LoadBindingDocumentInfo(nsIContent* aBoundElement,
RefPtr<nsXBLDocumentInfo> info;
nsCOMPtr<nsIURI> documentURI;
nsresult rv = aBindingURI->CloneIgnoringRef(getter_AddRefs(documentURI));
nsresult rv = NS_GetURIWithoutRef(aBindingURI, getter_AddRefs(documentURI));
NS_ENSURE_SUCCESS(rv, rv);
nsBindingManager *bindingManager = nullptr;

View File

@ -688,7 +688,7 @@ TX_CompileStylesheet(nsINode* aNode, txMozillaXSLTProcessor* aProcessor,
// We need to remove the ref, a URI with a ref would mean that we have an
// embedded stylesheet.
docUri->CloneIgnoringRef(getter_AddRefs(uri));
NS_GetURIWithoutRef(docUri, getter_AddRefs(uri));
NS_ENSURE_TRUE(uri, NS_ERROR_FAILURE);
uri->GetSpec(spec);

View File

@ -143,7 +143,7 @@ nsXULPrototypeCache::GetPrototype(nsIURI* aURI)
return nullptr;
nsCOMPtr<nsIURI> uriWithoutRef;
aURI->CloneIgnoringRef(getter_AddRefs(uriWithoutRef));
NS_GetURIWithoutRef(aURI, getter_AddRefs(uriWithoutRef));
nsXULPrototypeDocument* protoDoc = mPrototypeTable.GetWeak(uriWithoutRef);
if (protoDoc)
@ -183,7 +183,7 @@ nsXULPrototypeCache::PutPrototype(nsXULPrototypeDocument* aDocument)
}
nsCOMPtr<nsIURI> uri;
aDocument->GetURI()->CloneIgnoringRef(getter_AddRefs(uri));
NS_GetURIWithoutRef(aDocument->GetURI(), getter_AddRefs(uri));
// Put() releases any old value and addrefs the new one
mPrototypeTable.Put(uri, aDocument);

View File

@ -534,23 +534,6 @@ nsMozIconURI::Clone(nsIURI** result)
return NS_OK;
}
NS_IMETHODIMP
nsMozIconURI::CloneIgnoringRef(nsIURI** result)
{
// GetRef/SetRef not supported by nsMozIconURI, so
// CloneIgnoringRef() is the same as Clone().
return Clone(result);
}
NS_IMETHODIMP
nsMozIconURI::CloneWithNewRef(const nsACString& newRef, nsIURI** result)
{
// GetRef/SetRef not supported by nsMozIconURI, so
// CloneWithNewRef() is the same as Clone().
return Clone(result);
}
NS_IMETHODIMP
nsMozIconURI::Resolve(const nsACString& relativePath, nsACString& result)
{

View File

@ -603,33 +603,6 @@ nsJARURI::Clone(nsIURI **result)
return NS_OK;
}
NS_IMETHODIMP
nsJARURI::CloneIgnoringRef(nsIURI **result)
{
nsresult rv;
nsCOMPtr<nsIJARURI> uri;
rv = CloneWithJARFileInternal(mJARFile, eIgnoreRef, getter_AddRefs(uri));
if (NS_FAILED(rv)) return rv;
uri.forget(result);
return NS_OK;
}
NS_IMETHODIMP
nsJARURI::CloneWithNewRef(const nsACString& newRef, nsIURI **result)
{
nsresult rv;
nsCOMPtr<nsIJARURI> uri;
rv = CloneWithJARFileInternal(mJARFile, eReplaceRef, newRef,
getter_AddRefs(uri));
if (NS_FAILED(rv)) return rv;
uri.forget(result);
return NS_OK;
}
NS_IMETHODIMP
nsJARURI::Resolve(const nsACString &relativePath, nsACString &result)
{
@ -916,9 +889,9 @@ nsJARURI::CloneWithJARFileInternal(nsIURI *jarFile,
if (refHandlingMode == eHonorRef) {
newJAREntryURI = mJAREntry;
} else if (refHandlingMode == eReplaceRef) {
rv = mJAREntry->CloneWithNewRef(newRef, getter_AddRefs(newJAREntryURI));
rv = NS_GetURIWithNewRef(mJAREntry, newRef, getter_AddRefs(newJAREntryURI));
} else {
rv = mJAREntry->CloneIgnoringRef(getter_AddRefs(newJAREntryURI));
rv = NS_GetURIWithoutRef(mJAREntry, getter_AddRefs(newJAREntryURI));
}
if (NS_FAILED(rv)) return rv;

View File

@ -687,7 +687,7 @@ nsIOService::NewURI(const nsACString &aSpec, const char *aCharset, nsIURI *aBase
if (!aSpec.IsEmpty() && aSpec[0] == '#') {
// Looks like a reference instead of a fully-specified URI.
// --> initialize |uri| as a clone of |aBaseURI|, with ref appended.
return aBaseURI->CloneWithNewRef(aSpec, result);
return NS_GetURIWithNewRef(aBaseURI, aSpec, result);
}
rv = aBaseURI->GetScheme(scheme);

View File

@ -236,17 +236,6 @@ interface nsIURI : nsISupports
*/
boolean equalsExceptRef(in nsIURI other);
/**
* Clones the current URI, clearing the 'ref' attribute in the clone.
*/
nsIURI cloneIgnoringRef();
/**
* Clones the current URI, replacing the 'ref' attribute in the clone with
* the ref supplied.
*/
nsIURI cloneWithNewRef(in AUTF8String newRef);
/**
* returns a string for the current URI with the ref element cleared.
*/

View File

@ -163,6 +163,47 @@ NS_NewFileURI(nsIURI **result,
return rv;
}
nsresult
NS_GetURIWithNewRef(nsIURI* aInput,
const nsACString& aRef,
nsIURI** aOutput)
{
if (NS_WARN_IF(!aInput || !aOutput)) {
return NS_ERROR_INVALID_ARG;
}
bool hasRef;
nsresult rv = aInput->GetHasRef(&hasRef);
nsAutoCString ref;
if (NS_SUCCEEDED(rv)) {
rv = aInput->GetRef(ref);
}
// If the ref is already equal to the new ref, we do not need to do anything.
// Also, if the GetRef failed (it could return NS_ERROR_NOT_IMPLEMENTED)
// we can assume SetRef would fail as well, so returning the original
// URI is OK.
if (NS_FAILED(rv) ||
(!hasRef && aRef.IsEmpty()) ||
(!aRef.IsEmpty() && aRef == ref)) {
nsCOMPtr<nsIURI> uri = aInput;
uri.forget(aOutput);
return NS_OK;
}
return NS_MutateURI(aInput)
.SetRef(aRef)
.Finalize(aOutput);
}
nsresult
NS_GetURIWithoutRef(nsIURI* aInput,
nsIURI** aOutput)
{
return NS_GetURIWithNewRef(aInput, EmptyCString(), aOutput);
}
nsresult
NS_NewChannelInternal(nsIChannel **outChannel,
nsIURI *aUri,

View File

@ -103,6 +103,19 @@ nsresult NS_NewFileURI(nsIURI **result,
nsIFile *spec,
nsIIOService *ioService = nullptr); // pass in nsIIOService to optimize callers
// These methods will only mutate the URI if the ref of aInput doesn't already
// match the ref we are trying to set.
// If aInput has no ref, and we are calling NS_GetURIWithoutRef, or
// NS_GetURIWithNewRef with an empty string, then aOutput will be the same
// as aInput. The same is true if aRef is already equal to the ref of aInput.
// This is OK because URIs are immutable and threadsafe.
// If the URI doesn't support ref fragments aOutput will be the same as aInput.
nsresult NS_GetURIWithNewRef(nsIURI* aInput,
const nsACString& aRef,
nsIURI** aOutput);
nsresult NS_GetURIWithoutRef(nsIURI* aInput,
nsIURI** aOutput);
nsresult NS_GetSanitizedURIStringFromURI(nsIURI *aUri,
nsAString &aSanitizedSpec);

View File

@ -212,9 +212,9 @@ nsSimpleNestedURI::StartClone(nsSimpleURI::RefHandlingEnum refHandlingMode,
if (refHandlingMode == eHonorRef) {
innerClone = mInnerURI;
} else if (refHandlingMode == eReplaceRef) {
rv = mInnerURI->CloneWithNewRef(newRef, getter_AddRefs(innerClone));
rv = NS_GetURIWithNewRef(mInnerURI, newRef, getter_AddRefs(innerClone));
} else {
rv = mInnerURI->CloneIgnoringRef(getter_AddRefs(innerClone));
rv = NS_GetURIWithoutRef(mInnerURI, getter_AddRefs(innerClone));
}
if (NS_FAILED(rv)) {

View File

@ -633,18 +633,6 @@ nsSimpleURI::Clone(nsIURI** result)
return CloneInternal(eHonorRef, EmptyCString(), result);
}
NS_IMETHODIMP
nsSimpleURI::CloneIgnoringRef(nsIURI** result)
{
return CloneInternal(eIgnoreRef, EmptyCString(), result);
}
NS_IMETHODIMP
nsSimpleURI::CloneWithNewRef(const nsACString &newRef, nsIURI** result)
{
return CloneInternal(eReplaceRef, newRef, result);
}
nsresult
nsSimpleURI::CloneInternal(nsSimpleURI::RefHandlingEnum refHandlingMode,
const nsACString &newRef,

View File

@ -2279,19 +2279,6 @@ nsStandardURL::Clone(nsIURI **result)
return CloneInternal(eHonorRef, EmptyCString(), result);
}
NS_IMETHODIMP
nsStandardURL::CloneIgnoringRef(nsIURI **result)
{
return CloneInternal(eIgnoreRef, EmptyCString(), result);
}
NS_IMETHODIMP
nsStandardURL::CloneWithNewRef(const nsACString& newRef, nsIURI **result)
{
return CloneInternal(eReplaceRef, newRef, result);
}
nsresult
nsStandardURL::CloneInternal(nsStandardURL::RefHandlingEnum refHandlingMode,
const nsACString& newRef,

View File

@ -752,7 +752,7 @@ nsApplicationCache::GetManifestURI(nsIURI **out)
nsresult rv = NS_NewURI(getter_AddRefs(uri), mGroup);
NS_ENSURE_SUCCESS(rv, rv);
rv = uri->CloneIgnoringRef(out);
rv = NS_GetURIWithNewRef(uri, EmptyCString(), out);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;
@ -1372,7 +1372,7 @@ nsOfflineCacheDevice::BuildApplicationCacheGroupID(nsIURI *aManifestURL,
nsACString &_result)
{
nsCOMPtr<nsIURI> newURI;
nsresult rv = aManifestURL->CloneIgnoringRef(getter_AddRefs(newURI));
nsresult rv = NS_GetURIWithNewRef(aManifestURL, EmptyCString(), getter_AddRefs(newURI));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoCString manifestSpec;

View File

@ -15,6 +15,7 @@
#include "nsIApplicationCacheService.h"
#include "nsIURI.h"
#include "nsNetCID.h"
#include "nsNetUtil.h"
#include "nsServiceManagerUtils.h"
#include "nsThreadUtils.h"
@ -60,7 +61,7 @@ NS_IMETHODIMP AppCacheStorage::AsyncOpenURI(nsIURI *aURI,
}
nsCOMPtr<nsIURI> noRefURI;
rv = aURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(noRefURI));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoCString cacheKey;

View File

@ -16,6 +16,7 @@
#include "nsIApplicationCacheService.h"
#include "nsIURI.h"
#include "nsNetCID.h"
#include "nsNetUtil.h"
#include "nsServiceManagerUtils.h"
namespace mozilla {
@ -64,7 +65,7 @@ NS_IMETHODIMP CacheStorage::AsyncOpenURI(nsIURI *aURI,
bool truncate = aFlags & nsICacheStorage::OPEN_TRUNCATE;
nsCOMPtr<nsIURI> noRefURI;
rv = aURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(noRefURI));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoCString asciiSpec;
@ -120,7 +121,7 @@ NS_IMETHODIMP CacheStorage::OpenTruncate(nsIURI *aURI, const nsACString & aIdExt
nsresult rv;
nsCOMPtr<nsIURI> noRefURI;
rv = aURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(noRefURI));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoCString asciiSpec;
@ -156,7 +157,7 @@ NS_IMETHODIMP CacheStorage::Exists(nsIURI *aURI, const nsACString & aIdExtension
nsresult rv;
nsCOMPtr<nsIURI> noRefURI;
rv = aURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(noRefURI));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoCString asciiSpec;
@ -183,7 +184,7 @@ CacheStorage::GetCacheIndexEntryAttrs(nsIURI *aURI,
nsresult rv;
nsCOMPtr<nsIURI> noRefURI;
rv = aURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(noRefURI));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoCString asciiSpec;
@ -203,7 +204,7 @@ NS_IMETHODIMP CacheStorage::AsyncDoomURI(nsIURI *aURI, const nsACString & aIdExt
nsresult rv;
nsCOMPtr<nsIURI> noRefURI;
rv = aURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(noRefURI));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoCString asciiSpec;

View File

@ -1112,7 +1112,7 @@ nsresult _OldStorage::AssembleCacheKey(nsIURI *aURI,
}
nsCOMPtr<nsIURI> noRefURI;
rv = aURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(noRefURI));
NS_ENSURE_SUCCESS(rv, rv);
rv = noRefURI->GetAsciiSpec(uriSpec);

View File

@ -429,9 +429,9 @@ nsNestedAboutURI::StartClone(nsSimpleURI::RefHandlingEnum aRefHandlingMode,
if (aRefHandlingMode == eHonorRef) {
innerClone = mInnerURI;
} else if (aRefHandlingMode == eReplaceRef) {
rv = mInnerURI->CloneWithNewRef(aNewRef, getter_AddRefs(innerClone));
rv = NS_GetURIWithNewRef(mInnerURI, aNewRef, getter_AddRefs(innerClone));
} else {
rv = mInnerURI->CloneIgnoringRef(getter_AddRefs(innerClone));
rv = NS_GetURIWithoutRef(mInnerURI, getter_AddRefs(innerClone));
}
if (NS_FAILED(rv)) {

View File

@ -53,7 +53,7 @@ nsDataChannel::OpenContentStream(bool async, nsIInputStream **result,
// of the URI that does not have a ref and in most cases should share
// string buffers with the original URI.
nsCOMPtr<nsIURI> uri;
rv = URI()->CloneIgnoringRef(getter_AddRefs(uri));
rv = NS_GetURIWithoutRef(URI(), getter_AddRefs(uri));
if (NS_FAILED(rv))
return rv;

View File

@ -1788,9 +1788,9 @@ HttpBaseChannel::SetReferrerWithPolicy(nsIURI *referrer,
// (1) modify it
// (2) keep a reference to it after returning from this function
//
// Use CloneIgnoringRef to strip away any fragment per RFC 2616 section 14.36
// Strip away any fragment per RFC 2616 section 14.36
// and Referrer Policy section 6.3.5.
rv = referrer->CloneIgnoringRef(getter_AddRefs(clone));
rv = NS_GetURIWithoutRef(referrer, getter_AddRefs(clone));
if (NS_FAILED(rv)) return rv;
nsAutoCString currentHost;
@ -1835,7 +1835,7 @@ HttpBaseChannel::SetReferrerWithPolicy(nsIURI *referrer,
// send spoofed referrer if desired
if (userSpoofReferrerSource) {
nsCOMPtr<nsIURI> mURIclone;
rv = mURI->CloneIgnoringRef(getter_AddRefs(mURIclone));
rv = NS_GetURIWithoutRef(mURI, getter_AddRefs(mURIclone));
if (NS_FAILED(rv)) return rv;
clone = mURIclone;
currentHost = referrerHost;

View File

@ -8186,7 +8186,7 @@ nsHttpChannel::OfflineCacheEntryAsForeignMarker::MarkAsForeign()
nsresult rv;
nsCOMPtr<nsIURI> noRefURI;
rv = mCacheURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
rv = NS_GetURIWithoutRef(mCacheURI, getter_AddRefs(noRefURI));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoCString spec;

View File

@ -339,7 +339,7 @@ function do_test_uri_basic(aTest) {
// Sanity-check
do_info("testing " + aTest.spec + " equals a clone of itself");
do_check_uri_eq(URI, URI.mutate().finalize());
do_check_uri_eqExceptRef(URI, URI.cloneIgnoringRef());
do_check_uri_eqExceptRef(URI, URI.mutate().setRef("").finalize());
do_info("testing " + aTest.spec + " instanceof nsIURL");
Assert.equal(URI instanceof Ci.nsIURL, aTest.nsIURL);
do_info("testing " + aTest.spec + " instanceof nsINestedURI");
@ -419,22 +419,24 @@ function do_test_uri_with_hash_suffix(aTest, aSuffix) {
if (!origURI.ref) {
// These tests fail if origURI has a ref
do_info("testing cloneIgnoringRef on " + testURI.spec +
do_info("testing setRef('') on " + testURI.spec +
" is equal to no-ref version but not equal to ref version");
var cloneNoRef = testURI.cloneIgnoringRef();
var cloneNoRef = testURI.mutate().setRef("").finalize(); // we used to clone here.
do_info("cloneNoRef: " + cloneNoRef.spec + " hasRef: " + cloneNoRef.hasRef);
do_info("testURI: " + testURI.spec + " hasRef: " + testURI.hasRef);
do_check_uri_eq(cloneNoRef, origURI);
Assert.ok(!cloneNoRef.equals(testURI));
do_info("testing cloneWithNewRef on " + testURI.spec +
" with an empty ref is equal to no-ref version but not equal to ref version");
var cloneNewRef = testURI.cloneWithNewRef("");
var cloneNewRef = testURI.mutate().setRef("").finalize();
do_check_uri_eq(cloneNewRef, origURI);
do_check_uri_eq(cloneNewRef, cloneNoRef);
Assert.ok(!cloneNewRef.equals(testURI));
do_info("testing cloneWithNewRef on " + origURI.spec +
" with the same new ref is equal to ref version and not equal to no-ref version");
cloneNewRef = origURI.cloneWithNewRef(aSuffix);
cloneNewRef = origURI.mutate().setRef(aSuffix).finalize();
do_check_uri_eq(cloneNewRef, testURI);
Assert.ok(cloneNewRef.equals(testURI));
}

View File

@ -448,7 +448,7 @@ function do_test_uri_basic(aTest) {
// Sanity-check
do_info("testing " + aTest.spec + " equals a clone of itself");
do_check_uri_eq(URI, URI.mutate().finalize());
do_check_uri_eqExceptRef(URI, URI.cloneIgnoringRef());
do_check_uri_eqExceptRef(URI, URI.mutate().setRef("").finalize());
do_info("testing " + aTest.spec + " instanceof nsIURL");
Assert.equal(URI instanceof Ci.nsIURL, aTest.nsIURL);
do_info("testing " + aTest.spec + " instanceof nsINestedURI");
@ -530,7 +530,7 @@ function do_test_uri_with_hash_suffix(aTest, aSuffix) {
// These tests fail if origURI has a ref
do_info("testing cloneIgnoringRef on " + testURI.spec +
" is equal to no-ref version but not equal to ref version");
var cloneNoRef = testURI.cloneIgnoringRef();
var cloneNoRef = testURI.mutate().setRef("").finalize();
do_check_uri_eq(cloneNoRef, origURI);
Assert.ok(!cloneNoRef.equals(testURI));
}

View File

@ -470,7 +470,7 @@ ProxyMessenger = {
// connected to the tab's top-level message manager. To deal with
// this, we find the options <browser> for the tab, and use that
// directly, insteead.
if (browser.currentURI.cloneIgnoringRef().spec === "about:addons") {
if (browser.currentURI.specIgnoringRef === "about:addons") {
let optionsBrowser = browser.contentDocument.querySelector(".inline-options-browser");
if (optionsBrowser) {
browser = optionsBrowser;

View File

@ -327,7 +327,7 @@ ExtensionPolicyService::CheckWindow(nsPIDOMWindowOuter* aWindow)
nsCOMPtr<nsIURI> docUri = doc->GetDocumentURI();
nsCOMPtr<nsIURI> uri;
if (!docUri || NS_FAILED(docUri->CloneIgnoringRef(getter_AddRefs(uri))) ||
if (!docUri || NS_FAILED(NS_GetURIWithoutRef(docUri, getter_AddRefs(uri))) ||
!NS_IsAboutBlank(uri)) {
return;
}

View File

@ -189,7 +189,7 @@ nsIURI*
URLInfo::URINoRef() const
{
if (!mURINoRef) {
if (NS_FAILED(mURI->CloneIgnoringRef(getter_AddRefs(mURINoRef)))) {
if (NS_FAILED(NS_GetURIWithoutRef(mURI, getter_AddRefs(mURINoRef)))) {
mURINoRef = mURI;
}
}

View File

@ -86,9 +86,8 @@ DropReferenceFromURL(nsCOMPtr<nsIURI>& aURI)
{
// XXXdholbert If this SetRef fails, callers of this method probably
// want to call aURI->CloneIgnoringRef() and use the result of that.
return NS_MutateURI(aURI)
.SetRef(EmptyCString())
.Finalize(aURI);
nsCOMPtr<nsIURI> uri(aURI);
return NS_GetURIWithoutRef(uri, getter_AddRefs(aURI));
}
void
@ -1247,7 +1246,7 @@ nsOfflineCacheUpdate::GetCacheKey(nsIURI *aURI, nsACString &aKey)
aKey.Truncate();
nsCOMPtr<nsIURI> newURI;
nsresult rv = aURI->CloneIgnoringRef(getter_AddRefs(newURI));
nsresult rv = NS_GetURIWithoutRef(aURI, getter_AddRefs(newURI));
NS_ENSURE_SUCCESS(rv, rv);
rv = newURI->GetAsciiSpec(aKey);