[Mojo Blob URLs] Handle more navigation cases.

This changes two more IPCs to resolve blob URLs in blink before
sending the request to the browser, hopefully covering all cases.

Still only works with the network service enabled (and that's
probably not going to change), but at least fixes ordering issues
the network service had between resolving and revoking blob URLs.

Design doc: https://docs.google.com/document/d/1DqVcTWE9Qb_3KpIRH2bFV-6hWEr8S92c4ppY67YL1KI/edit#heading=h.n4fzuc6mgziv

Bug: 800901
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_mojo
Change-Id: Iad88fc87264b248d15b03bdad2c24d2c5a46d9df
Reviewed-on: https://chromium-review.googlesource.com/899508
Reviewed-by: Camille Lamy <[email protected]>
Reviewed-by: Kinuko Yasuda <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Nasko Oskov <[email protected]>
Commit-Queue: Marijn Kruisselbrink <[email protected]>
Cr-Commit-Position: refs/heads/master@{#561670}
diff --git a/content/browser/frame_host/navigator_impl.h b/content/browser/frame_host/navigator_impl.h
index 741e7a0e..21557ba 100644
--- a/content/browser/frame_host/navigator_impl.h
+++ b/content/browser/frame_host/navigator_impl.h
@@ -76,17 +76,18 @@
   bool StartHistoryNavigationInNewSubframe(
       RenderFrameHostImpl* render_frame_host,
       const GURL& default_url) override;
-  void RequestOpenURL(
-      RenderFrameHostImpl* render_frame_host,
-      const GURL& url,
-      bool uses_post,
-      const scoped_refptr<network::ResourceRequestBody>& body,
-      const std::string& extra_headers,
-      const Referrer& referrer,
-      WindowOpenDisposition disposition,
-      bool should_replace_current_entry,
-      bool user_gesture,
-      blink::WebTriggeringEventInfo triggering_event_info) override;
+  void RequestOpenURL(RenderFrameHostImpl* render_frame_host,
+                      const GURL& url,
+                      bool uses_post,
+                      const scoped_refptr<network::ResourceRequestBody>& body,
+                      const std::string& extra_headers,
+                      const Referrer& referrer,
+                      WindowOpenDisposition disposition,
+                      bool should_replace_current_entry,
+                      bool user_gesture,
+                      blink::WebTriggeringEventInfo triggering_event_info,
+                      scoped_refptr<network::SharedURLLoaderFactory>
+                          blob_url_loader_factory) override;
   void NavigateFromFrameProxy(
       RenderFrameHostImpl* render_frame_host,
       const GURL& url,
@@ -96,7 +97,9 @@
       bool should_replace_current_entry,
       const std::string& method,
       scoped_refptr<network::ResourceRequestBody> post_body,
-      const std::string& extra_headers) override;
+      const std::string& extra_headers,
+      scoped_refptr<network::SharedURLLoaderFactory> blob_url_loader_factory)
+      override;
   void OnBeforeUnloadACK(FrameTreeNode* frame_tree_node,
                          bool proceed,
                          const base::TimeTicks& proceed_time) override;