Commit c1b62480 authored by Tsuyoshi Horo's avatar Tsuyoshi Horo Committed by Commit Bot

Stop keeping raw pointer of RenderFrameHost in UrlLoaderFactoryProxyImpl

Bug: 1128270
Change-Id: I29d6caaba1093baf46d3ac6086db3aca7a4cb4e0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2449676Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Commit-Queue: Tsuyoshi Horo <horo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814518}
parent cf3d607f
...@@ -21,14 +21,18 @@ void UrlLoaderFactoryProxyImpl::Create( ...@@ -21,14 +21,18 @@ void UrlLoaderFactoryProxyImpl::Create(
UrlLoaderFactoryProxyImpl::UrlLoaderFactoryProxyImpl( UrlLoaderFactoryProxyImpl::UrlLoaderFactoryProxyImpl(
content::RenderFrameHost* frame_host) content::RenderFrameHost* frame_host)
: frame_host_(frame_host) {} : frame_id_(content::GlobalFrameRoutingId(frame_host->GetProcess()->GetID(),
frame_host->GetRoutingID())) {}
UrlLoaderFactoryProxyImpl::~UrlLoaderFactoryProxyImpl() = default; UrlLoaderFactoryProxyImpl::~UrlLoaderFactoryProxyImpl() = default;
void UrlLoaderFactoryProxyImpl::GetProxiedURLLoaderFactory( void UrlLoaderFactoryProxyImpl::GetProxiedURLLoaderFactory(
mojo::PendingRemote<network::mojom::URLLoaderFactory> original_factory, mojo::PendingRemote<network::mojom::URLLoaderFactory> original_factory,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> proxied_factory) { mojo::PendingReceiver<network::mojom::URLLoaderFactory> proxied_factory) {
auto* process = frame_host_->GetProcess(); auto* frame_host = content::RenderFrameHost::FromID(frame_id_);
if (!frame_host)
return;
auto* process = frame_host->GetProcess();
auto* browser_context = process->GetBrowserContext(); auto* browser_context = process->GetBrowserContext();
auto* web_request_api = auto* web_request_api =
extensions::BrowserContextKeyedAPIFactory<extensions::WebRequestAPI>::Get( extensions::BrowserContextKeyedAPIFactory<extensions::WebRequestAPI>::Get(
...@@ -36,10 +40,10 @@ void UrlLoaderFactoryProxyImpl::GetProxiedURLLoaderFactory( ...@@ -36,10 +40,10 @@ void UrlLoaderFactoryProxyImpl::GetProxiedURLLoaderFactory(
DCHECK(web_request_api); DCHECK(web_request_api);
web_request_api->MaybeProxyURLLoaderFactory( web_request_api->MaybeProxyURLLoaderFactory(
browser_context, frame_host_, process->GetID(), browser_context, frame_host, process->GetID(),
content::ContentBrowserClient::URLLoaderFactoryType::kDocumentSubResource, content::ContentBrowserClient::URLLoaderFactoryType::kDocumentSubResource,
/*navigation_id=*/base::nullopt, /*navigation_id=*/base::nullopt,
base::UkmSourceId::FromInt64(frame_host_->GetPageUkmSourceId()), base::UkmSourceId::FromInt64(frame_host->GetPageUkmSourceId()),
&proxied_factory, &proxied_factory,
/*headber_client=*/nullptr); /*headber_client=*/nullptr);
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define CHROME_BROWSER_LOADER_URL_LOADER_FACTORY_PROXY_IMPL_H_ #define CHROME_BROWSER_LOADER_URL_LOADER_FACTORY_PROXY_IMPL_H_
#include "chrome/common/url_loader_factory_proxy.mojom.h" #include "chrome/common/url_loader_factory_proxy.mojom.h"
#include "content/public/browser/global_routing_id.h"
namespace content { namespace content {
class RenderFrameHost; class RenderFrameHost;
...@@ -15,6 +16,8 @@ class RenderFrameHost; ...@@ -15,6 +16,8 @@ class RenderFrameHost;
// requests, so that subresource requests that are served within the renderer // requests, so that subresource requests that are served within the renderer
// process (from a Web Bundle) can still be intercepted by Chrome extensions. // process (from a Web Bundle) can still be intercepted by Chrome extensions.
// This interface is implemented only when ENABLE_EXTENSIONS build flag is set. // This interface is implemented only when ENABLE_EXTENSIONS build flag is set.
// TODO(crbug.com/1135829): Consider using RenderDocumentHostUserData to
// restrict the lifetime of this object to the lifetime of a navigation.
class UrlLoaderFactoryProxyImpl : public chrome::mojom::UrlLoaderFactoryProxy { class UrlLoaderFactoryProxyImpl : public chrome::mojom::UrlLoaderFactoryProxy {
public: public:
static void Create( static void Create(
...@@ -29,7 +32,7 @@ class UrlLoaderFactoryProxyImpl : public chrome::mojom::UrlLoaderFactoryProxy { ...@@ -29,7 +32,7 @@ class UrlLoaderFactoryProxyImpl : public chrome::mojom::UrlLoaderFactoryProxy {
override; override;
private: private:
content::RenderFrameHost* frame_host_; const content::GlobalFrameRoutingId frame_id_;
}; };
#endif // CHROME_BROWSER_LOADER_URL_LOADER_FACTORY_PROXY_IMPL_H_ #endif // CHROME_BROWSER_LOADER_URL_LOADER_FACTORY_PROXY_IMPL_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment