Index: chrome/browser/prerender/prerender_observer.cc |
=================================================================== |
--- chrome/browser/prerender/prerender_observer.cc (revision 86289) |
+++ chrome/browser/prerender/prerender_observer.cc (working copy) |
@@ -44,10 +44,6 @@ |
bool is_main_frame, |
bool has_opener_set, |
const GURL& url) { |
- // Don't include prerendered pages in the PPLT metric until after they are |
- // swapped in. |
- if (IsPrerendering()) |
- return; |
if (is_main_frame) { |
// Record the beginning of a new PPLT navigation. |
pplt_load_start_ = base::TimeTicks::Now(); |
@@ -57,11 +53,9 @@ |
void PrerenderObserver::DidStopLoading() { |
// Don't include prerendered pages in the PPLT metric until after they are |
// swapped in. |
- if (IsPrerendering()) |
- return; |
// Compute the PPLT metric and report it in a histogram, if needed. |
- if (!pplt_load_start_.is_null()) { |
+ if (!pplt_load_start_.is_null() && !IsPrerendering()) { |
PrerenderManager::RecordPerceivedPageLoadTime( |
base::TimeTicks::Now() - pplt_load_start_, tab_contents()); |
} |
@@ -92,4 +86,17 @@ |
return prerender_manager->IsTabContentsPrerendering(tab_contents()); |
} |
+void PrerenderObserver::PrerenderSwappedIn() { |
+ // Ensure we are not prerendering any more. |
+ DCHECK(!IsPrerendering()); |
+ if (pplt_load_start_.is_null()) { |
+ // If we have already finished loading, report a 0 PPLT. |
+ PrerenderManager::RecordPerceivedPageLoadTime(base::TimeDelta(), |
+ tab_contents()); |
+ } else { |
+ // If we have not finished loading yet, rebase the start time to now. |
+ pplt_load_start_ = base::TimeTicks::Now(); |
+ } |
+} |
+ |
} // namespace prerender |