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

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, uint8 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 23 matching lines...) Expand all
102 AddPageVector add_page_vector_; 102 AddPageVector add_page_vector_;
103 103
104 PrerenderContents* prerender_contents_; 104 PrerenderContents* prerender_contents_;
105 }; 105 };
106 106
107 PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager, 107 PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager,
108 PrerenderTracker* prerender_tracker, 108 PrerenderTracker* prerender_tracker,
109 Profile* profile, 109 Profile* profile,
110 const GURL& url, 110 const GURL& url,
111 const GURL& referrer, 111 const GURL& referrer,
112 Origin origin) 112 Origin origin,
113 uint8 experiment_id)
113 : prerender_manager_(prerender_manager), 114 : prerender_manager_(prerender_manager),
114 prerender_tracker_(prerender_tracker), 115 prerender_tracker_(prerender_tracker),
115 prerender_url_(url), 116 prerender_url_(url),
116 referrer_(referrer), 117 referrer_(referrer),
117 profile_(profile), 118 profile_(profile),
118 page_id_(0), 119 page_id_(0),
119 has_stopped_loading_(false), 120 has_stopped_loading_(false),
120 final_status_(FINAL_STATUS_MAX), 121 final_status_(FINAL_STATUS_MAX),
121 prerendering_has_started_(false), 122 prerendering_has_started_(false),
122 prerendering_has_been_cancelled_(false), 123 prerendering_has_been_cancelled_(false),
123 child_id_(-1), 124 child_id_(-1),
124 route_id_(-1), 125 route_id_(-1),
125 starting_page_id_(-1), 126 starting_page_id_(-1),
126 origin_(origin) { 127 origin_(origin),
128 experiment_id_(experiment_id) {
127 DCHECK(prerender_manager != NULL); 129 DCHECK(prerender_manager != NULL);
128 } 130 }
129 131
130 bool PrerenderContents::Init() { 132 bool PrerenderContents::Init() {
131 return AddAliasURL(prerender_url_); 133 return AddAliasURL(prerender_url_);
132 } 134 }
133 135
134 // static 136 // static
135 PrerenderContents::Factory* PrerenderContents::CreateFactory() { 137 PrerenderContents::Factory* PrerenderContents::CreateFactory() {
136 return new PrerenderContentsFactoryImpl(); 138 return new PrerenderContentsFactoryImpl();
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 PrerenderContents::~PrerenderContents() { 289 PrerenderContents::~PrerenderContents() {
288 DCHECK(final_status_ != FINAL_STATUS_MAX); 290 DCHECK(final_status_ != FINAL_STATUS_MAX);
289 DCHECK(prerendering_has_been_cancelled_ || 291 DCHECK(prerendering_has_been_cancelled_ ||
290 final_status_ == FINAL_STATUS_USED || 292 final_status_ == FINAL_STATUS_USED ||
291 final_status_ == FINAL_STATUS_CONTROL_GROUP); 293 final_status_ == FINAL_STATUS_CONTROL_GROUP);
292 DCHECK(origin_ != ORIGIN_MAX); 294 DCHECK(origin_ != ORIGIN_MAX);
293 295
294 // If we haven't even started prerendering, we were just in the control 296 // If we haven't even started prerendering, we were just in the control
295 // group, which means we do not want to record the status. 297 // group, which means we do not want to record the status.
296 if (prerendering_has_started()) 298 if (prerendering_has_started())
297 RecordFinalStatus(origin_, final_status_); 299 prerender_manager_->RecordFinalStatus(origin_, experiment_id_,
300 final_status_);
298 301
299 if (child_id_ != -1 && route_id_ != -1) 302 if (child_id_ != -1 && route_id_ != -1)
300 prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_); 303 prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_);
301 304
302 // If we still have a TabContents, clean up anything we need to and then 305 // If we still have a TabContents, clean up anything we need to and then
303 // destroy it. 306 // destroy it.
304 if (prerender_contents_.get()) 307 if (prerender_contents_.get())
305 delete ReleasePrerenderContents(); 308 delete ReleasePrerenderContents();
306 309
307 // The following URLs are no longer rendering. 310 // The following URLs are no longer rendering.
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 return NULL; 593 return NULL;
591 DictionaryValue* dict_value = new DictionaryValue(); 594 DictionaryValue* dict_value = new DictionaryValue();
592 dict_value->SetString("url", prerender_url_.spec()); 595 dict_value->SetString("url", prerender_url_.spec());
593 base::TimeTicks current_time = base::TimeTicks::Now(); 596 base::TimeTicks current_time = base::TimeTicks::Now();
594 base::TimeDelta duration = current_time - load_start_time_; 597 base::TimeDelta duration = current_time - load_start_time_;
595 dict_value->SetInteger("duration", duration.InSeconds()); 598 dict_value->SetInteger("duration", duration.InSeconds());
596 return dict_value; 599 return dict_value;
597 } 600 }
598 601
599 } // namespace prerender 602 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/browser/prerender/prerender_final_status.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698