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

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

Issue 7835004: Moved the following IPCs out of chrome into content where they are handled by (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 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
« no previous file with comments | « chrome/browser/prerender/prerender_tab_helper.h ('k') | chrome/browser/ui/browser.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_tab_helper.h" 5 #include "chrome/browser/prerender/prerender_tab_helper.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "chrome/browser/prerender/prerender_manager.h" 10 #include "chrome/browser/prerender/prerender_manager.h"
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 return; // PrerenderManager needs a delegate to handle the swap. 185 return; // PrerenderManager needs a delegate to handle the swap.
186 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 186 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
187 if (!prerender_manager) 187 if (!prerender_manager)
188 return; 188 return;
189 if (prerender_manager->IsTabContentsPrerendering(tab_contents())) 189 if (prerender_manager->IsTabContentsPrerendering(tab_contents()))
190 return; 190 return;
191 prerender_manager->MarkTabContentsAsNotPrerendered(tab_contents()); 191 prerender_manager->MarkTabContentsAsNotPrerendered(tab_contents());
192 MaybeUsePrerenderedPage(url, has_opener_set); 192 MaybeUsePrerenderedPage(url, has_opener_set);
193 } 193 }
194 194
195 bool PrerenderTabHelper::OnMessageReceived(const IPC::Message& message) { 195 void PrerenderTabHelper::UpdateTargetURL(int32 page_id, const GURL& url) {
196 IPC_BEGIN_MESSAGE_MAP(PrerenderTabHelper, message)
197 IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartProvisionalLoadForFrame,
198 OnDidStartProvisionalLoadForFrame)
199 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateTargetURL, OnMsgUpdateTargetURL)
200 IPC_END_MESSAGE_MAP()
201 return false;
202 }
203
204 void PrerenderTabHelper::OnDidStartProvisionalLoadForFrame(int64 frame_id,
205 bool is_main_frame,
206 bool has_opener_set,
207 const GURL& url) {
208 if (is_main_frame) {
209 RecordPageviewEvent(PAGEVIEW_EVENT_LOAD_START);
210 if (IsTopSite(url))
211 RecordPageviewEvent(PAGEVIEW_EVENT_TOP_SITE_LOAD_START);
212
213 // Record the beginning of a new PPLT navigation.
214 pplt_load_start_ = base::TimeTicks::Now();
215
216 // Update hover stats.
217 for (int i = 0; i < kNumHoverThresholds; i++)
218 last_hovers_[i].RecordNavigation(url);
219
220 MaybeLogCurrentHover(current_hover_url_ == url);
221 }
222 }
223
224 void PrerenderTabHelper::OnMsgUpdateTargetURL(int32 page_id, const GURL& url) {
225 for (int i = 0; i < kNumHoverThresholds; i++) 196 for (int i = 0; i < kNumHoverThresholds; i++)
226 last_hovers_[i].RecordHover(url); 197 last_hovers_[i].RecordHover(url);
227 198
228 if (url != current_hover_url_) { 199 if (url != current_hover_url_) {
229 MaybeLogCurrentHover(false); 200 MaybeLogCurrentHover(false);
230 current_hover_url_ = url; 201 current_hover_url_ = url;
231 current_hover_time_ = base::TimeTicks::Now(); 202 current_hover_time_ = base::TimeTicks::Now();
232 } 203 }
233 } 204 }
234 205
235 void PrerenderTabHelper::DidStopLoading() { 206 void PrerenderTabHelper::DidStopLoading() {
236 // Don't include prerendered pages in the PPLT metric until after they are 207 // Don't include prerendered pages in the PPLT metric until after they are
237 // swapped in. 208 // swapped in.
238 209
239 // Compute the PPLT metric and report it in a histogram, if needed. 210 // Compute the PPLT metric and report it in a histogram, if needed.
240 if (!pplt_load_start_.is_null() && !IsPrerendering()) { 211 if (!pplt_load_start_.is_null() && !IsPrerendering()) {
241 PrerenderManager::RecordPerceivedPageLoadTime( 212 PrerenderManager::RecordPerceivedPageLoadTime(
242 base::TimeTicks::Now() - pplt_load_start_, tab_contents()); 213 base::TimeTicks::Now() - pplt_load_start_, tab_contents());
243 } 214 }
244 215
245 // Reset the PPLT metric. 216 // Reset the PPLT metric.
246 pplt_load_start_ = base::TimeTicks(); 217 pplt_load_start_ = base::TimeTicks();
247 } 218 }
248 219
220 void PrerenderTabHelper::DidStartProvisionalLoadForFrame(
221 int64 frame_id,
222 bool is_main_frame,
223 const GURL& validated_url,
224 bool is_error_page,
225 RenderViewHost* render_view_host) {
226 if (is_main_frame) {
227 RecordPageviewEvent(PAGEVIEW_EVENT_LOAD_START);
228 if (IsTopSite(validated_url))
229 RecordPageviewEvent(PAGEVIEW_EVENT_TOP_SITE_LOAD_START);
230
231 // Record the beginning of a new PPLT navigation.
232 pplt_load_start_ = base::TimeTicks::Now();
233
234 // Update hover stats.
235 for (int i = 0; i < kNumHoverThresholds; i++)
236 last_hovers_[i].RecordNavigation(validated_url);
237
238 MaybeLogCurrentHover(current_hover_url_ == validated_url);
239 }
240 }
241
249 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const { 242 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const {
250 Profile* profile = 243 Profile* profile =
251 Profile::FromBrowserContext(tab_contents()->browser_context()); 244 Profile::FromBrowserContext(tab_contents()->browser_context());
252 if (!profile) 245 if (!profile)
253 return NULL; 246 return NULL;
254 return profile->GetPrerenderManager(); 247 return profile->GetPrerenderManager();
255 } 248 }
256 249
257 bool PrerenderTabHelper::MaybeUsePrerenderedPage(const GURL& url, 250 bool PrerenderTabHelper::MaybeUsePrerenderedPage(const GURL& url,
258 bool has_opener_set) { 251 bool has_opener_set) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 302
310 current_hover_url_ = GURL(); 303 current_hover_url_ = GURL();
311 } 304 }
312 305
313 bool PrerenderTabHelper::IsTopSite(const GURL& url) { 306 bool PrerenderTabHelper::IsTopSite(const GURL& url) {
314 PrerenderManager* pm = MaybeGetPrerenderManager(); 307 PrerenderManager* pm = MaybeGetPrerenderManager();
315 return (pm && pm->IsTopSite(url)); 308 return (pm && pm->IsTopSite(url));
316 } 309 }
317 310
318 } // namespace prerender 311 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_tab_helper.h ('k') | chrome/browser/ui/browser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698