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

Unified Diff: chrome/browser/prerender/prerender_resource_handler.cc

Issue 6523062: Cancel prerender if any of the visited URLs are https. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 10 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/browser/prerender/prerender_resource_handler.cc
diff --git a/chrome/browser/prerender/prerender_resource_handler.cc b/chrome/browser/prerender/prerender_resource_handler.cc
index 0d60610bd32b01d083f7a08e899e0bfb9d807a5d..65ec6d392e3b715d720bb6818557e1522c1162a0 100644
--- a/chrome/browser/prerender/prerender_resource_handler.cc
+++ b/chrome/browser/prerender/prerender_resource_handler.cc
@@ -14,16 +14,32 @@ namespace prerender {
namespace {
-bool ShouldPrerender(const GURL& url, const ResourceResponse* response) {
+bool ShouldPrerenderURL(const GURL& url) {
+ if (!url.is_valid())
+ return false;
+ if (!url.SchemeIs("http")) {
+ RecordFinalStatus(FINAL_STATUS_HTTPS);
+ return false;
+ }
+ return true;
+}
+
+bool ValidateAliasURLs(const std::vector<GURL>& urls) {
+ for (std::vector<GURL>::const_iterator it = urls.begin();
+ it != urls.end();
+ ++it) {
+ if (!ShouldPrerenderURL(*it))
+ return false;
+ }
+ return true;
+}
+
+bool ShouldPrerender(const ResourceResponse* response) {
if (!response)
return false;
const ResourceResponseHead& rrh = response->response_head;
- if (!url.is_valid())
- return false;
if (!rrh.headers)
return false;
- if (!(url.SchemeIs("http") || url.SchemeIs("https")))
- return false;
if (rrh.mime_type != "text/html")
return false;
if (rrh.headers->response_code() != 200)
@@ -41,6 +57,8 @@ PrerenderResourceHandler* PrerenderResourceHandler::MaybeCreate(
return NULL;
if (!(request.load_flags() & net::LOAD_PREFETCH))
return NULL;
+ if (!ShouldPrerenderURL(request.url()))
+ return NULL;
if (request.method() != "GET")
return NULL;
return new PrerenderResourceHandler(request,
@@ -89,6 +107,8 @@ bool PrerenderResourceHandler::OnRequestRedirected(int request_id,
bool will_redirect = next_handler_->OnRequestRedirected(
request_id, url, response, defer);
if (will_redirect) {
+ if (!ShouldPrerenderURL(url))
+ return false;
alias_urls_.push_back(url);
url_ = url;
}
@@ -97,7 +117,8 @@ bool PrerenderResourceHandler::OnRequestRedirected(int request_id,
bool PrerenderResourceHandler::OnResponseStarted(int request_id,
ResourceResponse* response) {
- if (ShouldPrerender(url_, response)) {
+ if (ShouldPrerender(response)) {
+ DCHECK(ValidateAliasURLs(alias_urls_));
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
@@ -116,6 +137,8 @@ bool PrerenderResourceHandler::OnWillStart(int request_id,
bool* defer) {
bool will_start = next_handler_->OnWillStart(request_id, url, defer);
if (will_start) {
+ if (!ShouldPrerenderURL(url))
+ return false;
alias_urls_.push_back(url);
url_ = url;
}
« no previous file with comments | « chrome/browser/prerender/prerender_resource_handler.h ('k') | chrome/browser/prerender/prerender_resource_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698