Chromium Code Reviews| Index: components/page_load_metrics/renderer/page_timing_metrics_sender.cc |
| diff --git a/components/page_load_metrics/renderer/page_timing_metrics_sender.cc b/components/page_load_metrics/renderer/page_timing_metrics_sender.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..62aa749321f694ec5acb4c8790e85e81f1689054 |
| --- /dev/null |
| +++ b/components/page_load_metrics/renderer/page_timing_metrics_sender.cc |
| @@ -0,0 +1,47 @@ |
| +// Copyright 2015 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 "base/callback.h" |
| +#include "base/time/time.h" |
| +#include "base/timer/timer.h" |
| +#include "components/page_load_metrics/common/page_load_metrics_messages.h" |
| +#include "components/page_load_metrics/renderer/page_timing_metrics_sender.h" |
| +#include "ipc/ipc_sender.h" |
| + |
| +namespace page_load_metrics { |
| + |
| +namespace { |
| +const int kTimerDelayMillis = 1000; |
| +} // namespace |
| + |
| +PageTimingMetricsSender::PageTimingMetricsSender(IPC::Sender* ipc_sender, |
| + int routing_id, |
| + scoped_ptr<base::Timer> timer) |
| + : ipc_sender_(ipc_sender), routing_id_(routing_id), timer_(timer.Pass()) {} |
| + |
| +PageTimingMetricsSender::~PageTimingMetricsSender() { |
| + if (timer_->IsRunning()) { |
| + timer_->Stop(); |
|
Bryan McQuade
2015/09/02 18:26:46
I know I wrote this bit of code, but I think it wo
Charlie Harrison
2015/09/02 18:38:24
Yes good idea. This took me a little bit to grok.
|
| + SendNow(); |
| + } |
| +} |
| + |
| +void PageTimingMetricsSender::Send(const PageLoadTiming& timing) { |
| + if (timing == last_timing_) |
| + return; |
| + |
| + last_timing_ = timing; |
| + |
| + if (!timer_->IsRunning()) |
| + timer_->Start( |
| + FROM_HERE, base::TimeDelta::FromMilliseconds(kTimerDelayMillis), |
| + base::Bind(&PageTimingMetricsSender::SendNow, base::Unretained(this))); |
| +} |
| + |
| +void PageTimingMetricsSender::SendNow() { |
| + ipc_sender_->Send( |
| + new PageLoadMetricsMsg_TimingUpdated(routing_id_, last_timing_)); |
| +} |
| + |
| +} // namespace page_load_metrics |