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

Side by Side Diff: components/page_load_metrics/renderer/metrics_render_frame_observer_unittest.cc

Issue 1921923002: Convert //components/[o-t]* from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 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
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "components/page_load_metrics/renderer/metrics_render_frame_observer.h" 5 #include "components/page_load_metrics/renderer/metrics_render_frame_observer.h"
6 6
7 #include <memory>
7 #include <utility> 8 #include <utility>
8 9
9 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/ptr_util.h"
10 #include "base/time/time.h" 11 #include "base/time/time.h"
11 #include "base/timer/mock_timer.h" 12 #include "base/timer/mock_timer.h"
12 #include "components/page_load_metrics/common/page_load_metrics_messages.h" 13 #include "components/page_load_metrics/common/page_load_metrics_messages.h"
13 #include "components/page_load_metrics/common/page_load_timing.h" 14 #include "components/page_load_metrics/common/page_load_timing.h"
14 #include "ipc/ipc_message_macros.h" 15 #include "ipc/ipc_message_macros.h"
15 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 18
18 using testing::NiceMock; 19 using testing::NiceMock;
19 using testing::Return; 20 using testing::Return;
(...skipping 18 matching lines...) Expand all
38 // Implementation of the MetricsRenderFrameObserver class we're testing, 39 // Implementation of the MetricsRenderFrameObserver class we're testing,
39 // with the GetTiming() and ShouldSendMetrics() methods stubbed out to make 40 // with the GetTiming() and ShouldSendMetrics() methods stubbed out to make
40 // the rest of the class more testable. 41 // the rest of the class more testable.
41 class MockMetricsRenderFrameObserver : public MetricsRenderFrameObserver { 42 class MockMetricsRenderFrameObserver : public MetricsRenderFrameObserver {
42 public: 43 public:
43 MockMetricsRenderFrameObserver() : MetricsRenderFrameObserver(nullptr) { 44 MockMetricsRenderFrameObserver() : MetricsRenderFrameObserver(nullptr) {
44 ON_CALL(*this, ShouldSendMetrics()).WillByDefault(Return(true)); 45 ON_CALL(*this, ShouldSendMetrics()).WillByDefault(Return(true));
45 ON_CALL(*this, HasNoRenderFrame()).WillByDefault(Return(false)); 46 ON_CALL(*this, HasNoRenderFrame()).WillByDefault(Return(false));
46 } 47 }
47 48
48 scoped_ptr<base::Timer> CreateTimer() const override { 49 std::unique_ptr<base::Timer> CreateTimer() const override {
49 if (!mock_timer_) 50 if (!mock_timer_)
50 ADD_FAILURE() << "CreateTimer() called, but no MockTimer available."; 51 ADD_FAILURE() << "CreateTimer() called, but no MockTimer available.";
51 return std::move(mock_timer_); 52 return std::move(mock_timer_);
52 } 53 }
53 54
54 // We intercept sent messages and dispatch them to a MockIPCInterceptor, which 55 // We intercept sent messages and dispatch them to a MockIPCInterceptor, which
55 // we use to verify that the expected IPC messages get sent. 56 // we use to verify that the expected IPC messages get sent.
56 virtual bool Send(IPC::Message* message) { 57 virtual bool Send(IPC::Message* message) {
57 interceptor_.OnMessage(*message); 58 interceptor_.OnMessage(*message);
58 delete message; 59 delete message;
59 return true; 60 return true;
60 } 61 }
61 62
62 void set_mock_timer(scoped_ptr<base::Timer> timer) { 63 void set_mock_timer(std::unique_ptr<base::Timer> timer) {
63 ASSERT_EQ(nullptr, mock_timer_); 64 ASSERT_EQ(nullptr, mock_timer_);
64 mock_timer_ = std::move(timer); 65 mock_timer_ = std::move(timer);
65 } 66 }
66 67
67 MOCK_CONST_METHOD0(GetTiming, PageLoadTiming()); 68 MOCK_CONST_METHOD0(GetTiming, PageLoadTiming());
68 MOCK_CONST_METHOD0(ShouldSendMetrics, bool()); 69 MOCK_CONST_METHOD0(ShouldSendMetrics, bool());
69 MOCK_CONST_METHOD0(HasNoRenderFrame, bool()); 70 MOCK_CONST_METHOD0(HasNoRenderFrame, bool());
70 MockIPCInterceptor* ipc_interceptor() { return &interceptor_; } 71 MockIPCInterceptor* ipc_interceptor() { return &interceptor_; }
71 72
72 private: 73 private:
73 StrictMock<MockIPCInterceptor> interceptor_; 74 StrictMock<MockIPCInterceptor> interceptor_;
74 mutable scoped_ptr<base::Timer> mock_timer_; 75 mutable std::unique_ptr<base::Timer> mock_timer_;
75 }; 76 };
76 77
77 typedef testing::Test MetricsRenderFrameObserverTest; 78 typedef testing::Test MetricsRenderFrameObserverTest;
78 79
79 TEST_F(MetricsRenderFrameObserverTest, NoMetrics) { 80 TEST_F(MetricsRenderFrameObserverTest, NoMetrics) {
80 NiceMock<MockMetricsRenderFrameObserver> observer; 81 NiceMock<MockMetricsRenderFrameObserver> observer;
81 base::MockTimer* mock_timer = new base::MockTimer(false, false); 82 base::MockTimer* mock_timer = new base::MockTimer(false, false);
82 observer.set_mock_timer(make_scoped_ptr(mock_timer)); 83 observer.set_mock_timer(base::WrapUnique(mock_timer));
83 observer.DidCommitProvisionalLoad(true, false); 84 observer.DidCommitProvisionalLoad(true, false);
84 85
85 EXPECT_CALL(observer, GetTiming()).WillRepeatedly(Return(PageLoadTiming())); 86 EXPECT_CALL(observer, GetTiming()).WillRepeatedly(Return(PageLoadTiming()));
86 observer.DidChangePerformanceTiming(); 87 observer.DidChangePerformanceTiming();
87 ASSERT_FALSE(mock_timer->IsRunning()); 88 ASSERT_FALSE(mock_timer->IsRunning());
88 } 89 }
89 90
90 TEST_F(MetricsRenderFrameObserverTest, SingleMetric) { 91 TEST_F(MetricsRenderFrameObserverTest, SingleMetric) {
91 base::Time nav_start = base::Time::FromDoubleT(10); 92 base::Time nav_start = base::Time::FromDoubleT(10);
92 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(10); 93 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(10);
93 94
94 NiceMock<MockMetricsRenderFrameObserver> observer; 95 NiceMock<MockMetricsRenderFrameObserver> observer;
95 base::MockTimer* mock_timer = new base::MockTimer(false, false); 96 base::MockTimer* mock_timer = new base::MockTimer(false, false);
96 observer.set_mock_timer(make_scoped_ptr(mock_timer)); 97 observer.set_mock_timer(base::WrapUnique(mock_timer));
97 observer.DidCommitProvisionalLoad(true, false); 98 observer.DidCommitProvisionalLoad(true, false);
98 99
99 PageLoadTiming timing; 100 PageLoadTiming timing;
100 timing.navigation_start = nav_start; 101 timing.navigation_start = nav_start;
101 timing.first_layout = first_layout; 102 timing.first_layout = first_layout;
102 EXPECT_CALL(observer, GetTiming()).WillRepeatedly(Return(timing)); 103 EXPECT_CALL(observer, GetTiming()).WillRepeatedly(Return(timing));
103 104
104 EXPECT_CALL(*observer.ipc_interceptor(), 105 EXPECT_CALL(*observer.ipc_interceptor(),
105 OnTimingUpdated(timing, PageLoadMetadata())); 106 OnTimingUpdated(timing, PageLoadMetadata()));
106 107
107 observer.DidChangePerformanceTiming(); 108 observer.DidChangePerformanceTiming();
108 mock_timer->Fire(); 109 mock_timer->Fire();
109 } 110 }
110 111
111 TEST_F(MetricsRenderFrameObserverTest, MultipleMetrics) { 112 TEST_F(MetricsRenderFrameObserverTest, MultipleMetrics) {
112 base::Time nav_start = base::Time::FromDoubleT(10); 113 base::Time nav_start = base::Time::FromDoubleT(10);
113 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2); 114 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2);
114 base::TimeDelta dom_event = base::TimeDelta::FromMillisecondsD(2); 115 base::TimeDelta dom_event = base::TimeDelta::FromMillisecondsD(2);
115 base::TimeDelta load_event = base::TimeDelta::FromMillisecondsD(2); 116 base::TimeDelta load_event = base::TimeDelta::FromMillisecondsD(2);
116 117
117 NiceMock<MockMetricsRenderFrameObserver> observer; 118 NiceMock<MockMetricsRenderFrameObserver> observer;
118 base::MockTimer* mock_timer = new base::MockTimer(false, false); 119 base::MockTimer* mock_timer = new base::MockTimer(false, false);
119 observer.set_mock_timer(make_scoped_ptr(mock_timer)); 120 observer.set_mock_timer(base::WrapUnique(mock_timer));
120 observer.DidCommitProvisionalLoad(true, false); 121 observer.DidCommitProvisionalLoad(true, false);
121 122
122 PageLoadTiming timing; 123 PageLoadTiming timing;
123 timing.navigation_start = nav_start; 124 timing.navigation_start = nav_start;
124 timing.first_layout = first_layout; 125 timing.first_layout = first_layout;
125 timing.dom_content_loaded_event_start = dom_event; 126 timing.dom_content_loaded_event_start = dom_event;
126 EXPECT_CALL(observer, GetTiming()).WillRepeatedly(Return(timing)); 127 EXPECT_CALL(observer, GetTiming()).WillRepeatedly(Return(timing));
127 128
128 EXPECT_CALL(*observer.ipc_interceptor(), 129 EXPECT_CALL(*observer.ipc_interceptor(),
129 OnTimingUpdated(timing, PageLoadMetadata())); 130 OnTimingUpdated(timing, PageLoadMetadata()));
(...skipping 26 matching lines...) Expand all
156 } 157 }
157 158
158 TEST_F(MetricsRenderFrameObserverTest, MultipleNavigations) { 159 TEST_F(MetricsRenderFrameObserverTest, MultipleNavigations) {
159 base::Time nav_start = base::Time::FromDoubleT(10); 160 base::Time nav_start = base::Time::FromDoubleT(10);
160 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2); 161 base::TimeDelta first_layout = base::TimeDelta::FromMillisecondsD(2);
161 base::TimeDelta dom_event = base::TimeDelta::FromMillisecondsD(2); 162 base::TimeDelta dom_event = base::TimeDelta::FromMillisecondsD(2);
162 base::TimeDelta load_event = base::TimeDelta::FromMillisecondsD(2); 163 base::TimeDelta load_event = base::TimeDelta::FromMillisecondsD(2);
163 164
164 NiceMock<MockMetricsRenderFrameObserver> observer; 165 NiceMock<MockMetricsRenderFrameObserver> observer;
165 base::MockTimer* mock_timer = new base::MockTimer(false, false); 166 base::MockTimer* mock_timer = new base::MockTimer(false, false);
166 observer.set_mock_timer(make_scoped_ptr(mock_timer)); 167 observer.set_mock_timer(base::WrapUnique(mock_timer));
167 observer.DidCommitProvisionalLoad(true, false); 168 observer.DidCommitProvisionalLoad(true, false);
168 169
169 PageLoadTiming timing; 170 PageLoadTiming timing;
170 timing.navigation_start = nav_start; 171 timing.navigation_start = nav_start;
171 timing.first_layout = first_layout; 172 timing.first_layout = first_layout;
172 timing.dom_content_loaded_event_start = dom_event; 173 timing.dom_content_loaded_event_start = dom_event;
173 timing.load_event_start = load_event; 174 timing.load_event_start = load_event;
174 EXPECT_CALL(observer, GetTiming()).WillRepeatedly(Return(timing)); 175 EXPECT_CALL(observer, GetTiming()).WillRepeatedly(Return(timing));
175 EXPECT_CALL(*observer.ipc_interceptor(), 176 EXPECT_CALL(*observer.ipc_interceptor(),
176 OnTimingUpdated(timing, PageLoadMetadata())); 177 OnTimingUpdated(timing, PageLoadMetadata()));
177 observer.DidChangePerformanceTiming(); 178 observer.DidChangePerformanceTiming();
178 mock_timer->Fire(); 179 mock_timer->Fire();
179 180
180 // At this point, we should have triggered the generation of two metrics. 181 // At this point, we should have triggered the generation of two metrics.
181 // Verify and reset the observer's expectations before moving on to the next 182 // Verify and reset the observer's expectations before moving on to the next
182 // part of the test. 183 // part of the test.
183 testing::Mock::VerifyAndClearExpectations(observer.ipc_interceptor()); 184 testing::Mock::VerifyAndClearExpectations(observer.ipc_interceptor());
184 185
185 base::Time nav_start_2 = base::Time::FromDoubleT(100); 186 base::Time nav_start_2 = base::Time::FromDoubleT(100);
186 base::TimeDelta first_layout_2 = base::TimeDelta::FromMillisecondsD(20); 187 base::TimeDelta first_layout_2 = base::TimeDelta::FromMillisecondsD(20);
187 base::TimeDelta dom_event_2 = base::TimeDelta::FromMillisecondsD(20); 188 base::TimeDelta dom_event_2 = base::TimeDelta::FromMillisecondsD(20);
188 base::TimeDelta load_event_2 = base::TimeDelta::FromMillisecondsD(20); 189 base::TimeDelta load_event_2 = base::TimeDelta::FromMillisecondsD(20);
189 PageLoadTiming timing_2; 190 PageLoadTiming timing_2;
190 timing_2.navigation_start = nav_start_2; 191 timing_2.navigation_start = nav_start_2;
191 timing_2.first_layout = first_layout_2; 192 timing_2.first_layout = first_layout_2;
192 timing_2.dom_content_loaded_event_start = dom_event_2; 193 timing_2.dom_content_loaded_event_start = dom_event_2;
193 timing_2.load_event_start = load_event_2; 194 timing_2.load_event_start = load_event_2;
194 195
195 base::MockTimer* mock_timer2 = new base::MockTimer(false, false); 196 base::MockTimer* mock_timer2 = new base::MockTimer(false, false);
196 observer.set_mock_timer(make_scoped_ptr(mock_timer2)); 197 observer.set_mock_timer(base::WrapUnique(mock_timer2));
197 observer.DidCommitProvisionalLoad(true, false); 198 observer.DidCommitProvisionalLoad(true, false);
198 EXPECT_CALL(*observer.ipc_interceptor(), 199 EXPECT_CALL(*observer.ipc_interceptor(),
199 OnTimingUpdated(timing, PageLoadMetadata())); 200 OnTimingUpdated(timing, PageLoadMetadata()));
200 observer.DidChangePerformanceTiming(); 201 observer.DidChangePerformanceTiming();
201 mock_timer2->Fire(); 202 mock_timer2->Fire();
202 } 203 }
203 204
204 } // namespace page_load_metrics 205 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698