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

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

Issue 8503040: Prerendering: Add MatchComplete PPLT (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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_contents.cc
===================================================================
--- chrome/browser/prerender/prerender_contents.cc (revision 109294)
+++ chrome/browser/prerender/prerender_contents.cc (working copy)
@@ -203,7 +203,7 @@
}
bool PrerenderContents::Init() {
- return AddAliasURL(prerender_url_);
+ return AddAliasURL(prerender_url_, false/*destroy_on_failure*/);
}
// static
@@ -349,11 +349,14 @@
void PrerenderContents::set_final_status(FinalStatus final_status) {
DCHECK(final_status >= FINAL_STATUS_USED && final_status < FINAL_STATUS_MAX);
DCHECK(final_status_ == FINAL_STATUS_MAX ||
- final_status_ == FINAL_STATUS_CONTROL_GROUP);
+ final_status_ == FINAL_STATUS_CONTROL_GROUP ||
+ final_status_ == FINAL_STATUS_MATCH_COMPLETE_DUMMY);
- // Don't override final_status_ if it's FINAL_STATUS_CONTROL_GROUP,
- // otherwise data will be collected in the Prerender.FinalStatus histogram.
- if (final_status_ == FINAL_STATUS_CONTROL_GROUP)
+ // Don't override final_status_ if it's FINAL_STATUS_CONTROL_GROUP or
+ // FINAL_STATUS_MATCH_COMPLETE_DUMMY, otherwise data will be collected
+ // in the Prerender.FinalStatus histogram.
+ if (final_status_ == FINAL_STATUS_CONTROL_GROUP ||
+ final_status_ == FINAL_STATUS_MATCH_COMPLETE_DUMMY)
return;
final_status_ = final_status;
@@ -363,11 +366,13 @@
DCHECK(final_status_ != FINAL_STATUS_MAX);
DCHECK(prerendering_has_been_cancelled_ ||
final_status_ == FINAL_STATUS_USED ||
- final_status_ == FINAL_STATUS_CONTROL_GROUP);
+ final_status_ == FINAL_STATUS_CONTROL_GROUP ||
+ final_status_ == FINAL_STATUS_MATCH_COMPLETE_DUMMY);
DCHECK(origin_ != ORIGIN_MAX);
// If we haven't even started prerendering, we were just in the control
- // group, which means we do not want to record the status.
+ // group (or a match complete dummy), which means we do not want to record
+ // the status.
if (prerendering_has_started())
prerender_manager_->RecordFinalStatus(origin_, experiment_id_,
final_status_);
@@ -409,7 +414,8 @@
CHECK(resource_redirect_details);
if (resource_redirect_details->resource_type() ==
ResourceType::MAIN_FRAME) {
- if (!AddAliasURL(resource_redirect_details->new_url()))
+ if (!AddAliasURL(resource_redirect_details->new_url(),
+ true/*destroy_on_failure*/))
return;
}
break;
@@ -480,19 +486,22 @@
}
}
-bool PrerenderContents::AddAliasURL(const GURL& url) {
+bool PrerenderContents::AddAliasURL(const GURL& url, bool destroy_on_failure) {
dominich 2011/11/11 20:02:09 How does the caller know what final status to give
const bool http = url.SchemeIs(chrome::kHttpScheme);
const bool https = url.SchemeIs(chrome::kHttpsScheme);
if (!(http || https)) {
- Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME);
+ if (destroy_on_failure)
+ Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME);
return false;
}
if (https && !prerender_manager_->config().https_allowed) {
- Destroy(FINAL_STATUS_HTTPS);
+ if (destroy_on_failure)
+ Destroy(FINAL_STATUS_HTTPS);
return false;
}
if (prerender_manager_->HasRecentlyBeenNavigatedTo(url)) {
- Destroy(FINAL_STATUS_RECENTLY_VISITED);
+ if (destroy_on_failure)
+ Destroy(FINAL_STATUS_RECENTLY_VISITED);
return false;
}
@@ -533,7 +542,7 @@
bool is_error_page,
RenderViewHost* render_view_host) {
if (is_main_frame) {
- if (!AddAliasURL(validated_url))
+ if (!AddAliasURL(validated_url, true/*destroy_on_failure*/))
return;
// Usually, this event fires if the user clicks or enters a new URL.
@@ -579,7 +588,7 @@
prerendering_has_been_cancelled_ = true;
// This has to be done after setting the final status, as it adds the
// prerender to the history.
- prerender_manager_->MoveEntryToPendingDelete(this);
+ prerender_manager_->MoveEntryToPendingDelete(this, final_status);
// We may destroy the PrerenderContents before we have initialized the
// RenderViewHost. Otherwise set the Observer's PrerenderContents to NULL to

Powered by Google App Engine
This is Rietveld 408576698