Chromium Code Reviews| Index: chrome/renderer/chrome_content_renderer_client.cc |
| diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc |
| index 51e8e616838f365f3447c388de5b5f6caa004056..28a60f32b7a5bf2464b8763aa25134b55fca4536 100644 |
| --- a/chrome/renderer/chrome_content_renderer_client.cc |
| +++ b/chrome/renderer/chrome_content_renderer_client.cc |
| @@ -57,6 +57,7 @@ |
| #include "chrome/renderer/prerender/prerender_helper.h" |
| #include "chrome/renderer/prerender/prerenderer_client.h" |
| #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" |
| +#include "chrome/renderer/safe_browsing/safe_browsing_url_loader_throttle.h" |
| #include "chrome/renderer/searchbox/search_bouncer.h" |
| #include "chrome/renderer/searchbox/searchbox.h" |
| #include "chrome/renderer/searchbox/searchbox_extension.h" |
| @@ -106,6 +107,7 @@ |
| #include "ppapi/shared_impl/ppapi_switches.h" |
| #include "printing/features/features.h" |
| #include "services/service_manager/public/cpp/connector.h" |
| +#include "services/service_manager/public/cpp/interface_provider.h" |
| #include "third_party/WebKit/public/platform/URLConversion.h" |
| #include "third_party/WebKit/public/platform/WebCache.h" |
| #include "third_party/WebKit/public/platform/WebCachePolicy.h" |
| @@ -344,6 +346,9 @@ void OnModuleEvent(scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
| } // namespace |
| +ChromeContentRendererClient::FrameData::FrameData() = default; |
| +ChromeContentRendererClient::FrameData::~FrameData() = default; |
| + |
| ChromeContentRendererClient::ChromeContentRendererClient() |
| : main_entry_time_(base::TimeTicks::Now()) { |
| #if BUILDFLAG(ENABLE_EXTENSIONS) |
| @@ -494,7 +499,7 @@ void ChromeContentRendererClient::RenderThreadStarted() { |
| void ChromeContentRendererClient::RenderFrameCreated( |
| content::RenderFrame* render_frame) { |
| - new ChromeRenderFrameObserver(render_frame); |
| + new ChromeRenderFrameObserver(this, render_frame); |
| bool should_whitelist_for_content_settings = |
| base::CommandLine::ForCurrentProcess()->HasSwitch( |
| @@ -1194,7 +1199,8 @@ bool ChromeContentRendererClient::WillSendRequest( |
| WebLocalFrame* frame, |
| ui::PageTransition transition_type, |
| const blink::WebURL& url, |
| - GURL* new_url) { |
| + GURL* new_url, |
| + std::vector<std::unique_ptr<content::URLLoaderThrottle>>* throttles) { |
| // Check whether the request should be allowed. If not allowed, we reset the |
| // URL to something invalid to prevent the request and cause an error. |
| #if BUILDFLAG(ENABLE_EXTENSIONS) |
| @@ -1204,6 +1210,23 @@ bool ChromeContentRendererClient::WillSendRequest( |
| } |
| #endif |
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableNetworkService)) { |
| + RenderFrame* render_frame = content::RenderFrame::FromWebFrame(frame); |
| + auto& frame_data = frame_data_map_[render_frame]; |
| + if (!frame_data.safe_browsing) { |
| + render_frame->GetRemoteInterfaces()->GetInterface( |
| + &frame_data.safe_browsing); |
| + } |
| + |
| + // TODO(yzshen): Is it safe to assume that all URL requests will be aborted |
| + // before the render frame goes away? Because that is when |
| + // |frame_data.safe_browsing| goes away. |
|
kinuko
2017/05/25 11:30:57
This is actually not true (or not going to be true
yzshen1
2017/05/26 20:43:52
Since URL loads may not always associated with ren
|
| + throttles->push_back( |
| + base::MakeUnique<safe_browsing::SafeBrowsingURLLoaderThrottle>( |
| + frame_data.safe_browsing.get())); |
| + } |
| + |
| if (!url.ProtocolIs(chrome::kChromeSearchScheme)) |
| return false; |
| @@ -1578,3 +1601,8 @@ ChromeContentRendererClient::GetTaskSchedulerInitParams() { |
| return task_scheduler_util:: |
| GetRendererTaskSchedulerInitParamsFromCommandLine(); |
| } |
| + |
| +void ChromeContentRendererClient::OnRenderFrameDestruct( |
| + content::RenderFrame* frame) { |
| + frame_data_map_.erase(frame); |
| +} |