Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7638)

Unified Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 2900563002: Network service: Safe browsing check for sub-resources from renderer. (Closed)
Patch Set: . Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+}

Powered by Google App Engine
This is Rietveld 408576698