Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Unified Diff: components/page_load_metrics/renderer/page_timing_metrics_sender_unittest.cc

Issue 2100653002: PageLoadTiming fixes in prep for using base::Optional (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: revert changes to PageLoadTiming Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/page_load_metrics/renderer/metrics_render_frame_observer_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/page_load_metrics/renderer/page_timing_metrics_sender_unittest.cc
diff --git a/components/page_load_metrics/renderer/page_timing_metrics_sender_unittest.cc b/components/page_load_metrics/renderer/page_timing_metrics_sender_unittest.cc
index 83993d688dd57e6f86ecdb1c8886d0a3a56c910a..2aca12557a891b3379d53c7a7c29b0103d1f6e02 100644
--- a/components/page_load_metrics/renderer/page_timing_metrics_sender_unittest.cc
+++ b/components/page_load_metrics/renderer/page_timing_metrics_sender_unittest.cc
@@ -6,31 +6,13 @@
#include "base/time/time.h"
#include "base/timer/mock_timer.h"
-#include "components/page_load_metrics/common/page_load_metrics_messages.h"
#include "components/page_load_metrics/common/page_load_timing.h"
+#include "components/page_load_metrics/renderer/fake_page_timing_metrics_ipc_sender.h"
#include "ipc/ipc_message.h"
-#include "ipc/ipc_message_macros.h"
-#include "ipc/ipc_sender.h"
-#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace page_load_metrics {
-class MockIPCSender : public IPC::Sender {
- public:
- bool Send(IPC::Message* message) {
- IPC_BEGIN_MESSAGE_MAP(MockIPCSender, *message)
- IPC_MESSAGE_HANDLER(PageLoadMetricsMsg_TimingUpdated, OnTimingUpdated)
- IPC_MESSAGE_UNHANDLED(ADD_FAILURE())
- IPC_END_MESSAGE_MAP()
-
- delete message;
- return true;
- }
-
- MOCK_METHOD2(OnTimingUpdated, void(PageLoadTiming, PageLoadMetadata));
-};
-
// Thin wrapper around PageTimingMetricsSender that provides access to the
// MockTimer instance.
class TestPageTimingMetricsSender : public PageTimingMetricsSender {
@@ -51,11 +33,12 @@ class TestPageTimingMetricsSender : public PageTimingMetricsSender {
class PageTimingMetricsSenderTest : public testing::Test {
public:
PageTimingMetricsSenderTest()
- : metrics_sender_(&mock_ipc_sender_, PageLoadTiming()) {}
+ : metrics_sender_(new TestPageTimingMetricsSender(&fake_ipc_sender_,
+ PageLoadTiming())) {}
protected:
- testing::StrictMock<MockIPCSender> mock_ipc_sender_;
- TestPageTimingMetricsSender metrics_sender_;
+ FakePageTimingMetricsIPCSender fake_ipc_sender_;
+ std::unique_ptr<TestPageTimingMetricsSender> metrics_sender_;
};
TEST_F(PageTimingMetricsSenderTest, Basic) {
@@ -66,21 +49,21 @@ TEST_F(PageTimingMetricsSenderTest, Basic) {
timing.navigation_start = nav_start;
timing.first_layout = first_layout;
- metrics_sender_.Send(timing);
+ metrics_sender_->Send(timing);
// Firing the timer should trigger sending of an OnTimingUpdated IPC.
- EXPECT_CALL(mock_ipc_sender_, OnTimingUpdated(timing, PageLoadMetadata()));
- ASSERT_TRUE(metrics_sender_.mock_timer()->IsRunning());
- metrics_sender_.mock_timer()->Fire();
- EXPECT_FALSE(metrics_sender_.mock_timer()->IsRunning());
+ fake_ipc_sender_.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.
- testing::Mock::VerifyAndClearExpectations(&mock_ipc_sender_);
+ fake_ipc_sender_.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.
- metrics_sender_.Send(timing);
- EXPECT_FALSE(metrics_sender_.mock_timer()->IsRunning());
+ metrics_sender_->Send(timing);
+ EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
}
TEST_F(PageTimingMetricsSenderTest, CoalesceMultipleIPCs) {
@@ -92,19 +75,19 @@ TEST_F(PageTimingMetricsSenderTest, CoalesceMultipleIPCs) {
timing.navigation_start = nav_start;
timing.first_layout = first_layout;
- metrics_sender_.Send(timing);
- ASSERT_TRUE(metrics_sender_.mock_timer()->IsRunning());
+ metrics_sender_->Send(timing);
+ ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
// Send an updated PageLoadTiming before the timer has fired. When the timer
// fires, the updated PageLoadTiming should be sent.
timing.load_event_start = load_event;
- metrics_sender_.Send(timing);
+ metrics_sender_->Send(timing);
// Firing the timer should trigger sending of the OnTimingUpdated IPC with
// the most recently provided PageLoadTiming instance.
- EXPECT_CALL(mock_ipc_sender_, OnTimingUpdated(timing, PageLoadMetadata()));
- metrics_sender_.mock_timer()->Fire();
- EXPECT_FALSE(metrics_sender_.mock_timer()->IsRunning());
+ fake_ipc_sender_.ExpectPageLoadTiming(timing);
+ metrics_sender_->mock_timer()->Fire();
+ EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
}
TEST_F(PageTimingMetricsSenderTest, MultipleIPCs) {
@@ -116,21 +99,21 @@ TEST_F(PageTimingMetricsSenderTest, MultipleIPCs) {
timing.navigation_start = nav_start;
timing.first_layout = first_layout;
- metrics_sender_.Send(timing);
- ASSERT_TRUE(metrics_sender_.mock_timer()->IsRunning());
- EXPECT_CALL(mock_ipc_sender_, OnTimingUpdated(timing, PageLoadMetadata()));
- metrics_sender_.mock_timer()->Fire();
- EXPECT_FALSE(metrics_sender_.mock_timer()->IsRunning());
- testing::Mock::VerifyAndClearExpectations(&mock_ipc_sender_);
+ metrics_sender_->Send(timing);
+ ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
+ fake_ipc_sender_.ExpectPageLoadTiming(timing);
+ metrics_sender_->mock_timer()->Fire();
+ EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
+ fake_ipc_sender_.VerifyExpectedTimings();
// Send an updated PageLoadTiming after the timer for the first send request
// has fired, and verify that a second IPC is sent.
timing.load_event_start = load_event;
- metrics_sender_.Send(timing);
- ASSERT_TRUE(metrics_sender_.mock_timer()->IsRunning());
- EXPECT_CALL(mock_ipc_sender_, OnTimingUpdated(timing, PageLoadMetadata()));
- metrics_sender_.mock_timer()->Fire();
- EXPECT_FALSE(metrics_sender_.mock_timer()->IsRunning());
+ metrics_sender_->Send(timing);
+ ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
+ fake_ipc_sender_.ExpectPageLoadTiming(timing);
+ metrics_sender_->mock_timer()->Fire();
+ EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
}
TEST_F(PageTimingMetricsSenderTest, SendIPCOnDestructor) {
@@ -139,11 +122,14 @@ TEST_F(PageTimingMetricsSenderTest, SendIPCOnDestructor) {
timing.first_layout = base::TimeDelta::FromMilliseconds(10);
// This test wants to verify behavior in the PageTimingMetricsSender
- // destructor, the EXPECT_CALL will be verified when the test tears down and
- // |metrics_sender_| goes out of scope.
- metrics_sender_.Send(timing);
- EXPECT_CALL(mock_ipc_sender_, OnTimingUpdated(timing, PageLoadMetadata()));
- ASSERT_TRUE(metrics_sender_.mock_timer()->IsRunning());
+ // destructor. The EXPECT_CALL will be satisfied when the |metrics_sender_|
+ // is destroyed below.
+ metrics_sender_->Send(timing);
+ fake_ipc_sender_.ExpectPageLoadTiming(timing);
+ ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
+
+ // Destroy |metrics_sender_|, in order to force its destructor to run.
+ metrics_sender_.reset();
}
} // namespace page_load_metrics
« no previous file with comments | « components/page_load_metrics/renderer/metrics_render_frame_observer_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698