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

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

Issue 7210020: Added prerendering to omnibox. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More histograms/rebase Created 9 years, 6 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_observer.h" 5 #include "chrome/browser/prerender/prerender_observer.h"
6 6
7 #include "base/time.h" 7 #include "base/time.h"
8 #include "chrome/browser/prerender/prerender_manager.h" 8 #include "chrome/browser/prerender/prerender_manager.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "content/browser/tab_contents/tab_contents.h" 10 #include "content/browser/tab_contents/tab_contents.h"
(...skipping 10 matching lines...) Expand all
21 } 21 }
22 22
23 void PrerenderObserver::ProvisionalChangeToMainFrameUrl(const GURL& url, 23 void PrerenderObserver::ProvisionalChangeToMainFrameUrl(const GURL& url,
24 bool has_opener_set) { 24 bool has_opener_set) {
25 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 25 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
26 if (!prerender_manager) 26 if (!prerender_manager)
27 return; 27 return;
28 if (prerender_manager->IsTabContentsPrerendering(tab_contents())) 28 if (prerender_manager->IsTabContentsPrerendering(tab_contents()))
29 return; 29 return;
30 prerender_manager->MarkTabContentsAsNotPrerendered(tab_contents()); 30 prerender_manager->MarkTabContentsAsNotPrerendered(tab_contents());
31 MaybeUsePreloadedPage(url, has_opener_set); 31 MaybeUsePrerenderedPage(url, has_opener_set);
32 prerender_manager->RecordNavigation(url); 32 prerender_manager->RecordNavigation(url);
33 } 33 }
34 34
35 bool PrerenderObserver::OnMessageReceived(const IPC::Message& message) { 35 bool PrerenderObserver::OnMessageReceived(const IPC::Message& message) {
36 IPC_BEGIN_MESSAGE_MAP(PrerenderObserver, message) 36 IPC_BEGIN_MESSAGE_MAP(PrerenderObserver, message)
37 IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartProvisionalLoadForFrame, 37 IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartProvisionalLoadForFrame,
38 OnDidStartProvisionalLoadForFrame) 38 OnDidStartProvisionalLoadForFrame)
39 IPC_END_MESSAGE_MAP() 39 IPC_END_MESSAGE_MAP()
40 return false; 40 return false;
41 } 41 }
(...skipping 19 matching lines...) Expand all
61 } 61 }
62 62
63 // Reset the PPLT metric. 63 // Reset the PPLT metric.
64 pplt_load_start_ = base::TimeTicks(); 64 pplt_load_start_ = base::TimeTicks();
65 } 65 }
66 66
67 PrerenderManager* PrerenderObserver::MaybeGetPrerenderManager() { 67 PrerenderManager* PrerenderObserver::MaybeGetPrerenderManager() {
68 return tab_contents()->profile()->GetPrerenderManager(); 68 return tab_contents()->profile()->GetPrerenderManager();
69 } 69 }
70 70
71 bool PrerenderObserver::MaybeUsePreloadedPage(const GURL& url, 71 bool PrerenderObserver::MaybeUsePrerenderedPage(const GURL& url,
72 bool has_opener_set) { 72 bool has_opener_set) {
73 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 73 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
74 if (!prerender_manager) 74 if (!prerender_manager)
75 return false; 75 return false;
76 DCHECK(!prerender_manager->IsTabContentsPrerendering(tab_contents())); 76 DCHECK(!prerender_manager->IsTabContentsPrerendering(tab_contents()));
77 return prerender_manager->MaybeUsePreloadedPage(tab_contents(), 77 return prerender_manager->MaybeUsePrerenderedPage(tab_contents(),
78 url, 78 url,
79 has_opener_set); 79 has_opener_set);
80 } 80 }
81 81
82 bool PrerenderObserver::IsPrerendering() { 82 bool PrerenderObserver::IsPrerendering() {
83 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 83 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
84 if (!prerender_manager) 84 if (!prerender_manager)
85 return false; 85 return false;
86 return prerender_manager->IsTabContentsPrerendering(tab_contents()); 86 return prerender_manager->IsTabContentsPrerendering(tab_contents());
87 } 87 }
88 88
89 void PrerenderObserver::PrerenderSwappedIn() { 89 void PrerenderObserver::PrerenderSwappedIn() {
90 // Ensure we are not prerendering any more. 90 // Ensure we are not prerendering any more.
91 DCHECK(!IsPrerendering()); 91 DCHECK(!IsPrerendering());
92 if (pplt_load_start_.is_null()) { 92 if (pplt_load_start_.is_null()) {
93 // If we have already finished loading, report a 0 PPLT. 93 // If we have already finished loading, report a 0 PPLT.
94 PrerenderManager::RecordPerceivedPageLoadTime(base::TimeDelta(), 94 PrerenderManager::RecordPerceivedPageLoadTime(base::TimeDelta(),
95 tab_contents()); 95 tab_contents());
96 } else { 96 } else {
97 // If we have not finished loading yet, rebase the start time to now. 97 // If we have not finished loading yet, rebase the start time to now.
98 pplt_load_start_ = base::TimeTicks::Now(); 98 pplt_load_start_ = base::TimeTicks::Now();
99 } 99 }
100 } 100 }
101 101
102 } // namespace prerender 102 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698