Change more raw URLLoaderFactory pointers to SharedURLLoaderFactory.

This CL changes:
- RenderFrame::GetURLLoaderFactory()
- ResourceFetcher::Start()

Bug: 796425
[email protected]
(for fairly mechanical change of callsites in chrome/renderer/net/net_error_helper.cc).

Change-Id: I65a99bd416a8a2ea1e1ca34870242868be11b8d0
Reviewed-on: https://chromium-review.googlesource.com/887645
Commit-Queue: Yuzhu Shen <[email protected]>
Reviewed-by: Kinuko Yasuda <[email protected]>
Cr-Commit-Position: refs/heads/master@{#532267}
diff --git a/content/public/renderer/render_frame.h b/content/public/renderer/render_frame.h
index ab957e6..f33e6d4 100644
--- a/content/public/renderer/render_frame.h
+++ b/content/public/renderer/render_frame.h
@@ -54,6 +54,7 @@
 class RenderAccessibility;
 class RenderFrameVisitor;
 class RenderView;
+class SharedURLLoaderFactory;
 struct ContextMenuParams;
 struct WebPluginInfo;
 struct WebPreferences;
@@ -261,9 +262,7 @@
   // Set the accessibility mode to force creation of RenderAccessibility.
   virtual void SetAccessibilityModeForTest(ui::AXMode new_mode) = 0;
 
-  // Returns the URLLoaderFactory for the given GURL
-  virtual network::mojom::URLLoaderFactory* GetURLLoaderFactory(
-      const GURL& request_url) = 0;
+  virtual scoped_refptr<SharedURLLoaderFactory> GetURLLoaderFactory() = 0;
 
  protected:
   ~RenderFrame() override {}
diff --git a/content/public/renderer/resource_fetcher.h b/content/public/renderer/resource_fetcher.h
index a457dfc5..3557935 100644
--- a/content/public/renderer/resource_fetcher.h
+++ b/content/public/renderer/resource_fetcher.h
@@ -10,7 +10,7 @@
 
 #include "base/callback.h"
 #include "content/common/content_export.h"
-#include "services/network/public/interfaces/url_loader_factory.mojom.h"
+#include "content/public/common/shared_url_loader_factory.h"
 #include "third_party/WebKit/public/platform/WebURLRequest.h"
 
 class GURL;
@@ -62,7 +62,7 @@
   virtual void Start(
       blink::WebLocalFrame* frame,
       blink::WebURLRequest::RequestContext request_context,
-      network::mojom::URLLoaderFactory* url_loader_factory,
+      scoped_refptr<SharedURLLoaderFactory> url_loader_factory,
       const net::NetworkTrafficAnnotationTag& annotation_tag,
       Callback callback,
       size_t maximum_download_size = kDefaultMaximumDownloadSize) = 0;
diff --git a/content/renderer/fetchers/resource_fetcher_browsertest.cc b/content/renderer/fetchers/resource_fetcher_browsertest.cc
index 7948b570..52c000c 100644
--- a/content/renderer/fetchers/resource_fetcher_browsertest.cc
+++ b/content/renderer/fetchers/resource_fetcher_browsertest.cc
@@ -150,7 +150,7 @@
     std::unique_ptr<FetcherDelegate> delegate(new FetcherDelegate);
     std::unique_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
     fetcher->Start(frame, WebURLRequest::kRequestContextInternal,
-                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(url),
+                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(),
                    TRAFFIC_ANNOTATION_FOR_TESTS, delegate->NewCallback());
 
     delegate->WaitForResponse();
@@ -169,7 +169,7 @@
     std::unique_ptr<FetcherDelegate> delegate(new FetcherDelegate);
     std::unique_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
     fetcher->Start(frame, WebURLRequest::kRequestContextInternal,
-                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(url),
+                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(),
                    TRAFFIC_ANNOTATION_FOR_TESTS, delegate->NewCallback());
 
     delegate->WaitForResponse();
@@ -188,7 +188,7 @@
     std::unique_ptr<FetcherDelegate> delegate(new FetcherDelegate);
     std::unique_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
     fetcher->Start(frame, WebURLRequest::kRequestContextInternal,
-                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(url),
+                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(),
                    TRAFFIC_ANNOTATION_FOR_TESTS, delegate->NewCallback());
 
     delegate->WaitForResponse();
@@ -206,7 +206,7 @@
     std::unique_ptr<FetcherDelegate> delegate(new FetcherDelegate);
     std::unique_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
     fetcher->Start(frame, WebURLRequest::kRequestContextInternal,
-                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(url),
+                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(),
                    TRAFFIC_ANNOTATION_FOR_TESTS, delegate->NewCallback());
 
     delegate->WaitForResponse();
@@ -226,7 +226,7 @@
     std::unique_ptr<FetcherDelegate> delegate(new FetcherDelegate);
     std::unique_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
     fetcher->Start(frame, WebURLRequest::kRequestContextInternal,
-                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(url),
+                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(),
                    TRAFFIC_ANNOTATION_FOR_TESTS, delegate->NewCallback());
     fetcher->SetTimeout(base::TimeDelta());
 
@@ -247,7 +247,7 @@
     std::unique_ptr<EvilFetcherDelegate> delegate(new EvilFetcherDelegate);
     std::unique_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
     fetcher->Start(frame, WebURLRequest::kRequestContextInternal,
-                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(url),
+                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(),
                    TRAFFIC_ANNOTATION_FOR_TESTS, delegate->NewCallback());
     fetcher->SetTimeout(base::TimeDelta());
     delegate->SetFetcher(fetcher.release());
@@ -267,7 +267,7 @@
     fetcher->SetMethod("POST");
     fetcher->SetBody(kBody);
     fetcher->Start(frame, WebURLRequest::kRequestContextInternal,
-                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(url),
+                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(),
                    TRAFFIC_ANNOTATION_FOR_TESTS, delegate->NewCallback());
 
     delegate->WaitForResponse();
@@ -286,7 +286,7 @@
     std::unique_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
     fetcher->SetHeader("header", kHeader);
     fetcher->Start(frame, WebURLRequest::kRequestContextInternal,
-                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(url),
+                   RenderFrame::FromWebFrame(frame)->GetURLLoaderFactory(),
                    TRAFFIC_ANNOTATION_FOR_TESTS, delegate->NewCallback());
 
     delegate->WaitForResponse();
diff --git a/content/renderer/fetchers/resource_fetcher_impl.cc b/content/renderer/fetchers/resource_fetcher_impl.cc
index e039f80..eeb0f1f3 100644
--- a/content/renderer/fetchers/resource_fetcher_impl.cc
+++ b/content/renderer/fetchers/resource_fetcher_impl.cc
@@ -9,7 +9,6 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
-#include "content/common/possibly_associated_interface_ptr.h"
 #include "content/public/common/referrer.h"
 #include "content/public/renderer/render_frame.h"
 #include "content/renderer/loader/resource_dispatcher.h"
@@ -19,6 +18,7 @@
 #include "net/http/http_request_headers.h"
 #include "net/url_request/url_request_context.h"
 #include "services/network/public/cpp/resource_request_body.h"
+#include "services/network/public/interfaces/url_loader_factory.mojom.h"
 #include "third_party/WebKit/public/platform/WebSecurityOrigin.h"
 #include "third_party/WebKit/public/platform/WebString.h"
 #include "third_party/WebKit/public/platform/WebURL.h"
@@ -64,7 +64,7 @@
   }
 
   void Start(const network::ResourceRequest& request,
-             network::mojom::URLLoaderFactory* url_loader_factory,
+             scoped_refptr<SharedURLLoaderFactory> url_loader_factory,
              const net::NetworkTrafficAnnotationTag& annotation_tag,
              scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
     status_ = Status::kStarted;
@@ -229,8 +229,6 @@
   mojo::Binding<network::mojom::URLLoaderClient> client_binding_;
   mojo::ScopedDataPipeConsumerHandle data_pipe_;
   mojo::SimpleWatcher data_pipe_watcher_;
-  PossiblyAssociatedInterfacePtr<network::mojom::URLLoaderFactory>
-      loader_factory_;
 
   Status status_;
 
@@ -288,7 +286,7 @@
 void ResourceFetcherImpl::Start(
     blink::WebLocalFrame* frame,
     blink::WebURLRequest::RequestContext request_context,
-    network::mojom::URLLoaderFactory* url_loader_factory,
+    scoped_refptr<SharedURLLoaderFactory> url_loader_factory,
     const net::NetworkTrafficAnnotationTag& annotation_tag,
     Callback callback,
     size_t maximum_download_size) {
@@ -318,7 +316,7 @@
                                          maximum_download_size);
   // TODO(kinuko, toyoshim): This task runner should be given by the consumer
   // of this class.
-  client_->Start(request_, url_loader_factory, annotation_tag,
+  client_->Start(request_, std::move(url_loader_factory), annotation_tag,
                  frame->GetTaskRunner(blink::TaskType::kNetworking));
 
   // No need to hold on to the request; reset it now.
diff --git a/content/renderer/fetchers/resource_fetcher_impl.h b/content/renderer/fetchers/resource_fetcher_impl.h
index 936b3c7..7953119 100644
--- a/content/renderer/fetchers/resource_fetcher_impl.h
+++ b/content/renderer/fetchers/resource_fetcher_impl.h
@@ -15,7 +15,6 @@
 #include "content/public/renderer/resource_fetcher.h"
 #include "net/http/http_request_headers.h"
 #include "services/network/public/cpp/resource_request.h"
-#include "services/network/public/interfaces/url_loader_factory.mojom.h"
 #include "third_party/WebKit/public/platform/WebURLRequest.h"
 
 class GURL;
@@ -34,7 +33,7 @@
   void SetHeader(const std::string& header, const std::string& value) override;
   void Start(blink::WebLocalFrame* frame,
              blink::WebURLRequest::RequestContext request_context,
-             network::mojom::URLLoaderFactory* url_loader_factory,
+             scoped_refptr<SharedURLLoaderFactory> url_loader_factory,
              const net::NetworkTrafficAnnotationTag& annotation_tag,
              Callback callback,
              size_t maximum_download_size) override;
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index bfc9c54..97b8d1b 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -7072,9 +7072,8 @@
   OnSetAccessibilityMode(new_mode);
 }
 
-network::mojom::URLLoaderFactory* RenderFrameImpl::GetURLLoaderFactory(
-    const GURL& request_url) {
-  return GetLoaderFactoryBundle()->GetFactoryForURL(request_url);
+scoped_refptr<SharedURLLoaderFactory> RenderFrameImpl::GetURLLoaderFactory() {
+  return GetLoaderFactoryBundle();
 }
 
 blink::WebPlugin* RenderFrameImpl::GetWebPluginForFind() {
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 53ca4d5..eca83d9 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -498,8 +498,7 @@
       blink::TaskType task_type) override;
   int GetEnabledBindings() const override;
   void SetAccessibilityModeForTest(ui::AXMode new_mode) override;
-  network::mojom::URLLoaderFactory* GetURLLoaderFactory(
-      const GURL& request_url) override;
+  scoped_refptr<SharedURLLoaderFactory> GetURLLoaderFactory() override;
 
   // blink::mojom::EngagementClient implementation:
   void SetEngagementLevel(const url::Origin& origin,