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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/page_load_metrics/metrics_render_frame_observer_unittest.cc
diff --git a/chrome/renderer/page_load_metrics/metrics_render_frame_observer_unittest.cc b/chrome/renderer/page_load_metrics/metrics_render_frame_observer_unittest.cc
index b2e041f94b915e644bbe5ac495db7b5fd1f89541..6142b1d2ff2bf799517a5b5e853a19bf5039b458 100644
--- a/chrome/renderer/page_load_metrics/metrics_render_frame_observer_unittest.cc
+++ b/chrome/renderer/page_load_metrics/metrics_render_frame_observer_unittest.cc
@@ -41,26 +41,40 @@ class TestMetricsRenderFrameObserver : public MetricsRenderFrameObserver {
mock_timer_ = std::move(timer);
}
+ void set_is_main_frame(bool is_main_frame) { is_main_frame_ = is_main_frame; }
+
+ bool WasFakeTimingConsumed() const { return fake_timing_.IsEmpty(); }
+
void ExpectPageLoadTiming(const PageLoadTiming& timing) {
+ SetFakePageLoadTiming(timing);
fake_timing_ipc_sender_.ExpectPageLoadTiming(timing);
}
+ void SetFakePageLoadTiming(const PageLoadTiming& timing) {
+ EXPECT_TRUE(fake_timing_.IsEmpty());
+ fake_timing_ = timing;
+ }
+
PageLoadTiming GetTiming() const override {
- return fake_timing_ipc_sender_.expected_timings().empty()
- ? PageLoadTiming()
- : fake_timing_ipc_sender_.expected_timings().back();
+ PageLoadTiming tmp = fake_timing_;
+ fake_timing_ = PageLoadTiming();
+ return tmp;
}
void VerifyExpectedTimings() const {
+ EXPECT_TRUE(fake_timing_.IsEmpty());
fake_timing_ipc_sender_.VerifyExpectedTimings();
}
bool ShouldSendMetrics() const override { return true; }
bool HasNoRenderFrame() const override { return false; }
+ bool IsMainFrame() const override { return is_main_frame_; }
private:
FakePageTimingMetricsIPCSender fake_timing_ipc_sender_;
+ mutable PageLoadTiming fake_timing_;
mutable std::unique_ptr<base::Timer> mock_timer_;
+ bool is_main_frame_ = true;
};
typedef testing::Test MetricsRenderFrameObserverTest;
@@ -192,4 +206,24 @@ TEST_F(MetricsRenderFrameObserverTest, MultipleNavigations) {
mock_timer2->Fire();
}
+TEST_F(MetricsRenderFrameObserverTest, NoUpdatesFromChildFrames) {
+ base::Time nav_start = base::Time::FromDoubleT(10);
+
+ TestMetricsRenderFrameObserver observer;
+ base::MockTimer* mock_timer = new base::MockTimer(false, false);
+ observer.set_mock_timer(base::WrapUnique(mock_timer));
+ observer.set_is_main_frame(false);
+
+ PageLoadTiming timing;
+ timing.navigation_start = nav_start;
+ observer.SetFakePageLoadTiming(timing);
+ observer.DidCommitProvisionalLoad(true, false);
+ ASSERT_FALSE(observer.WasFakeTimingConsumed());
+ ASSERT_FALSE(mock_timer->IsRunning());
+
+ observer.DidChangePerformanceTiming();
+ ASSERT_FALSE(observer.WasFakeTimingConsumed());
+ ASSERT_FALSE(mock_timer->IsRunning());
+}
+
} // namespace page_load_metrics

Powered by Google App Engine
This is Rietveld 408576698