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

Unified Diff: chrome/browser/loader/safe_browsing_resource_throttle.cc

Issue 2615883003: [NoStatePrefetch] Implement FINAL_STATUS_SAFEBROWSING (Closed)
Patch Set: main resource only Created 3 years, 11 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
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/loader/safe_browsing_resource_throttle.cc
diff --git a/chrome/browser/loader/safe_browsing_resource_throttle.cc b/chrome/browser/loader/safe_browsing_resource_throttle.cc
index 8fccf4b69c4e8e2b48cc580cdb8751c89e2cab7b..e113651067049f2e1e61fe0e97593bc1da00b9b8 100644
--- a/chrome/browser/loader/safe_browsing_resource_throttle.cc
+++ b/chrome/browser/loader/safe_browsing_resource_throttle.cc
@@ -70,6 +70,19 @@ std::unique_ptr<base::Value> NetLogStringCallback(const char* name,
return std::move(event_params);
}
+// Destroys the prerender contents associated with the web_contents, if any.
+void DestroyPrerenderContents(
+ const content::ResourceRequestInfo::WebContentsGetter&
+ web_contents_getter) {
+ content::WebContents* web_contents = web_contents_getter.Run();
+ if (web_contents) {
+ prerender::PrerenderContents* prerender_contents =
+ prerender::PrerenderContents::FromWebContents(web_contents);
+ if (prerender_contents)
+ prerender_contents->Destroy(prerender::FINAL_STATUS_SAFE_BROWSING);
+ }
+}
+
} // namespace
// TODO(eroman): Downgrade these CHECK()s to DCHECKs once there is more
@@ -267,7 +280,17 @@ void SafeBrowsingResourceThrottle::OnCheckBrowseUrlResult(
return;
}
+ const content::ResourceRequestInfo* info =
+ content::ResourceRequestInfo::ForRequest(request_);
+
if (request_->load_flags() & net::LOAD_PREFETCH) {
+ // Destroy the prefetch with FINAL_STATUS_SAFEBROSWING.
+ if (resource_type_ == content::RESOURCE_TYPE_MAIN_FRAME) {
+ content::BrowserThread::PostTask(
+ content::BrowserThread::UI, FROM_HERE,
+ base::Bind(&DestroyPrerenderContents,
+ info->GetWebContentsGetterForRequest()));
+ }
// Don't prefetch resources that fail safe browsing, disallow them.
Cancel();
UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.UnsafePrefetchCanceled",
@@ -278,9 +301,6 @@ void SafeBrowsingResourceThrottle::OnCheckBrowseUrlResult(
UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.Unsafe", resource_type_,
content::RESOURCE_TYPE_LAST_TYPE);
- const content::ResourceRequestInfo* info =
- content::ResourceRequestInfo::ForRequest(request_);
-
security_interstitials::UnsafeResource resource;
resource.url = url;
resource.original_url = request_->original_url();
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698