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

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

Issue 6263014: Add Perceived PageLoad Time (PPLT) metrics for Prerender Experiments,... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_manager.h" 5 #include "chrome/browser/prerender/prerender_manager.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/metrics/histogram.h"
8 #include "base/time.h" 9 #include "base/time.h"
9 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/prerender/prerender_contents.h" 11 #include "chrome/browser/prerender/prerender_contents.h"
11 #include "chrome/browser/renderer_host/render_view_host.h" 12 #include "chrome/browser/renderer_host/render_view_host.h"
12 #include "chrome/browser/tab_contents/tab_contents.h" 13 #include "chrome/browser/tab_contents/tab_contents.h"
13 #include "chrome/browser/tab_contents/render_view_host_manager.h" 14 #include "chrome/browser/tab_contents/render_view_host_manager.h"
14 #include "chrome/common/render_messages.h" 15 #include "chrome/common/render_messages.h"
15 16
16 struct PrerenderManager::PrerenderContentsData { 17 struct PrerenderManager::PrerenderContentsData {
17 PrerenderContents* contents_; 18 PrerenderContents* contents_;
18 base::Time start_time_; 19 base::Time start_time_;
19 GURL url_; 20 GURL url_;
20 PrerenderContentsData(PrerenderContents* contents, 21 PrerenderContentsData(PrerenderContents* contents,
21 base::Time start_time, 22 base::Time start_time,
22 GURL url) 23 GURL url)
23 : contents_(contents), 24 : contents_(contents),
24 start_time_(start_time), 25 start_time_(start_time),
25 url_(url) { 26 url_(url) {
26 } 27 }
27 }; 28 };
28 29
29 PrerenderManager::PrerenderManager(Profile* profile) 30 PrerenderManager::PrerenderManager(Profile* profile)
30 : profile_(profile), 31 : profile_(profile),
31 max_prerender_age_(base::TimeDelta::FromSeconds( 32 max_prerender_age_(base::TimeDelta::FromSeconds(
32 kDefaultMaxPrerenderAgeSeconds)), 33 kDefaultMaxPrerenderAgeSeconds)),
33 max_elements_(kDefaultMaxPrerenderElements) { 34 max_elements_(kDefaultMaxPrerenderElements),
35 mode_(PRERENDER_MODE_ENABLED) {
34 } 36 }
35 37
36 PrerenderManager::~PrerenderManager() { 38 PrerenderManager::~PrerenderManager() {
37 while (prerender_list_.size() > 0) { 39 while (prerender_list_.size() > 0) {
38 PrerenderContentsData data = prerender_list_.front(); 40 PrerenderContentsData data = prerender_list_.front();
39 prerender_list_.pop_front(); 41 prerender_list_.pop_front();
40 delete data.contents_; 42 delete data.contents_;
41 } 43 }
42 } 44 }
43 45
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 tc->SwapInRenderViewHost(rvh); 103 tc->SwapInRenderViewHost(rvh);
102 104
103 ViewHostMsg_FrameNavigate_Params* p = pc->navigate_params(); 105 ViewHostMsg_FrameNavigate_Params* p = pc->navigate_params();
104 if (p != NULL) 106 if (p != NULL)
105 tc->DidNavigate(rvh, *p); 107 tc->DidNavigate(rvh, *p);
106 108
107 string16 title = pc->title(); 109 string16 title = pc->title();
108 if (!title.empty()) 110 if (!title.empty())
109 tc->UpdateTitle(rvh, pc->page_id(), UTF16ToWideHack(title)); 111 tc->UpdateTitle(rvh, pc->page_id(), UTF16ToWideHack(title));
110 112
113 if (pc->has_stopped_loading())
114 tc->DidStopLoading();
115
111 return true; 116 return true;
112 } 117 }
113 118
114 void PrerenderManager::RemoveEntry(PrerenderContents* entry) { 119 void PrerenderManager::RemoveEntry(PrerenderContents* entry) {
115 DCHECK(CalledOnValidThread()); 120 DCHECK(CalledOnValidThread());
116 for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); 121 for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin();
117 it != prerender_list_.end(); 122 it != prerender_list_.end();
118 ++it) { 123 ++it) {
119 if (it->contents_ == entry) { 124 if (it->contents_ == entry) {
120 prerender_list_.erase(it); 125 prerender_list_.erase(it);
(...skipping 11 matching lines...) Expand all
132 bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const { 137 bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const {
133 base::Time now = GetCurrentTime(); 138 base::Time now = GetCurrentTime();
134 return (now - start < max_prerender_age_); 139 return (now - start < max_prerender_age_);
135 } 140 }
136 141
137 PrerenderContents* PrerenderManager::CreatePrerenderContents( 142 PrerenderContents* PrerenderManager::CreatePrerenderContents(
138 const GURL& url, 143 const GURL& url,
139 const std::vector<GURL>& alias_urls) { 144 const std::vector<GURL>& alias_urls) {
140 return new PrerenderContents(this, profile_, url, alias_urls); 145 return new PrerenderContents(this, profile_, url, alias_urls);
141 } 146 }
147
148 void PrerenderManager::RecordPerceivedPageLoadTime(base::TimeDelta pplt) {
149 switch(mode_) {
150 case PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP:
151 UMA_HISTOGRAM_TIMES("PLT.PerceivedPageLoadTime_PrerenderControl", pplt);
152 break;
153 case PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP:
154 UMA_HISTOGRAM_TIMES("PLT.PerceivedPageLoadTime_PrerenderTreatment", pplt);
155 break;
156 default:
157 break;
158 }
159 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698