Add a helper class for intercepting URLLoader requests.

This allows test to monitor and intercept:
-frame requests (for now only with network service, until non-NS code path starts using URLLoader)
-subresources requests (both with and without network service)

Bug: 776589
Change-Id: I34a7e4ce57b966109bd421beac6eeab26481a2f7
Reviewed-on: https://chromium-review.googlesource.com/789355
Commit-Queue: John Abd-El-Malek <[email protected]>
Reviewed-by: Kinuko Yasuda <[email protected]>
Cr-Commit-Position: refs/heads/master@{#519412}
diff --git a/content/browser/url_loader_factory_getter.h b/content/browser/url_loader_factory_getter.h
index cee9f47..79b6ce1 100644
--- a/content/browser/url_loader_factory_getter.h
+++ b/content/browser/url_loader_factory_getter.h
@@ -30,17 +30,22 @@
 
   // Called on the IO thread to get the URLLoaderFactory to the network service.
   // The pointer shouldn't be cached.
-  mojom::URLLoaderFactoryPtr* GetNetworkFactory();
+  mojom::URLLoaderFactory* GetNetworkFactory();
 
   // Called on the IO thread to get the URLLoaderFactory to the blob service.
   // The pointer shouldn't be cached.
-  CONTENT_EXPORT mojom::URLLoaderFactoryPtr* GetBlobFactory();
+  CONTENT_EXPORT mojom::URLLoaderFactory* GetBlobFactory();
 
   // Overrides the network URLLoaderFactory for subsequent requests. Passing a
   // null pointer will restore the default behavior.
   // This is called on the UI thread.
   CONTENT_EXPORT void SetNetworkFactoryForTesting(
-      mojom::URLLoaderFactoryPtr test_factory);
+      mojom::URLLoaderFactory* test_factory);
+
+  CONTENT_EXPORT mojom::URLLoaderFactoryPtr*
+  original_network_factory_for_testing() {
+    return &network_factory_;
+  }
 
  private:
   friend class base::DeleteHelper<URLLoaderFactoryGetter>;
@@ -49,13 +54,12 @@
   CONTENT_EXPORT ~URLLoaderFactoryGetter();
   void InitializeOnIOThread(mojom::URLLoaderFactoryPtrInfo network_factory,
                             mojom::URLLoaderFactoryPtrInfo blob_factory);
-  void SetTestNetworkFactoryOnIOThread(
-      mojom::URLLoaderFactoryPtrInfo test_factory);
+  void SetTestNetworkFactoryOnIOThread(mojom::URLLoaderFactory* test_factory);
 
   // Only accessed on IO thread.
   mojom::URLLoaderFactoryPtr network_factory_;
   mojom::URLLoaderFactoryPtr blob_factory_;
-  mojom::URLLoaderFactoryPtr test_factory_;
+  mojom::URLLoaderFactory* test_factory_ = nullptr;
 
   DISALLOW_COPY_AND_ASSIGN(URLLoaderFactoryGetter);
 };