mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-10 17:24:29 +00:00
Bug 1423961 - Improve NS_MutateURI.Finalize by passing reference to nsCOMPtr instead nsIURI** r=mayhemer
MozReview-Commit-ID: 6VRhNJF3f0U --HG-- extra : rebase_source : 01bf82ace5cfbf81fdf095cd76c5d98a2ce03245
This commit is contained in:
parent
84f063bdfa
commit
d9e085b9ec
@ -284,16 +284,34 @@ public:
|
||||
mStatus = mMutator->SetQueryWithEncoding(query, encoding, nullptr);
|
||||
return *this;
|
||||
}
|
||||
nsresult Finalize(nsIURI** aURI)
|
||||
|
||||
template <class C>
|
||||
nsresult Finalize(nsCOMPtr<C>& aURI)
|
||||
{
|
||||
NS_ENSURE_SUCCESS(mStatus, mStatus);
|
||||
mStatus = mMutator->Finalize(aURI);
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
mStatus = mMutator->Finalize(getter_AddRefs(uri));
|
||||
NS_ENSURE_SUCCESS(mStatus, mStatus);
|
||||
|
||||
aURI = do_QueryInterface(uri, &mStatus);
|
||||
NS_ENSURE_SUCCESS(mStatus, mStatus);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Overload for nsIURI to avoid query interface.
|
||||
nsresult Finalize(nsCOMPtr<nsIURI>& aURI)
|
||||
{
|
||||
NS_ENSURE_SUCCESS(mStatus, mStatus);
|
||||
mStatus = mMutator->Finalize(getter_AddRefs(aURI));
|
||||
return mStatus;
|
||||
}
|
||||
|
||||
nsresult GetStatus() { return mStatus; }
|
||||
private:
|
||||
nsresult mStatus;
|
||||
RefPtr<nsIURIMutator> mMutator;
|
||||
nsCOMPtr<nsIURIMutator> mMutator;
|
||||
};
|
||||
|
||||
%}
|
||||
|
@ -243,19 +243,26 @@ TEST(TestStandardURL, Mutator)
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsresult rv = NS_MutateURI(NS_STANDARDURLMUTATOR_CONTRACTID)
|
||||
.SetSpec(NS_LITERAL_CSTRING("http://example.com"))
|
||||
.Finalize(getter_AddRefs(uri));
|
||||
.Finalize(uri);
|
||||
ASSERT_EQ(rv, NS_OK);
|
||||
|
||||
ASSERT_EQ(uri->GetSpec(out), NS_OK);
|
||||
ASSERT_TRUE(out == NS_LITERAL_CSTRING("http://example.com/"));
|
||||
|
||||
nsCOMPtr<nsIURI> uri2;
|
||||
rv = NS_MutateURI(uri)
|
||||
.SetScheme(NS_LITERAL_CSTRING("ftp"))
|
||||
.SetHost(NS_LITERAL_CSTRING("mozilla.org"))
|
||||
.SetPathQueryRef(NS_LITERAL_CSTRING("/path?query#ref"))
|
||||
.Finalize(getter_AddRefs(uri2));
|
||||
.Finalize(uri);
|
||||
ASSERT_EQ(rv, NS_OK);
|
||||
ASSERT_EQ(uri2->GetSpec(out), NS_OK);
|
||||
ASSERT_EQ(uri->GetSpec(out), NS_OK);
|
||||
ASSERT_TRUE(out == NS_LITERAL_CSTRING("ftp://mozilla.org/path?query#ref"));
|
||||
|
||||
nsCOMPtr<nsIURL> url;
|
||||
rv = NS_MutateURI(uri)
|
||||
.SetScheme(NS_LITERAL_CSTRING("https"))
|
||||
.Finalize(url);
|
||||
ASSERT_EQ(rv, NS_OK);
|
||||
ASSERT_EQ(url->GetSpec(out), NS_OK);
|
||||
ASSERT_TRUE(out == NS_LITERAL_CSTRING("https://mozilla.org/path?query#ref"));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user