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 |