Index: chrome/renderer/page_load_metrics/page_timing_metrics_sender_unittest.cc |
diff --git a/chrome/renderer/page_load_metrics/page_timing_metrics_sender_unittest.cc b/chrome/renderer/page_load_metrics/page_timing_metrics_sender_unittest.cc |
index 3756f33e770e4e1ae738afc5b3060a07513acdb1..2133029a35e15613db4a11656e31f96744e07b37 100644 |
--- a/chrome/renderer/page_load_metrics/page_timing_metrics_sender_unittest.cc |
+++ b/chrome/renderer/page_load_metrics/page_timing_metrics_sender_unittest.cc |
@@ -4,11 +4,15 @@ |
#include "chrome/renderer/page_load_metrics/page_timing_metrics_sender.h" |
+#include "base/message_loop/message_loop.h" |
#include "base/time/time.h" |
#include "base/timer/mock_timer.h" |
#include "chrome/common/page_load_metrics/page_load_timing.h" |
+#include "chrome/renderer/page_load_metrics/fake_page_load_metrics.h" |
#include "chrome/renderer/page_load_metrics/fake_page_timing_metrics_ipc_sender.h" |
+#include "chrome/renderer/page_load_metrics/fake_page_timing_sender.h" |
#include "ipc/ipc_message.h" |
+#include "mojo/public/cpp/bindings/binding.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace page_load_metrics { |
@@ -18,10 +22,12 @@ namespace page_load_metrics { |
class TestPageTimingMetricsSender : public PageTimingMetricsSender { |
public: |
explicit TestPageTimingMetricsSender(IPC::Sender* ipc_sender, |
+ PageTimingSender* page_timing_sender, |
const PageLoadTiming& initial_timing) |
: PageTimingMetricsSender( |
ipc_sender, |
MSG_ROUTING_NONE, |
+ page_timing_sender, |
std::unique_ptr<base::Timer>(new base::MockTimer(false, false)), |
initial_timing) {} |
@@ -33,11 +39,23 @@ class TestPageTimingMetricsSender : public PageTimingMetricsSender { |
class PageTimingMetricsSenderTest : public testing::Test { |
public: |
PageTimingMetricsSenderTest() |
- : metrics_sender_(new TestPageTimingMetricsSender(&fake_ipc_sender_, |
+ : binding_(&fake_page_load_metrics_), |
+ metrics_sender_(new TestPageTimingMetricsSender(&fake_ipc_sender_, |
+ &fake_sender_, |
PageLoadTiming())) {} |
protected: |
+ void SetUp() override { |
+ mojom::PageLoadMetricsRequest request = |
+ MakeRequest(&fake_sender_.page_load_metrics_ptr()); |
+ fake_page_load_metrics_.Bind(std::move(request)); |
+ } |
+ |
+ base::MessageLoop loop_; |
+ FakePageLoadMetricsImpl fake_page_load_metrics_; |
FakePageTimingMetricsIPCSender fake_ipc_sender_; |
+ FakePageTimingSender fake_sender_; |
+ mojo::Binding<mojom::PageLoadMetrics> binding_; |
std::unique_ptr<TestPageTimingMetricsSender> metrics_sender_; |
}; |
@@ -53,12 +71,14 @@ TEST_F(PageTimingMetricsSenderTest, Basic) { |
// Firing the timer should trigger sending of an OnTimingUpdated IPC. |
fake_ipc_sender_.ExpectPageLoadTiming(timing); |
+ fake_page_load_metrics_.ExpectPageLoadTiming(timing); |
ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); |
metrics_sender_->mock_timer()->Fire(); |
EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); |
// At this point, we should have triggered the send of the PageLoadTiming IPC. |
fake_ipc_sender_.VerifyExpectedTimings(); |
+ fake_page_load_metrics_.VerifyExpectedTimings(); |
// Attempt to send the same timing instance again. The send should be |
// suppressed, since the timing instance hasn't changed since the last send. |
@@ -86,6 +106,7 @@ TEST_F(PageTimingMetricsSenderTest, CoalesceMultipleIPCs) { |
// Firing the timer should trigger sending of the OnTimingUpdated IPC with |
// the most recently provided PageLoadTiming instance. |
fake_ipc_sender_.ExpectPageLoadTiming(timing); |
+ fake_page_load_metrics_.ExpectPageLoadTiming(timing); |
metrics_sender_->mock_timer()->Fire(); |
EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); |
} |
@@ -102,9 +123,11 @@ TEST_F(PageTimingMetricsSenderTest, MultipleIPCs) { |
metrics_sender_->Send(timing); |
ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); |
fake_ipc_sender_.ExpectPageLoadTiming(timing); |
+ fake_page_load_metrics_.ExpectPageLoadTiming(timing); |
metrics_sender_->mock_timer()->Fire(); |
EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); |
fake_ipc_sender_.VerifyExpectedTimings(); |
+ fake_page_load_metrics_.VerifyExpectedTimings(); |
// Send an updated PageLoadTiming after the timer for the first send request |
// has fired, and verify that a second IPC is sent. |
@@ -112,6 +135,7 @@ TEST_F(PageTimingMetricsSenderTest, MultipleIPCs) { |
metrics_sender_->Send(timing); |
ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); |
fake_ipc_sender_.ExpectPageLoadTiming(timing); |
+ fake_page_load_metrics_.ExpectPageLoadTiming(timing); |
metrics_sender_->mock_timer()->Fire(); |
EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); |
} |
@@ -126,6 +150,7 @@ TEST_F(PageTimingMetricsSenderTest, SendIPCOnDestructor) { |
// is destroyed below. |
metrics_sender_->Send(timing); |
fake_ipc_sender_.ExpectPageLoadTiming(timing); |
+ fake_page_load_metrics_.ExpectPageLoadTiming(timing); |
ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); |
// Destroy |metrics_sender_|, in order to force its destructor to run. |