Revert "FrameHost::SubresourceResponseStarted: s/ url / origin_of_final_url /."

This CL reverts r716451 (also minimally/partially reverting r724034 as
required).  The revert is needed because r716451 caused every blob load
(blobs see no certificate errors) to call RevokeUserAllowExceptions.

Bug: 1049625, 973885
Tbr: Nasko Oskov <[email protected]>
Tbr: Charlie Harrison <[email protected]>
Tbr: Alex Ilin <[email protected]>
No-Tree-Checks: true
Change-Id: Ie592ae6bc79820eea2230244f0abd890e279be4d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2047355
Commit-Queue: John Budorick <[email protected]>
Reviewed-by: Alex Moshchuk <[email protected]>
Cr-Commit-Position: refs/heads/master@{#740011}
diff --git a/content/browser/frame_host/render_frame_host_delegate.h b/content/browser/frame_host/render_frame_host_delegate.h
index 5d07589..125045d 100644
--- a/content/browser/frame_host/render_frame_host_delegate.h
+++ b/content/browser/frame_host/render_frame_host_delegate.h
@@ -433,9 +433,8 @@
   virtual bool IsBeingDestroyed();
 
   // Notifies that the render frame started loading a subresource.
-  virtual void SubresourceResponseStarted(
-      const url::Origin& origin_of_final_response_url,
-      net::CertStatus cert_status) {}
+  virtual void SubresourceResponseStarted(const GURL& url,
+                                          net::CertStatus cert_status) {}
 
   // Notifies that the render finished loading a subresource for the frame
   // associated with |render_frame_host|.
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index 4f756d8..d06304b 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -4824,10 +4824,9 @@
 }
 
 void RenderFrameHostImpl::SubresourceResponseStarted(
-    const url::Origin& origin_of_final_response_url,
+    const GURL& url,
     net::CertStatus cert_status) {
-  delegate_->SubresourceResponseStarted(origin_of_final_response_url,
-                                        cert_status);
+  delegate_->SubresourceResponseStarted(url, cert_status);
 }
 
 void RenderFrameHostImpl::ResourceLoadComplete(
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index 9a0c14dc..74ec2d1 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -1627,9 +1627,8 @@
       mojo::PendingAssociatedRemote<mojom::NavigationClient> navigation_client,
       mojo::PendingRemote<blink::mojom::NavigationInitiator>
           navigation_initiator) override;
-  void SubresourceResponseStarted(
-      const url::Origin& origin_of_final_response_url,
-      net::CertStatus cert_status) override;
+  void SubresourceResponseStarted(const GURL& url,
+                                  net::CertStatus cert_status) override;
   void ResourceLoadComplete(
       blink::mojom::ResourceLoadInfoPtr resource_load_info) override;
   void DidChangeName(const std::string& name,
diff --git a/content/browser/ssl/ssl_manager.cc b/content/browser/ssl/ssl_manager.cc
index e68ce312..3195a33 100644
--- a/content/browser/ssl/ssl_manager.cc
+++ b/content/browser/ssl/ssl_manager.cc
@@ -312,19 +312,16 @@
   OnCertErrorInternal(std::move(handler));
 }
 
-void SSLManager::DidStartResourceResponse(
-    const url::Origin& origin_of_final_response_url,
-    bool has_certificate_errors) {
-  const std::string& scheme = origin_of_final_response_url.scheme();
-  const std::string& host = origin_of_final_response_url.host();
-
-  if (!GURL::SchemeIsCryptographic(scheme) || has_certificate_errors)
+void SSLManager::DidStartResourceResponse(const GURL& url,
+                                          bool has_certificate_errors) {
+  if (!url.SchemeIsCryptographic() || has_certificate_errors)
     return;
 
   // If the scheme is https: or wss and the cert did not have any errors, revoke
   // any previous decisions that have occurred.
-  if (!ssl_host_state_delegate_ || !ssl_host_state_delegate_->HasAllowException(
-                                       host, controller_->GetWebContents())) {
+  if (!ssl_host_state_delegate_ ||
+      !ssl_host_state_delegate_->HasAllowException(
+          url.host(), controller_->GetWebContents())) {
     return;
   }
 
@@ -332,7 +329,7 @@
   // clear out any exceptions that were made by the user for bad
   // certificates. This intentionally does not apply to cached resources
   // (see https://crbug.com/634553 for an explanation).
-  ssl_host_state_delegate_->RevokeUserAllowExceptions(host);
+  ssl_host_state_delegate_->RevokeUserAllowExceptions(url.host());
 }
 
 void SSLManager::OnCertErrorInternal(std::unique_ptr<SSLErrorHandler> handler) {
diff --git a/content/browser/ssl/ssl_manager.h b/content/browser/ssl/ssl_manager.h
index 669dc03a..fdf7eac 100644
--- a/content/browser/ssl/ssl_manager.h
+++ b/content/browser/ssl/ssl_manager.h
@@ -64,8 +64,7 @@
   NavigationControllerImpl* controller() { return controller_; }
 
   void DidCommitProvisionalLoad(const LoadCommittedDetails& details);
-  void DidStartResourceResponse(const url::Origin& origin_of_final_response_url,
-                                bool has_certificate_errors);
+  void DidStartResourceResponse(const GURL& url, bool has_certificate_errors);
 
   // The following methods are called when a page includes insecure
   // content. These methods update the SSLStatus on the NavigationEntry
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 975a63c..2ffa3da7 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4476,7 +4476,7 @@
   if (navigation_handle->IsInMainFrame() &&
       navigation_handle->GetNetErrorCode() == net::OK) {
     controller_.ssl_manager()->DidStartResourceResponse(
-        url::Origin::Create(navigation_handle->GetURL()),
+        navigation_handle->GetURL(),
         navigation_handle->GetSSLInfo().has_value()
             ? net::IsCertStatusError(
                   navigation_handle->GetSSLInfo()->cert_status)
@@ -4830,11 +4830,9 @@
   // AddNewContents method call.
 }
 
-void WebContentsImpl::SubresourceResponseStarted(
-    const url::Origin& origin_of_final_response_url,
-    net::CertStatus cert_status) {
-  controller_.ssl_manager()->DidStartResourceResponse(
-      origin_of_final_response_url, cert_status);
+void WebContentsImpl::SubresourceResponseStarted(const GURL& url,
+                                                 net::CertStatus cert_status) {
+  controller_.ssl_manager()->DidStartResourceResponse(url, cert_status);
   SetNotWaitingForResponse();
 }
 
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 63ad3ce..cd039f4 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -647,9 +647,8 @@
   base::android::ScopedJavaLocalRef<jobject> GetJavaRenderFrameHostDelegate()
       override;
 #endif
-  void SubresourceResponseStarted(
-      const url::Origin& origin_of_final_response_url,
-      net::CertStatus cert_status) override;
+  void SubresourceResponseStarted(const GURL& url,
+                                  net::CertStatus cert_status) override;
   void ResourceLoadComplete(
       RenderFrameHost* render_frame_host,
       const GlobalRequestID& request_id,
diff --git a/content/browser/web_contents/web_contents_impl_browsertest.cc b/content/browser/web_contents/web_contents_impl_browsertest.cc
index 62cb386..1a9e325 100644
--- a/content/browser/web_contents/web_contents_impl_browsertest.cc
+++ b/content/browser/web_contents/web_contents_impl_browsertest.cc
@@ -834,8 +834,7 @@
   ASSERT_EQ(2U, observer.resource_load_infos().size());
   const blink::mojom::ResourceLoadInfoPtr& page_load_info =
       observer.resource_load_infos()[0];
-  EXPECT_EQ(url::Origin::Create(page_destination_url),
-            page_load_info->origin_of_final_url);
+  EXPECT_EQ(page_destination_url, page_load_info->final_url);
   EXPECT_EQ(page_original_url, page_load_info->original_url);
 
   GURL image_destination_url(embedded_test_server()->GetURL("/blank.jpg"));
@@ -843,8 +842,7 @@
       embedded_test_server()->GetURL("/server-redirect?blank.jpg"));
   const blink::mojom::ResourceLoadInfoPtr& image_load_info =
       observer.resource_load_infos()[1];
-  EXPECT_EQ(url::Origin::Create(image_destination_url),
-            image_load_info->origin_of_final_url);
+  EXPECT_EQ(image_destination_url, image_load_info->final_url);
   EXPECT_EQ(image_original_url, image_load_info->original_url);
 }
 
@@ -921,8 +919,7 @@
       NavigateToURL(shell(), start_url, target_url /* expected_commit_url */));
 
   ASSERT_EQ(1U, observer.resource_load_infos().size());
-  EXPECT_EQ(url::Origin::Create(target_url),
-            observer.resource_load_infos()[0]->origin_of_final_url);
+  EXPECT_EQ(target_url, observer.resource_load_infos()[0]->final_url);
 
   ASSERT_EQ(2U, observer.resource_load_infos()[0]->redirect_info_chain.size());
   EXPECT_EQ(url::Origin::Create(intermediate_url),
@@ -955,8 +952,7 @@
   EXPECT_TRUE(NavigateToURL(shell(), url));
   ASSERT_EQ(2U, observer.resource_load_infos().size());
   EXPECT_EQ(url, observer.resource_load_infos()[0]->original_url);
-  EXPECT_EQ(url::Origin::Create(url),
-            observer.resource_load_infos()[0]->origin_of_final_url);
+  EXPECT_EQ(url, observer.resource_load_infos()[0]->final_url);
   EXPECT_TRUE(observer.resource_is_associated_with_main_frame()[0]);
   EXPECT_TRUE(observer.resource_is_associated_with_main_frame()[1]);
   observer.Reset();
@@ -966,10 +962,9 @@
   EXPECT_TRUE(NavigateToURL(shell(), data_url));
   ASSERT_EQ(3U, observer.resource_load_infos().size());
   EXPECT_EQ(data_url, observer.resource_load_infos()[0]->original_url);
-  EXPECT_TRUE(observer.resource_load_infos()[0]->origin_of_final_url.opaque());
+  EXPECT_EQ(data_url, observer.resource_load_infos()[0]->final_url);
   EXPECT_EQ(url, observer.resource_load_infos()[1]->original_url);
-  EXPECT_EQ(url::Origin::Create(url),
-            observer.resource_load_infos()[1]->origin_of_final_url);
+  EXPECT_EQ(url, observer.resource_load_infos()[1]->final_url);
   EXPECT_TRUE(observer.resource_is_associated_with_main_frame()[0]);
   EXPECT_FALSE(observer.resource_is_associated_with_main_frame()[1]);
   EXPECT_FALSE(observer.resource_is_associated_with_main_frame()[2]);
diff --git a/content/common/frame.mojom b/content/common/frame.mojom
index ad40ee5..8209cc3 100644
--- a/content/common/frame.mojom
+++ b/content/common/frame.mojom
@@ -428,17 +428,9 @@
       pending_remote<blink.mojom.NavigationInitiator>? navigation_initiator);
 
   // Sent when a subresource response has started.
-  //
-  // |origin_of_final_response_url| is the origin of the final (after all
-  // redirects) URL of the subresource response.  The full URL is not
-  // available, because in some cases the path and query may be sanitized away
-  // - see https://crbug.com/973885.
-  //
   // |cert_status| is the bitmask of status info of the SSL certificate. (see
   // net/cert/cert_status_flags.h).
-  SubresourceResponseStarted(
-      url.mojom.Origin origin_of_final_response_url,
-      uint32 cert_status);
+  SubresourceResponseStarted(url.mojom.Url url, uint32 cert_status);
 
   // Sent when a resource load finished, successfully or not.
   ResourceLoadComplete(blink.mojom.ResourceLoadInfo url_load_info);
diff --git a/content/public/renderer/render_frame_observer.h b/content/public/renderer/render_frame_observer.h
index 5612176e..b09355c 100644
--- a/content/public/renderer/render_frame_observer.h
+++ b/content/public/renderer/render_frame_observer.h
@@ -189,7 +189,7 @@
   // |previews_state| is the PreviewsState if the request is a sub-resource. For
   // Document resources, |previews_state| should be reported as PREVIEWS_OFF.
   virtual void DidStartResponse(
-      const url::Origin& origin_of_final_response_url,
+      const GURL& response_url,
       int request_id,
       const network::mojom::URLResponseHead& response_head,
       blink::mojom::ResourceType resource_type,
diff --git a/content/renderer/loader/resource_load_stats.cc b/content/renderer/loader/resource_load_stats.cc
index dcc995a..d994acce 100644
--- a/content/renderer/loader/resource_load_stats.cc
+++ b/content/renderer/loader/resource_load_stats.cc
@@ -44,7 +44,7 @@
 
 void ResourceResponseReceived(int render_frame_id,
                               int request_id,
-                              const url::Origin& origin_of_final_response_url,
+                              const GURL& response_url,
                               network::mojom::URLResponseHeadPtr response_head,
                               blink::mojom::ResourceType resource_type,
                               PreviewsState previews_state) {
@@ -53,11 +53,10 @@
     return;
   if (!blink::IsResourceTypeFrame(resource_type)) {
     frame->GetFrameHost()->SubresourceResponseStarted(
-        origin_of_final_response_url, response_head->cert_status);
+        response_url, response_head->cert_status);
   }
-  frame->DidStartResponse(origin_of_final_response_url, request_id,
-                          std::move(response_head), resource_type,
-                          previews_state);
+  frame->DidStartResponse(response_url, request_id, std::move(response_head),
+                          resource_type, previews_state);
 }
 
 void ResourceTransferSizeUpdated(int render_frame_id,
@@ -112,7 +111,7 @@
   auto resource_load_info = blink::mojom::ResourceLoadInfo::New();
   resource_load_info->method = http_method;
   resource_load_info->original_url = request_url;
-  resource_load_info->origin_of_final_url = url::Origin::Create(request_url);
+  resource_load_info->final_url = request_url;
   resource_load_info->resource_type = resource_type;
   resource_load_info->request_id = request_id;
   resource_load_info->referrer = referrer;
@@ -126,8 +125,7 @@
     blink::mojom::ResourceLoadInfo* resource_load_info,
     const net::RedirectInfo& redirect_info,
     network::mojom::URLResponseHeadPtr redirect_response) {
-  resource_load_info->origin_of_final_url =
-      url::Origin::Create(redirect_info.new_url);
+  resource_load_info->final_url = redirect_info.new_url;
   resource_load_info->method = redirect_info.new_method;
   resource_load_info->referrer = GURL(redirect_info.new_referrer);
   blink::mojom::RedirectInfoPtr net_redirect_info =
@@ -177,7 +175,7 @@
     return;
   if (task_runner->BelongsToCurrentThread()) {
     ResourceResponseReceived(render_frame_id, resource_load_info->request_id,
-                             resource_load_info->origin_of_final_url,
+                             resource_load_info->final_url,
                              std::move(response_head),
                              resource_load_info->resource_type, previews_state);
     return;
@@ -192,8 +190,7 @@
       FROM_HERE,
       base::BindOnce(ResourceResponseReceived, render_frame_id,
                      resource_load_info->request_id,
-                     resource_load_info->origin_of_final_url,
-                     std::move(response_head),
+                     resource_load_info->final_url, std::move(response_head),
                      resource_load_info->resource_type, previews_state));
 }
 
@@ -219,7 +216,7 @@
     int render_frame_id,
     blink::mojom::ResourceLoadInfoPtr resource_load_info,
     const network::URLLoaderCompletionStatus& status) {
-  RecordLoadHistograms(resource_load_info->origin_of_final_url,
+  RecordLoadHistograms(url::Origin::Create(resource_load_info->final_url),
                        resource_load_info->resource_type, status.error_code);
 
   resource_load_info->was_cached = status.exists_in_cache;
@@ -244,7 +241,7 @@
     int render_frame_id,
     blink::mojom::ResourceLoadInfoPtr resource_load_info,
     int net_error) {
-  RecordLoadHistograms(resource_load_info->origin_of_final_url,
+  RecordLoadHistograms(url::Origin::Create(resource_load_info->final_url),
                        resource_load_info->resource_type, net_error);
 
   auto task_runner = RenderThreadImpl::DeprecatedGetMainTaskRunner();
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index a0636a0..0ed1dba 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4928,15 +4928,14 @@
 }
 
 void RenderFrameImpl::DidStartResponse(
-    const url::Origin& origin_of_final_response_url,
+    const GURL& response_url,
     int request_id,
     network::mojom::URLResponseHeadPtr response_head,
     blink::mojom::ResourceType resource_type,
     PreviewsState previews_state) {
-  for (auto& observer : observers_) {
-    observer.DidStartResponse(origin_of_final_response_url, request_id,
-                              *response_head, resource_type, previews_state);
-  }
+  for (auto& observer : observers_)
+    observer.DidStartResponse(response_url, request_id, *response_head,
+                              resource_type, previews_state);
 }
 
 void RenderFrameImpl::DidCompleteResponse(
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index a1a014b..0d03e04c0 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -902,7 +902,7 @@
   // browser.
   void OnDroppedNavigation();
 
-  void DidStartResponse(const url::Origin& origin_of_final_response_url,
+  void DidStartResponse(const GURL& response_url,
                         int request_id,
                         network::mojom::URLResponseHeadPtr response_head,
                         blink::mojom::ResourceType resource_type,
diff --git a/content/test/test_render_frame.cc b/content/test/test_render_frame.cc
index 49f48cf..1b853ee 100644
--- a/content/test/test_render_frame.cc
+++ b/content/test/test_render_frame.cc
@@ -146,9 +146,8 @@
       mojo::PendingAssociatedRemote<mojom::NavigationClient>,
       mojo::PendingRemote<blink::mojom::NavigationInitiator>) override {}
 
-  void SubresourceResponseStarted(
-      const url::Origin& origin_of_final_response_url,
-      net::CertStatus cert_status) override {}
+  void SubresourceResponseStarted(const GURL& url,
+                                  net::CertStatus cert_status) override {}
 
   void ResourceLoadComplete(
       blink::mojom::ResourceLoadInfoPtr resource_load_info) override {}