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

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
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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 return; // PrerenderManager needs a delegate to handle the swap. 200 return; // PrerenderManager needs a delegate to handle the swap.
201 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 201 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
202 if (!prerender_manager) 202 if (!prerender_manager)
203 return; 203 return;
204 if (prerender_manager->IsTabContentsPrerendering(tab_contents())) 204 if (prerender_manager->IsTabContentsPrerendering(tab_contents()))
205 return; 205 return;
206 prerender_manager->MarkTabContentsAsNotPrerendered(tab_contents()); 206 prerender_manager->MarkTabContentsAsNotPrerendered(tab_contents());
207 MaybeUsePrerenderedPage(url, has_opener_set); 207 MaybeUsePrerenderedPage(url, has_opener_set);
208 } 208 }
209 209
210 bool PrerenderTabHelper::OnMessageReceived(const IPC::Message& message) { 210 void PrerenderTabHelper::UpdateTargetURL(int32 page_id, const GURL& url) {
211 IPC_BEGIN_MESSAGE_MAP(PrerenderTabHelper, message)
212 IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartProvisionalLoadForFrame,
213 OnDidStartProvisionalLoadForFrame)
214 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateTargetURL, OnMsgUpdateTargetURL)
215 IPC_END_MESSAGE_MAP()
216 return false;
217 }
218
219 void PrerenderTabHelper::OnDidStartProvisionalLoadForFrame(int64 frame_id,
220 bool is_main_frame,
221 bool has_opener_set,
222 const GURL& url) {
223 if (is_main_frame) {
224 RecordPageviewEvent(PAGEVIEW_EVENT_LOAD_START);
225 if (IsTopSite(url))
226 RecordPageviewEvent(PAGEVIEW_EVENT_TOP_SITE_LOAD_START);
227
228 // Record the beginning of a new PPLT navigation.
229 pplt_load_start_ = base::TimeTicks::Now();
230
231 // Update hover stats.
232 for (int i = 0; i < kNumHoverThresholds; i++)
233 last_hovers_[i].RecordNavigation(url);
234
235 MaybeLogCurrentHover(current_hover_url_ == url);
236 }
237 }
238
239 void PrerenderTabHelper::OnMsgUpdateTargetURL(int32 page_id, const GURL& url) {
240 for (int i = 0; i < kNumHoverThresholds; i++) 211 for (int i = 0; i < kNumHoverThresholds; i++)
241 last_hovers_[i].RecordHover(url); 212 last_hovers_[i].RecordHover(url);
242 213
243 if (url != current_hover_url_) { 214 if (url != current_hover_url_) {
244 MaybeLogCurrentHover(false); 215 MaybeLogCurrentHover(false);
245 current_hover_url_ = url; 216 current_hover_url_ = url;
246 current_hover_time_ = base::TimeTicks::Now(); 217 current_hover_time_ = base::TimeTicks::Now();
247 } 218 }
248 } 219 }
249 220
250 void PrerenderTabHelper::DidStopLoading() { 221 void PrerenderTabHelper::DidStopLoading() {
251 // Don't include prerendered pages in the PPLT metric until after they are 222 // Don't include prerendered pages in the PPLT metric until after they are
252 // swapped in. 223 // swapped in.
253 224
254 // Compute the PPLT metric and report it in a histogram, if needed. 225 // Compute the PPLT metric and report it in a histogram, if needed.
255 if (!pplt_load_start_.is_null() && !IsPrerendering()) { 226 if (!pplt_load_start_.is_null() && !IsPrerendering()) {
256 PrerenderManager::RecordPerceivedPageLoadTime( 227 PrerenderManager::RecordPerceivedPageLoadTime(
257 base::TimeTicks::Now() - pplt_load_start_, tab_contents()); 228 base::TimeTicks::Now() - pplt_load_start_, tab_contents());
258 } 229 }
259 230
260 // Reset the PPLT metric. 231 // Reset the PPLT metric.
261 pplt_load_start_ = base::TimeTicks(); 232 pplt_load_start_ = base::TimeTicks();
262 } 233 }
263 234
235 void PrerenderTabHelper::DidStartProvisionalLoadForFrame(
236 int64 frame_id,
237 bool is_main_frame,
238 const GURL& validated_url,
239 bool is_error_page,
240 RenderViewHost* render_view_host) {
241 if (is_main_frame) {
242 RecordPageviewEvent(PAGEVIEW_EVENT_LOAD_START);
243 if (IsTopSite(validated_url))
244 RecordPageviewEvent(PAGEVIEW_EVENT_TOP_SITE_LOAD_START);
245
246 // Record the beginning of a new PPLT navigation.
247 pplt_load_start_ = base::TimeTicks::Now();
248
249 // Update hover stats.
250 for (int i = 0; i < kNumHoverThresholds; i++)
251 last_hovers_[i].RecordNavigation(validated_url);
252
253 MaybeLogCurrentHover(current_hover_url_ == validated_url);
254 }
255 }
256
264 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const { 257 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const {
265 Profile* profile = 258 Profile* profile =
266 Profile::FromBrowserContext(tab_contents()->browser_context()); 259 Profile::FromBrowserContext(tab_contents()->browser_context());
267 if (!profile) 260 if (!profile)
268 return NULL; 261 return NULL;
269 return profile->GetPrerenderManager(); 262 return profile->GetPrerenderManager();
270 } 263 }
271 264
272 bool PrerenderTabHelper::MaybeUsePrerenderedPage(const GURL& url, 265 bool PrerenderTabHelper::MaybeUsePrerenderedPage(const GURL& url,
273 bool has_opener_set) { 266 bool has_opener_set) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 317
325 current_hover_url_ = GURL(); 318 current_hover_url_ = GURL();
326 } 319 }
327 320
328 bool PrerenderTabHelper::IsTopSite(const GURL& url) const { 321 bool PrerenderTabHelper::IsTopSite(const GURL& url) const {
329 PrerenderManager* pm = MaybeGetPrerenderManager(); 322 PrerenderManager* pm = MaybeGetPrerenderManager();
330 return (pm && pm->IsTopSite(url)); 323 return (pm && pm->IsTopSite(url));
331 } 324 }
332 325
333 } // namespace prerender 326 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698