Bug 1433958 - Change URLWorker to use NS_MutateURI draft
authorValentin Gosu <valentin.gosu@gmail.com>
Mon, 26 Feb 2018 20:43:46 +0100
changeset 759890 624ebbe783daee894daceb6dd5f7b93cbe278e33
parent 759889 c6edb89ddfa698f05af22b1aa65b1dbedfc45d8a
child 759891 53f03a92407f7fd1da2a96ccc0f96e6be25053fc
push id100504
push uservalentin.gosu@gmail.com
push dateMon, 26 Feb 2018 19:44:44 +0000
bugs1433958
milestone60.0a1
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
dom/url/URLWorker.cpp
dom/url/URLWorker.h
--- 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