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

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

Issue 2823523003: [Page Load Metrics] PageLoadMetrics Mojofication. (Closed)
Patch Set: rebase Created 3 years, 7 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 "chrome/renderer/page_load_metrics/metrics_render_frame_observer.h" 5 #include "chrome/renderer/page_load_metrics/metrics_render_frame_observer.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/time/time.h" 11 #include "base/time/time.h"
12 #include "base/timer/mock_timer.h" 12 #include "base/timer/mock_timer.h"
13 #include "chrome/common/page_load_metrics/page_load_timing.h" 13 #include "chrome/common/page_load_metrics/page_load_timing.h"
14 #include "chrome/renderer/page_load_metrics/fake_page_timing_metrics_ipc_sender. h" 14 #include "chrome/renderer/page_load_metrics/fake_page_timing_sender.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 namespace page_load_metrics { 17 namespace page_load_metrics {
18 18
19 // Implementation of the MetricsRenderFrameObserver class we're testing, 19 // Implementation of the MetricsRenderFrameObserver class we're testing,
20 // with the GetTiming() and ShouldSendMetrics() methods stubbed out to make 20 // with the GetTiming() and ShouldSendMetrics() methods stubbed out to make
21 // the rest of the class more testable. 21 // the rest of the class more testable.
22 class TestMetricsRenderFrameObserver : public MetricsRenderFrameObserver { 22 class TestMetricsRenderFrameObserver : public MetricsRenderFrameObserver {
23 public: 23 public:
24 TestMetricsRenderFrameObserver() : MetricsRenderFrameObserver(nullptr) {} 24 TestMetricsRenderFrameObserver() : MetricsRenderFrameObserver(nullptr) {}
25 25
26 std::unique_ptr<base::Timer> CreateTimer() const override { 26 std::unique_ptr<base::Timer> CreateTimer() const override {
27 if (!mock_timer_) 27 if (!mock_timer_)
28 ADD_FAILURE() << "CreateTimer() called, but no MockTimer available."; 28 ADD_FAILURE() << "CreateTimer() called, but no MockTimer available.";
29 return std::move(mock_timer_); 29 return std::move(mock_timer_);
30 } 30 }
31 31
32 // We intercept sent messages and dispatch them to our 32 std::unique_ptr<PageTimingSender> CreatePageTimingSender() override {
33 // FakePageTimingMetricsIPCSender, which we use to verify that the expected 33 return base::WrapUnique<PageTimingSender>(
34 // IPC messages get sent. 34 new FakePageTimingSender(&validator_));
35 bool Send(IPC::Message* message) override {
36 return fake_timing_ipc_sender_.Send(message);
37 } 35 }
38 36
39 void set_mock_timer(std::unique_ptr<base::Timer> timer) { 37 void set_mock_timer(std::unique_ptr<base::Timer> timer) {
40 ASSERT_EQ(nullptr, mock_timer_); 38 ASSERT_EQ(nullptr, mock_timer_);
41 mock_timer_ = std::move(timer); 39 mock_timer_ = std::move(timer);
42 } 40 }
43 41
44 void ExpectPageLoadTiming(const mojom::PageLoadTiming& timing) { 42 void ExpectPageLoadTiming(const mojom::PageLoadTiming& timing) {
45 SetFakePageLoadTiming(timing); 43 SetFakePageLoadTiming(timing);
46 fake_timing_ipc_sender_.ExpectPageLoadTiming(timing); 44 validator_.ExpectPageLoadTiming(timing);
47 } 45 }
48 46
49 void SetFakePageLoadTiming(const mojom::PageLoadTiming& timing) { 47 void SetFakePageLoadTiming(const mojom::PageLoadTiming& timing) {
50 EXPECT_EQ(nullptr, fake_timing_.get()); 48 EXPECT_EQ(nullptr, fake_timing_.get());
51 fake_timing_ = timing.Clone(); 49 fake_timing_ = timing.Clone();
52 } 50 }
53 51
54 mojom::PageLoadTimingPtr GetTiming() const override { 52 mojom::PageLoadTimingPtr GetTiming() const override {
55 EXPECT_NE(nullptr, fake_timing_.get()); 53 EXPECT_NE(nullptr, fake_timing_.get());
56 return std::move(fake_timing_); 54 return std::move(fake_timing_);
57 } 55 }
58 56
59 void VerifyExpectedTimings() const { 57 void VerifyExpectedTimings() const {
60 EXPECT_EQ(nullptr, fake_timing_.get()); 58 EXPECT_EQ(nullptr, fake_timing_.get());
61 fake_timing_ipc_sender_.VerifyExpectedTimings(); 59 validator_.VerifyExpectedTimings();
62 } 60 }
63 61
64 bool ShouldSendMetrics() const override { return true; } 62 bool ShouldSendMetrics() const override { return true; }
65 bool HasNoRenderFrame() const override { return false; } 63 bool HasNoRenderFrame() const override { return false; }
66 64
67 private: 65 private:
68 FakePageTimingMetricsIPCSender fake_timing_ipc_sender_; 66 FakePageTimingSender::PageTimingValidator validator_;
69 mutable mojom::PageLoadTimingPtr fake_timing_; 67 mutable mojom::PageLoadTimingPtr fake_timing_;
70 mutable std::unique_ptr<base::Timer> mock_timer_; 68 mutable std::unique_ptr<base::Timer> mock_timer_;
71 }; 69 };
72 70
73 typedef testing::Test MetricsRenderFrameObserverTest; 71 typedef testing::Test MetricsRenderFrameObserverTest;
74 72
75 TEST_F(MetricsRenderFrameObserverTest, NoMetrics) { 73 TEST_F(MetricsRenderFrameObserverTest, NoMetrics) {
76 TestMetricsRenderFrameObserver observer; 74 TestMetricsRenderFrameObserver observer;
77 base::MockTimer* mock_timer = new base::MockTimer(false, false); 75 base::MockTimer* mock_timer = new base::MockTimer(false, false);
78 observer.set_mock_timer(base::WrapUnique(mock_timer)); 76 observer.set_mock_timer(base::WrapUnique(mock_timer));
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 timing_2.document_timing->first_layout = first_layout_2; 196 timing_2.document_timing->first_layout = first_layout_2;
199 timing_2.document_timing->dom_content_loaded_event_start = dom_event_2; 197 timing_2.document_timing->dom_content_loaded_event_start = dom_event_2;
200 timing_2.document_timing->load_event_start = load_event_2; 198 timing_2.document_timing->load_event_start = load_event_2;
201 observer.ExpectPageLoadTiming(timing_2); 199 observer.ExpectPageLoadTiming(timing_2);
202 200
203 observer.DidChangePerformanceTiming(); 201 observer.DidChangePerformanceTiming();
204 mock_timer2->Fire(); 202 mock_timer2->Fire();
205 } 203 }
206 204
207 } // namespace page_load_metrics 205 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698