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

Side by Side Diff: chrome/browser/prerender/prerender_contents.cc

Issue 7289020: Updating histograms to allow for experiments & log origin-based histograms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/prerender/prerender_contents.h" 5 #include "chrome/browser/prerender/prerender_contents.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/process_util.h" 10 #include "base/process_util.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 GURL url_; 56 GURL url_;
57 }; 57 };
58 58
59 } // end namespace 59 } // end namespace
60 60
61 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory { 61 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory {
62 public: 62 public:
63 virtual PrerenderContents* CreatePrerenderContents( 63 virtual PrerenderContents* CreatePrerenderContents(
64 PrerenderManager* prerender_manager, PrerenderTracker* prerender_tracker, 64 PrerenderManager* prerender_manager, PrerenderTracker* prerender_tracker,
65 Profile* profile, const GURL& url, const GURL& referrer, 65 Profile* profile, const GURL& url, const GURL& referrer,
66 Origin origin) OVERRIDE { 66 Origin origin, char experiment_id) OVERRIDE {
67 return new PrerenderContents(prerender_manager, prerender_tracker, profile, 67 return new PrerenderContents(prerender_manager, prerender_tracker, profile,
68 url, referrer, origin); 68 url, referrer, origin, experiment_id);
69 } 69 }
70 }; 70 };
71 71
72 // TabContentsDelegateImpl ----------------------------------------------------- 72 // TabContentsDelegateImpl -----------------------------------------------------
73 73
74 class PrerenderContents::TabContentsDelegateImpl 74 class PrerenderContents::TabContentsDelegateImpl
75 : public TabContentsDelegate { 75 : public TabContentsDelegate {
76 public: 76 public:
77 explicit TabContentsDelegateImpl(PrerenderContents* prerender_contents) : 77 explicit TabContentsDelegateImpl(PrerenderContents* prerender_contents) :
78 prerender_contents_(prerender_contents) { 78 prerender_contents_(prerender_contents) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 AddPageVector add_page_vector_; 121 AddPageVector add_page_vector_;
122 122
123 PrerenderContents* prerender_contents_; 123 PrerenderContents* prerender_contents_;
124 }; 124 };
125 125
126 PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager, 126 PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager,
127 PrerenderTracker* prerender_tracker, 127 PrerenderTracker* prerender_tracker,
128 Profile* profile, 128 Profile* profile,
129 const GURL& url, 129 const GURL& url,
130 const GURL& referrer, 130 const GURL& referrer,
131 Origin origin) 131 Origin origin,
132 char experiment_id)
132 : prerender_manager_(prerender_manager), 133 : prerender_manager_(prerender_manager),
133 prerender_tracker_(prerender_tracker), 134 prerender_tracker_(prerender_tracker),
134 prerender_url_(url), 135 prerender_url_(url),
135 referrer_(referrer), 136 referrer_(referrer),
136 profile_(profile), 137 profile_(profile),
137 page_id_(0), 138 page_id_(0),
138 has_stopped_loading_(false), 139 has_stopped_loading_(false),
139 final_status_(FINAL_STATUS_MAX), 140 final_status_(FINAL_STATUS_MAX),
140 prerendering_has_started_(false), 141 prerendering_has_started_(false),
141 prerendering_has_been_cancelled_(false), 142 prerendering_has_been_cancelled_(false),
142 child_id_(-1), 143 child_id_(-1),
143 route_id_(-1), 144 route_id_(-1),
144 starting_page_id_(-1), 145 starting_page_id_(-1),
145 origin_(origin) { 146 origin_(origin),
147 experiment_id_(experiment_id) {
146 DCHECK(prerender_manager != NULL); 148 DCHECK(prerender_manager != NULL);
147 } 149 }
148 150
149 bool PrerenderContents::Init() { 151 bool PrerenderContents::Init() {
150 return AddAliasURL(prerender_url_); 152 return AddAliasURL(prerender_url_);
151 } 153 }
152 154
153 // static 155 // static
154 PrerenderContents::Factory* PrerenderContents::CreateFactory() { 156 PrerenderContents::Factory* PrerenderContents::CreateFactory() {
155 return new PrerenderContentsFactoryImpl(); 157 return new PrerenderContentsFactoryImpl();
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 PrerenderContents::~PrerenderContents() { 308 PrerenderContents::~PrerenderContents() {
307 DCHECK(final_status_ != FINAL_STATUS_MAX); 309 DCHECK(final_status_ != FINAL_STATUS_MAX);
308 DCHECK(prerendering_has_been_cancelled_ || 310 DCHECK(prerendering_has_been_cancelled_ ||
309 final_status_ == FINAL_STATUS_USED || 311 final_status_ == FINAL_STATUS_USED ||
310 final_status_ == FINAL_STATUS_CONTROL_GROUP); 312 final_status_ == FINAL_STATUS_CONTROL_GROUP);
311 DCHECK(origin_ != ORIGIN_MAX); 313 DCHECK(origin_ != ORIGIN_MAX);
312 314
313 // If we haven't even started prerendering, we were just in the control 315 // If we haven't even started prerendering, we were just in the control
314 // group, which means we do not want to record the status. 316 // group, which means we do not want to record the status.
315 if (prerendering_has_started()) 317 if (prerendering_has_started())
316 RecordFinalStatus(origin_, final_status_); 318 prerender_manager_->RecordFinalStatus(origin_, experiment_id_,
319 final_status_);
317 320
318 if (child_id_ != -1 && route_id_ != -1) 321 if (child_id_ != -1 && route_id_ != -1)
319 prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_); 322 prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_);
320 323
321 // If we still have a TabContents, clean up anything we need to and then 324 // If we still have a TabContents, clean up anything we need to and then
322 // destroy it. 325 // destroy it.
323 if (prerender_contents_.get()) 326 if (prerender_contents_.get())
324 delete ReleasePrerenderContents(); 327 delete ReleasePrerenderContents();
325 328
326 // The following URLs are no longer rendering. 329 // The following URLs are no longer rendering.
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 return NULL; 614 return NULL;
612 DictionaryValue* dict_value = new DictionaryValue(); 615 DictionaryValue* dict_value = new DictionaryValue();
613 dict_value->SetString("url", prerender_url_.spec()); 616 dict_value->SetString("url", prerender_url_.spec());
614 base::TimeTicks current_time = base::TimeTicks::Now(); 617 base::TimeTicks current_time = base::TimeTicks::Now();
615 base::TimeDelta duration = current_time - load_start_time_; 618 base::TimeDelta duration = current_time - load_start_time_;
616 dict_value->SetInteger("duration", duration.InSeconds()); 619 dict_value->SetInteger("duration", duration.InSeconds());
617 return dict_value; 620 return dict_value;
618 } 621 }
619 622
620 } // namespace prerender 623 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698