| Index: services/ui/ws/frame_generator_unittest.cc
|
| diff --git a/services/ui/ws/frame_generator_unittest.cc b/services/ui/ws/frame_generator_unittest.cc
|
| index b2d626e48a938f8ee4eade4545c1e6c256caa62f..459aa914e5030be319cb704b45925c2c667f26f7 100644
|
| --- a/services/ui/ws/frame_generator_unittest.cc
|
| +++ b/services/ui/ws/frame_generator_unittest.cc
|
| @@ -150,17 +150,28 @@ class FrameGeneratorTest : public testing::Test {
|
|
|
| constexpr float kRefreshRate = 0.f;
|
| constexpr bool kTickAutomatically = false;
|
| + constexpr bool is_window_visible = true;
|
| begin_frame_source_ = base::MakeUnique<cc::FakeExternalBeginFrameSource>(
|
| kRefreshRate, kTickAutomatically);
|
| compositor_frame_sink_->SetBeginFrameSource(begin_frame_source_.get());
|
| server_window_delegate_ = base::MakeUnique<TestServerWindowDelegate>();
|
| - root_window_ = base::MakeUnique<ServerWindow>(server_window_delegate_.get(),
|
| - WindowId());
|
| - root_window_->SetVisible(true);
|
| frame_generator_ = base::MakeUnique<FrameGenerator>(
|
| - root_window_.get(), std::move(compositor_frame_sink));
|
| + std::move(compositor_frame_sink), is_window_visible, gfx::Rect(1, 2));
|
| };
|
|
|
| + void InitWithSurfaceInfo() {
|
| + // FrameGenerator requires a valid SurfaceInfo before generating
|
| + // CompositorFrames.
|
| + const cc::SurfaceId kArbitrarySurfaceId(
|
| + cc::FrameSinkId(1, 1),
|
| + cc::LocalSurfaceId(1, base::UnguessableToken::Create()));
|
| + const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f,
|
| + gfx::Size(100, 100));
|
| + frame_generator()->OnSurfaceCreated(kArbitrarySurfaceInfo);
|
| + IssueBeginFrame();
|
| + EXPECT_EQ(1, NumberOfFramesReceived());
|
| + }
|
| +
|
| int NumberOfFramesReceived() {
|
| return compositor_frame_sink_->number_frames_received();
|
| }
|
| @@ -259,16 +270,7 @@ TEST_F(FrameGeneratorTest, SetDeviceScaleFactor) {
|
| }
|
|
|
| TEST_F(FrameGeneratorTest, SetHighContrastMode) {
|
| - // FrameGenerator requires a valid SurfaceInfo before generating
|
| - // CompositorFrames.
|
| - const cc::SurfaceId kArbitrarySurfaceId(
|
| - cc::FrameSinkId(1, 1),
|
| - cc::LocalSurfaceId(1, base::UnguessableToken::Create()));
|
| - const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f,
|
| - gfx::Size(100, 100));
|
| - frame_generator()->OnSurfaceCreated(kArbitrarySurfaceInfo);
|
| - IssueBeginFrame();
|
| - EXPECT_EQ(1, NumberOfFramesReceived());
|
| + InitWithSurfaceInfo();
|
|
|
| // Changing high contrast mode should trigger a BeginFrame.
|
| frame_generator()->SetHighContrastMode(true);
|
| @@ -282,6 +284,42 @@ TEST_F(FrameGeneratorTest, SetHighContrastMode) {
|
| EXPECT_EQ(expected_filters, render_pass_list.front()->filters);
|
| }
|
|
|
| +TEST_F(FrameGeneratorTest, VisibilityChanged) {
|
| + InitWithSurfaceInfo();
|
| +
|
| + frame_generator()->OnWindowVisibilityChanged(false);
|
| + IssueBeginFrame();
|
| + EXPECT_EQ(1, NumberOfFramesReceived());
|
| +
|
| + frame_generator()->OnWindowVisibilityChanged(true);
|
| + IssueBeginFrame();
|
| + EXPECT_EQ(2, NumberOfFramesReceived());
|
| +}
|
| +
|
| +TEST_F(FrameGeneratorTest, WindowBoundsChanged) {
|
| + InitWithSurfaceInfo();
|
| +
|
| + // Window bounds change triggers a BeginFrame.
|
| + constexpr int expected_render_pass_id = 1;
|
| + const gfx::Rect kArbitraryRect(3, 4);
|
| + frame_generator()->OnWindowBoundsChanged(kArbitraryRect);
|
| + IssueBeginFrame();
|
| + EXPECT_EQ(2, NumberOfFramesReceived());
|
| + cc::RenderPass* received_render_pass = LastRenderPassList().front().get();
|
| + EXPECT_EQ(expected_render_pass_id, received_render_pass->id);
|
| + EXPECT_EQ(kArbitraryRect, received_render_pass->output_rect);
|
| + EXPECT_EQ(kArbitraryRect, received_render_pass->damage_rect);
|
| + EXPECT_EQ(gfx::Transform(), received_render_pass->transform_to_root_target);
|
| +}
|
| +
|
| +TEST_F(FrameGeneratorTest, WindowDamaged) {
|
| + InitWithSurfaceInfo();
|
| +
|
| + frame_generator()->OnWindowDamaged();
|
| + IssueBeginFrame();
|
| + EXPECT_EQ(2, NumberOfFramesReceived());
|
| +}
|
| +
|
| } // namespace test
|
| } // namespace ws
|
| } // namespace ui
|
|
|