| 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
|
|
|