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

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

Issue 2859393002: Report page load timing information for child frames. (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"
(...skipping 23 matching lines...) Expand all
34 // IPC messages get sent. 34 // IPC messages get sent.
35 bool Send(IPC::Message* message) override { 35 bool Send(IPC::Message* message) override {
36 return fake_timing_ipc_sender_.Send(message); 36 return fake_timing_ipc_sender_.Send(message);
37 } 37 }
38 38
39 void set_mock_timer(std::unique_ptr<base::Timer> timer) { 39 void set_mock_timer(std::unique_ptr<base::Timer> timer) {
40 ASSERT_EQ(nullptr, mock_timer_); 40 ASSERT_EQ(nullptr, mock_timer_);
41 mock_timer_ = std::move(timer); 41 mock_timer_ = std::move(timer);
42 } 42 }
43 43
44 void set_is_main_frame(bool is_main_frame) { is_main_frame_ = is_main_frame; }
45
46 bool WasFakeTimingConsumed() const { return fake_timing_.IsEmpty(); } 44 bool WasFakeTimingConsumed() const { return fake_timing_.IsEmpty(); }
47 45
48 void ExpectPageLoadTiming(const PageLoadTiming& timing) { 46 void ExpectPageLoadTiming(const PageLoadTiming& timing) {
49 SetFakePageLoadTiming(timing); 47 SetFakePageLoadTiming(timing);
50 fake_timing_ipc_sender_.ExpectPageLoadTiming(timing); 48 fake_timing_ipc_sender_.ExpectPageLoadTiming(timing);
51 } 49 }
52 50
53 void SetFakePageLoadTiming(const PageLoadTiming& timing) { 51 void SetFakePageLoadTiming(const PageLoadTiming& timing) {
54 EXPECT_TRUE(fake_timing_.IsEmpty()); 52 EXPECT_TRUE(fake_timing_.IsEmpty());
55 fake_timing_ = timing; 53 fake_timing_ = timing;
56 } 54 }
57 55
58 PageLoadTiming GetTiming() const override { 56 PageLoadTiming GetTiming() const override {
59 PageLoadTiming tmp = fake_timing_; 57 PageLoadTiming tmp = fake_timing_;
60 fake_timing_ = PageLoadTiming(); 58 fake_timing_ = PageLoadTiming();
61 return tmp; 59 return tmp;
62 } 60 }
63 61
64 void VerifyExpectedTimings() const { 62 void VerifyExpectedTimings() const {
65 EXPECT_TRUE(fake_timing_.IsEmpty()); 63 EXPECT_TRUE(fake_timing_.IsEmpty());
66 fake_timing_ipc_sender_.VerifyExpectedTimings(); 64 fake_timing_ipc_sender_.VerifyExpectedTimings();
67 } 65 }
68 66
69 bool ShouldSendMetrics() const override { return true; } 67 bool ShouldSendMetrics() const override { return true; }
70 bool HasNoRenderFrame() const override { return false; } 68 bool HasNoRenderFrame() const override { return false; }
71 bool IsMainFrame() const override { return is_main_frame_; }
72 69
73 private: 70 private:
74 FakePageTimingMetricsIPCSender fake_timing_ipc_sender_; 71 FakePageTimingMetricsIPCSender fake_timing_ipc_sender_;
75 mutable PageLoadTiming fake_timing_; 72 mutable PageLoadTiming fake_timing_;
76 mutable std::unique_ptr<base::Timer> mock_timer_; 73 mutable std::unique_ptr<base::Timer> mock_timer_;
77 bool is_main_frame_ = true;
78 }; 74 };
79 75
80 typedef testing::Test MetricsRenderFrameObserverTest; 76 typedef testing::Test MetricsRenderFrameObserverTest;
81 77
82 TEST_F(MetricsRenderFrameObserverTest, NoMetrics) { 78 TEST_F(MetricsRenderFrameObserverTest, NoMetrics) {
83 TestMetricsRenderFrameObserver observer; 79 TestMetricsRenderFrameObserver observer;
84 base::MockTimer* mock_timer = new base::MockTimer(false, false); 80 base::MockTimer* mock_timer = new base::MockTimer(false, false);
85 observer.set_mock_timer(base::WrapUnique(mock_timer)); 81 observer.set_mock_timer(base::WrapUnique(mock_timer));
86 82
87 observer.DidChangePerformanceTiming(); 83 observer.DidChangePerformanceTiming();
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 195
200 timing_2.document_timing.first_layout = first_layout_2; 196 timing_2.document_timing.first_layout = first_layout_2;
201 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;
202 timing_2.document_timing.load_event_start = load_event_2; 198 timing_2.document_timing.load_event_start = load_event_2;
203 observer.ExpectPageLoadTiming(timing_2); 199 observer.ExpectPageLoadTiming(timing_2);
204 200
205 observer.DidChangePerformanceTiming(); 201 observer.DidChangePerformanceTiming();
206 mock_timer2->Fire(); 202 mock_timer2->Fire();
207 } 203 }
208 204
209 TEST_F(MetricsRenderFrameObserverTest, NoUpdatesFromChildFrames) {
210 base::Time nav_start = base::Time::FromDoubleT(10);
211
212 TestMetricsRenderFrameObserver observer;
213 base::MockTimer* mock_timer = new base::MockTimer(false, false);
214 observer.set_mock_timer(base::WrapUnique(mock_timer));
215 observer.set_is_main_frame(false);
216
217 PageLoadTiming timing;
218 timing.navigation_start = nav_start;
219 observer.SetFakePageLoadTiming(timing);
220 observer.DidCommitProvisionalLoad(true, false);
221 ASSERT_FALSE(observer.WasFakeTimingConsumed());
222 ASSERT_FALSE(mock_timer->IsRunning());
223
224 observer.DidChangePerformanceTiming();
225 ASSERT_FALSE(observer.WasFakeTimingConsumed());
226 ASSERT_FALSE(mock_timer->IsRunning());
227 }
228
229 } // namespace page_load_metrics 205 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698