Chromium Code Reviews| Index: chrome/browser/prerender/prerender_plt_recorder.cc |
| =================================================================== |
| --- chrome/browser/prerender/prerender_plt_recorder.cc (revision 0) |
| +++ chrome/browser/prerender/prerender_plt_recorder.cc (revision 0) |
| @@ -0,0 +1,47 @@ |
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/prerender/prerender_plt_recorder.h" |
| + |
| +#include "base/time.h" |
| +#include "chrome/browser/prerender/prerender_manager.h" |
| +#include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/tab_contents/tab_contents.h" |
| +#include "chrome/common/render_messages.h" |
| + |
| +PrerenderPLTRecorder::PrerenderPLTRecorder(TabContents* tab_contents) |
| + : tab_contents_(tab_contents), |
| + pplt_load_start_() { |
| + |
| +} |
| + |
| +PrerenderPLTRecorder::~PrerenderPLTRecorder() { |
| +} |
| + |
| +bool PrerenderPLTRecorder::OnMessageReceived(const IPC::Message& message) { |
| + IPC_BEGIN_MESSAGE_MAP(PrerenderPLTRecorder, message) |
| + IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartProvisionalLoadForFrame, |
| + OnDidStartProvisionalLoadForFrame) |
| + IPC_END_MESSAGE_MAP() |
| + return false; |
| +} |
| + |
| +void PrerenderPLTRecorder::OnDidStartProvisionalLoadForFrame(int64 frame_id, |
| + bool is_main_frame, |
|
brettw
2011/01/26 22:13:28
Since these won't fit, all the arguments should ju
|
| + const GURL& url) { |
| + if (is_main_frame) { |
| + // Record the beginning of a new PPLT navigation. |
| + pplt_load_start_ = base::TimeTicks::Now(); |
| + } |
| +} |
| + |
| +void PrerenderPLTRecorder::DidStopLoading() { |
| + // Compute the PPLT metric and report it in a histogram, if needed. |
| + PrerenderManager* pm = tab_contents_->profile()->GetPrerenderManager(); |
| + if (pm != NULL && !pplt_load_start_.is_null()) |
| + pm->RecordPerceivedPageLoadTime(base::TimeTicks::Now() - pplt_load_start_); |
| + |
| + // Reset the PPLT metric. |
| + pplt_load_start_ = base::TimeTicks(); |
| +} |