Bug 1433958 - Change URLWorker to use NS_MutateURI
* Also makes mStdURL be a nsCOMPtr<nsIURI> in order to avoid static_casts
MozReview-Commit-ID: BagXxecHCSK
--- a/dom/url/URLWorker.cpp
+++ b/dom/url/URLWorker.cpp
@@ -641,26 +641,22 @@ URLWorker::Init(const nsAString& aURL, c
baseURL->GetScheme(baseScheme);
}
if (NS_WARN_IF(NS_FAILED(rv)) || baseScheme.IsEmpty()) {
aRv.ThrowTypeError<MSG_INVALID_URL>(aBase.Value());
return;
}
}
nsCOMPtr<nsIURI> uri;
- rv = NS_MutateURI(new nsStandardURL::Mutator())
- .Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
- nsIStandardURL::URLTYPE_STANDARD,
- -1, NS_ConvertUTF16toUTF8(aURL),
- nullptr, baseURL, nullptr))
- .Finalize(uri);
- aRv = rv;
- if (NS_SUCCEEDED(rv)) {
- mStdURL = static_cast<nsStandardURL*>(uri.get());
- }
+ aRv = NS_MutateURI(new nsStandardURL::Mutator())
+ .Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
+ nsIStandardURL::URLTYPE_STANDARD,
+ -1, NS_ConvertUTF16toUTF8(aURL),
+ nullptr, baseURL, nullptr))
+ .Finalize(mStdURL);
return;
}
// create url proxy
RefPtr<ConstructorRunnable> runnable =
new ConstructorRunnable(mWorkerPrivate, aURL, aBase);
runnable->Dispatch(Terminating, aRv);
if (NS_WARN_IF(aRv.Failed())) {
@@ -721,18 +717,17 @@ URLWorker::SetHrefInternal(const nsAStri
return;
}
if (aStrategy == eUseProxyIfNeeded &&
(scheme.EqualsLiteral("http") || scheme.EqualsLiteral("https"))) {
nsCOMPtr<nsIURI> uri;
aRv = NS_MutateURI(new nsStandardURL::Mutator())
.SetSpec(NS_ConvertUTF16toUTF8(aHref))
- .Finalize(uri);
- mStdURL = static_cast<net::nsStandardURL*>(uri.get());
+ .Finalize(mStdURL);
if (mURLProxy) {
mWorkerPrivate->AssertIsOnWorkerThread();
RefPtr<TeardownURLRunnable> runnable =
new TeardownURLRunnable(mURLProxy);
mURLProxy = nullptr;
if (NS_WARN_IF(NS_FAILED(NS_DispatchToMainThread(runnable)))) {
@@ -868,17 +863,19 @@ URLWorker::SetProtocol(const nsAString&
if (NS_SUCCEEDED(rv)) { \
CopyUTF8toUTF16(tmp, value); \
} \
return; \
}
#define STDURL_SETTER(value, method) \
if (mStdURL) { \
- aRv = mStdURL->method(NS_ConvertUTF16toUTF8(value)); \
+ aRv = NS_MutateURI(mStdURL) \
+ .method(NS_ConvertUTF16toUTF8(value)) \
+ .Finalize(mStdURL); \
return; \
}
void
URLWorker::GetUsername(nsAString& aUsername, ErrorResult& aRv) const
{
STDURL_GETTER(aUsername, GetUsername);
--- a/dom/url/URLWorker.h
+++ b/dom/url/URLWorker.h
@@ -127,15 +127,15 @@ private:
void
SetHrefInternal(const nsAString& aHref,
Strategy aStrategy,
ErrorResult& aRv);
WorkerPrivate* mWorkerPrivate;
RefPtr<URLProxy> mURLProxy;
- RefPtr<net::nsStandardURL> mStdURL;
+ nsCOMPtr<nsIURI> mStdURL;
};
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_URLWorker_h