summaryrefslogtreecommitdiff
path: root/chromium/components/viz/service/display/frame_rate_decider_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/viz/service/display/frame_rate_decider_unittest.cc')
-rw-r--r--chromium/components/viz/service/display/frame_rate_decider_unittest.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/chromium/components/viz/service/display/frame_rate_decider_unittest.cc b/chromium/components/viz/service/display/frame_rate_decider_unittest.cc
index 8db6a25cc14..8a68c6b0fa1 100644
--- a/chromium/components/viz/service/display/frame_rate_decider_unittest.cc
+++ b/chromium/components/viz/service/display/frame_rate_decider_unittest.cc
@@ -286,6 +286,23 @@ TEST_F(FrameRateDeciderTest, MinFrameSinkIntervalIsPicked) {
frame_rate_decider_->OnSurfaceWillBeDrawn(surface2);
}
EXPECT_EQ(display_interval_, min_supported_interval * 2);
+
+ FrameSinkId frame_sink_id3(1u, 3u);
+ preferred_intervals_[frame_sink_id3] = min_supported_interval * 1.8;
+ auto* surface3 = CreateAndDrawSurface(frame_sink_id3);
+ UpdateFrame(surface1);
+ UpdateFrame(surface2);
+ UpdateFrame(surface3);
+ {
+ FrameRateDecider::ScopedAggregate scope(frame_rate_decider_.get());
+ frame_rate_decider_->OnSurfaceWillBeDrawn(surface1);
+ frame_rate_decider_->OnSurfaceWillBeDrawn(surface2);
+ frame_rate_decider_->OnSurfaceWillBeDrawn(surface3);
+ }
+ // Even though surface3 has a frame interval that is closer to
+ // min_supported_interval * 2, we need to pick a smaller interval
+ // so that frames from that surface are not dropped.
+ EXPECT_EQ(display_interval_, min_supported_interval);
}
TEST_F(FrameRateDeciderTest, TogglesAfterMinNumOfFrames) {