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

Side by Side Diff: chrome/renderer/page_load_metrics/page_timing_metrics_sender_unittest.cc

Issue 2806863003: [Page Load Metrics] Structure PageLoadTiming. (Closed)
Patch Set: rebase Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « chrome/renderer/page_load_metrics/metrics_render_frame_observer_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/page_load_metrics/page_timing_metrics_sender.h" 5 #include "chrome/renderer/page_load_metrics/page_timing_metrics_sender.h"
6 6
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "base/timer/mock_timer.h" 8 #include "base/timer/mock_timer.h"
9 #include "chrome/common/page_load_metrics/page_load_timing.h" 9 #include "chrome/common/page_load_metrics/page_load_timing.h"
10 #include "chrome/renderer/page_load_metrics/fake_page_timing_metrics_ipc_sender. h" 10 #include "chrome/renderer/page_load_metrics/fake_page_timing_metrics_ipc_sender. h"
(...skipping 29 matching lines...) Expand all
40 FakePageTimingMetricsIPCSender fake_ipc_sender_; 40 FakePageTimingMetricsIPCSender fake_ipc_sender_;
41 std::unique_ptr<TestPageTimingMetricsSender> metrics_sender_; 41 std::unique_ptr<TestPageTimingMetricsSender> metrics_sender_;
42 }; 42 };
43 43
44 TEST_F(PageTimingMetricsSenderTest, Basic) { 44 TEST_F(PageTimingMetricsSenderTest, Basic) {
45 base::Time nav_start = base::Time::FromDoubleT(10); 45 base::Time nav_start = base::Time::FromDoubleT(10);
46 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2); 46 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2);
47 47
48 PageLoadTiming timing; 48 PageLoadTiming timing;
49 timing.navigation_start = nav_start; 49 timing.navigation_start = nav_start;
50 timing.first_layout = first_layout; 50 timing.document_timing.first_layout = first_layout;
51 51
52 metrics_sender_->Send(timing); 52 metrics_sender_->Send(timing);
53 53
54 // Firing the timer should trigger sending of an OnTimingUpdated IPC. 54 // Firing the timer should trigger sending of an OnTimingUpdated IPC.
55 fake_ipc_sender_.ExpectPageLoadTiming(timing); 55 fake_ipc_sender_.ExpectPageLoadTiming(timing);
56 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); 56 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
57 metrics_sender_->mock_timer()->Fire(); 57 metrics_sender_->mock_timer()->Fire();
58 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); 58 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
59 59
60 // At this point, we should have triggered the send of the PageLoadTiming IPC. 60 // At this point, we should have triggered the send of the PageLoadTiming IPC.
61 fake_ipc_sender_.VerifyExpectedTimings(); 61 fake_ipc_sender_.VerifyExpectedTimings();
62 62
63 // Attempt to send the same timing instance again. The send should be 63 // Attempt to send the same timing instance again. The send should be
64 // suppressed, since the timing instance hasn't changed since the last send. 64 // suppressed, since the timing instance hasn't changed since the last send.
65 metrics_sender_->Send(timing); 65 metrics_sender_->Send(timing);
66 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); 66 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
67 } 67 }
68 68
69 TEST_F(PageTimingMetricsSenderTest, CoalesceMultipleIPCs) { 69 TEST_F(PageTimingMetricsSenderTest, CoalesceMultipleIPCs) {
70 base::Time nav_start = base::Time::FromDoubleT(10); 70 base::Time nav_start = base::Time::FromDoubleT(10);
71 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2); 71 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2);
72 base::TimeDelta load_event = base::TimeDelta::FromMillisecondsD(4); 72 base::TimeDelta load_event = base::TimeDelta::FromMillisecondsD(4);
73 73
74 PageLoadTiming timing; 74 PageLoadTiming timing;
75 timing.navigation_start = nav_start; 75 timing.navigation_start = nav_start;
76 timing.first_layout = first_layout; 76 timing.document_timing.first_layout = first_layout;
77 77
78 metrics_sender_->Send(timing); 78 metrics_sender_->Send(timing);
79 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); 79 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
80 80
81 // Send an updated PageLoadTiming before the timer has fired. When the timer 81 // Send an updated PageLoadTiming before the timer has fired. When the timer
82 // fires, the updated PageLoadTiming should be sent. 82 // fires, the updated PageLoadTiming should be sent.
83 timing.load_event_start = load_event; 83 timing.document_timing.load_event_start = load_event;
84 metrics_sender_->Send(timing); 84 metrics_sender_->Send(timing);
85 85
86 // Firing the timer should trigger sending of the OnTimingUpdated IPC with 86 // Firing the timer should trigger sending of the OnTimingUpdated IPC with
87 // the most recently provided PageLoadTiming instance. 87 // the most recently provided PageLoadTiming instance.
88 fake_ipc_sender_.ExpectPageLoadTiming(timing); 88 fake_ipc_sender_.ExpectPageLoadTiming(timing);
89 metrics_sender_->mock_timer()->Fire(); 89 metrics_sender_->mock_timer()->Fire();
90 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); 90 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
91 } 91 }
92 92
93 TEST_F(PageTimingMetricsSenderTest, MultipleIPCs) { 93 TEST_F(PageTimingMetricsSenderTest, MultipleIPCs) {
94 base::Time nav_start = base::Time::FromDoubleT(10); 94 base::Time nav_start = base::Time::FromDoubleT(10);
95 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2); 95 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2);
96 base::TimeDelta load_event = base::TimeDelta::FromMillisecondsD(4); 96 base::TimeDelta load_event = base::TimeDelta::FromMillisecondsD(4);
97 97
98 PageLoadTiming timing; 98 PageLoadTiming timing;
99 timing.navigation_start = nav_start; 99 timing.navigation_start = nav_start;
100 timing.first_layout = first_layout; 100 timing.document_timing.first_layout = first_layout;
101 101
102 metrics_sender_->Send(timing); 102 metrics_sender_->Send(timing);
103 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); 103 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
104 fake_ipc_sender_.ExpectPageLoadTiming(timing); 104 fake_ipc_sender_.ExpectPageLoadTiming(timing);
105 metrics_sender_->mock_timer()->Fire(); 105 metrics_sender_->mock_timer()->Fire();
106 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); 106 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
107 fake_ipc_sender_.VerifyExpectedTimings(); 107 fake_ipc_sender_.VerifyExpectedTimings();
108 108
109 // Send an updated PageLoadTiming after the timer for the first send request 109 // Send an updated PageLoadTiming after the timer for the first send request
110 // has fired, and verify that a second IPC is sent. 110 // has fired, and verify that a second IPC is sent.
111 timing.load_event_start = load_event; 111 timing.document_timing.load_event_start = load_event;
112 metrics_sender_->Send(timing); 112 metrics_sender_->Send(timing);
113 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); 113 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
114 fake_ipc_sender_.ExpectPageLoadTiming(timing); 114 fake_ipc_sender_.ExpectPageLoadTiming(timing);
115 metrics_sender_->mock_timer()->Fire(); 115 metrics_sender_->mock_timer()->Fire();
116 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning()); 116 EXPECT_FALSE(metrics_sender_->mock_timer()->IsRunning());
117 } 117 }
118 118
119 TEST_F(PageTimingMetricsSenderTest, SendIPCOnDestructor) { 119 TEST_F(PageTimingMetricsSenderTest, SendIPCOnDestructor) {
120 PageLoadTiming timing; 120 PageLoadTiming timing;
121 timing.navigation_start = base::Time::FromDoubleT(10); 121 timing.navigation_start = base::Time::FromDoubleT(10);
122 timing.first_layout = base::TimeDelta::FromMilliseconds(10); 122 timing.document_timing.first_layout = base::TimeDelta::FromMilliseconds(10);
123 123
124 // This test wants to verify behavior in the PageTimingMetricsSender 124 // This test wants to verify behavior in the PageTimingMetricsSender
125 // destructor. The EXPECT_CALL will be satisfied when the |metrics_sender_| 125 // destructor. The EXPECT_CALL will be satisfied when the |metrics_sender_|
126 // is destroyed below. 126 // is destroyed below.
127 metrics_sender_->Send(timing); 127 metrics_sender_->Send(timing);
128 fake_ipc_sender_.ExpectPageLoadTiming(timing); 128 fake_ipc_sender_.ExpectPageLoadTiming(timing);
129 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning()); 129 ASSERT_TRUE(metrics_sender_->mock_timer()->IsRunning());
130 130
131 // Destroy |metrics_sender_|, in order to force its destructor to run. 131 // Destroy |metrics_sender_|, in order to force its destructor to run.
132 metrics_sender_.reset(); 132 metrics_sender_.reset();
133 } 133 }
134 134
135 } // namespace page_load_metrics 135 } // namespace page_load_metrics
OLDNEW
« no previous file with comments | « chrome/renderer/page_load_metrics/metrics_render_frame_observer_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698