diff --git a/cc/metrics/compositor_frame_reporting_controller.cc b/cc/metrics/compositor_frame_reporting_controller.cc index f77fa26e999a4f..a86db7d39d5af5 100644 --- a/cc/metrics/compositor_frame_reporting_controller.cc +++ b/cc/metrics/compositor_frame_reporting_controller.cc @@ -49,7 +49,7 @@ CompositorFrameReportingController::SubmittedCompositorFrame:: SubmittedCompositorFrame(SubmittedCompositorFrame&& other) = default; base::TimeTicks CompositorFrameReportingController::Now() const { - return base::TimeTicks::Now(); + return tick_clock_->NowTicks(); } bool CompositorFrameReportingController::HasReporterAt( diff --git a/cc/metrics/compositor_frame_reporting_controller.h b/cc/metrics/compositor_frame_reporting_controller.h index 09fcda5fafb88c..9765dba4040668 100644 --- a/cc/metrics/compositor_frame_reporting_controller.h +++ b/cc/metrics/compositor_frame_reporting_controller.h @@ -8,6 +8,7 @@ #include #include +#include "base/time/default_tick_clock.h" #include "base/time/time.h" #include "cc/cc_export.h" #include "cc/metrics/compositor_frame_reporter.h" @@ -77,6 +78,10 @@ class CC_EXPORT CompositorFrameReportingController { virtual void AddActiveTracker(FrameSequenceTrackerType type); virtual void RemoveActiveTracker(FrameSequenceTrackerType type); + void set_tick_clock(const base::TickClock* tick_clock) { + tick_clock_ = tick_clock; + } + std::unique_ptr* reporters() { return reporters_; } protected: @@ -120,6 +125,8 @@ class CC_EXPORT CompositorFrameReportingController { // DO NOT reorder this line and the one above. The latency_ukm_reporter_ must // outlive the objects in |submitted_compositor_frames_|. base::circular_deque submitted_compositor_frames_; + + const base::TickClock* tick_clock_ = base::DefaultTickClock::GetInstance(); }; } // namespace cc diff --git a/cc/metrics/compositor_frame_reporting_controller_unittest.cc b/cc/metrics/compositor_frame_reporting_controller_unittest.cc index 017859579d61ee..ebdb9e1ed0f92e 100644 --- a/cc/metrics/compositor_frame_reporting_controller_unittest.cc +++ b/cc/metrics/compositor_frame_reporting_controller_unittest.cc @@ -10,6 +10,7 @@ #include "base/macros.h" #include "base/strings/strcat.h" #include "base/test/metrics/histogram_tester.h" +#include "base/test/simple_test_tick_clock.h" #include "cc/input/scroll_input_type.h" #include "cc/metrics/event_metrics.h" #include "components/viz/common/frame_timing_details.h" @@ -56,6 +57,8 @@ class TestCompositorFrameReportingController class CompositorFrameReportingControllerTest : public testing::Test { public: CompositorFrameReportingControllerTest() : current_id_(1, 1) { + test_tick_clock_.SetNowTicks(base::TimeTicks::Now()); + reporting_controller_.set_tick_clock(&test_tick_clock_); args_ = SimulateBeginFrameArgs(current_id_); } @@ -137,20 +140,21 @@ class CompositorFrameReportingControllerTest : public testing::Test { } base::TimeTicks AdvanceNowByMs(int64_t advance_ms) { - now_ += base::TimeDelta::FromMicroseconds(advance_ms); - return now_; + test_tick_clock_.Advance(base::TimeDelta::FromMicroseconds(advance_ms)); + return test_tick_clock_.NowTicks(); } protected: + // This should be defined before |reporting_controller_| so it is created + // before and destroyed after that. + base::SimpleTestTickClock test_tick_clock_; + TestCompositorFrameReportingController reporting_controller_; viz::BeginFrameArgs args_; viz::BeginFrameId current_id_; viz::BeginFrameId last_activated_id_; base::TimeTicks begin_main_start_; viz::FrameTokenGenerator next_token_; - - private: - base::TimeTicks now_ = base::TimeTicks::Now(); }; TEST_F(CompositorFrameReportingControllerTest, ActiveReporterCounts) {