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

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

Issue 2737563007: Add support for tracking loading behavior of child frames. (Closed)
Patch Set: stop observing if started in background Created 3 years, 9 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(); }
47
44 void ExpectPageLoadTiming(const PageLoadTiming& timing) { 48 void ExpectPageLoadTiming(const PageLoadTiming& timing) {
49 SetFakePageLoadTiming(timing);
45 fake_timing_ipc_sender_.ExpectPageLoadTiming(timing); 50 fake_timing_ipc_sender_.ExpectPageLoadTiming(timing);
46 } 51 }
47 52
53 void SetFakePageLoadTiming(const PageLoadTiming& timing) {
54 EXPECT_TRUE(fake_timing_.IsEmpty());
55 fake_timing_ = timing;
56 }
57
48 PageLoadTiming GetTiming() const override { 58 PageLoadTiming GetTiming() const override {
49 return fake_timing_ipc_sender_.expected_timings().empty() 59 PageLoadTiming tmp = fake_timing_;
50 ? PageLoadTiming() 60 fake_timing_ = PageLoadTiming();
51 : fake_timing_ipc_sender_.expected_timings().back(); 61 return tmp;
52 } 62 }
53 63
54 void VerifyExpectedTimings() const { 64 void VerifyExpectedTimings() const {
65 EXPECT_TRUE(fake_timing_.IsEmpty());
55 fake_timing_ipc_sender_.VerifyExpectedTimings(); 66 fake_timing_ipc_sender_.VerifyExpectedTimings();
56 } 67 }
57 68
58 bool ShouldSendMetrics() const override { return true; } 69 bool ShouldSendMetrics() const override { return true; }
59 bool HasNoRenderFrame() const override { return false; } 70 bool HasNoRenderFrame() const override { return false; }
71 bool IsMainFrame() const override { return is_main_frame_; }
60 72
61 private: 73 private:
62 FakePageTimingMetricsIPCSender fake_timing_ipc_sender_; 74 FakePageTimingMetricsIPCSender fake_timing_ipc_sender_;
75 mutable PageLoadTiming fake_timing_;
63 mutable std::unique_ptr<base::Timer> mock_timer_; 76 mutable std::unique_ptr<base::Timer> mock_timer_;
77 bool is_main_frame_ = true;
64 }; 78 };
65 79
66 typedef testing::Test MetricsRenderFrameObserverTest; 80 typedef testing::Test MetricsRenderFrameObserverTest;
67 81
68 TEST_F(MetricsRenderFrameObserverTest, NoMetrics) { 82 TEST_F(MetricsRenderFrameObserverTest, NoMetrics) {
69 TestMetricsRenderFrameObserver observer; 83 TestMetricsRenderFrameObserver observer;
70 base::MockTimer* mock_timer = new base::MockTimer(false, false); 84 base::MockTimer* mock_timer = new base::MockTimer(false, false);
71 observer.set_mock_timer(base::WrapUnique(mock_timer)); 85 observer.set_mock_timer(base::WrapUnique(mock_timer));
72 86
73 observer.DidChangePerformanceTiming(); 87 observer.DidChangePerformanceTiming();
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 199
186 timing_2.first_layout = first_layout_2; 200 timing_2.first_layout = first_layout_2;
187 timing_2.dom_content_loaded_event_start = dom_event_2; 201 timing_2.dom_content_loaded_event_start = dom_event_2;
188 timing_2.load_event_start = load_event_2; 202 timing_2.load_event_start = load_event_2;
189 observer.ExpectPageLoadTiming(timing_2); 203 observer.ExpectPageLoadTiming(timing_2);
190 204
191 observer.DidChangePerformanceTiming(); 205 observer.DidChangePerformanceTiming();
192 mock_timer2->Fire(); 206 mock_timer2->Fire();
193 } 207 }
194 208
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
195 } // namespace page_load_metrics 229 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698