| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/test/null_task_runner.h" | 5 #include "base/test/null_task_runner.h" |
| 6 #include "cc/output/compositor_frame.h" | 6 #include "cc/output/compositor_frame.h" |
| 7 #include "cc/output/copy_output_result.h" | 7 #include "cc/output/copy_output_result.h" |
| 8 #include "cc/output/delegated_frame_data.h" | 8 #include "cc/output/delegated_frame_data.h" |
| 9 #include "cc/quads/render_pass.h" | 9 #include "cc/quads/render_pass.h" |
| 10 #include "cc/resources/shared_bitmap_manager.h" | 10 #include "cc/resources/shared_bitmap_manager.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 namespace cc { | 26 namespace cc { |
| 27 namespace { | 27 namespace { |
| 28 | 28 |
| 29 class EmptySurfaceFactoryClient : public SurfaceFactoryClient { | 29 class EmptySurfaceFactoryClient : public SurfaceFactoryClient { |
| 30 public: | 30 public: |
| 31 void ReturnResources(const ReturnedResourceArray& resources) override {} | 31 void ReturnResources(const ReturnedResourceArray& resources) override {} |
| 32 }; | 32 }; |
| 33 | 33 |
| 34 class DisplayTest : public testing::Test { | 34 class DisplayTest : public testing::Test { |
| 35 public: | 35 public: |
| 36 DisplayTest() : factory_(&manager_, &empty_client_) {} | 36 DisplayTest() |
| 37 : factory_(&manager_, &empty_client_), |
| 38 task_runner_(new base::NullTaskRunner) {} |
| 37 | 39 |
| 38 protected: | 40 protected: |
| 39 void SetUpContext(scoped_ptr<TestWebGraphicsContext3D> context) { | 41 void SetUpContext(scoped_ptr<TestWebGraphicsContext3D> context) { |
| 40 if (context) { | 42 if (context) { |
| 41 output_surface_ = FakeOutputSurface::Create3d( | 43 output_surface_ = FakeOutputSurface::Create3d( |
| 42 TestContextProvider::Create(context.Pass())); | 44 TestContextProvider::Create(context.Pass())); |
| 43 } else { | 45 } else { |
| 44 output_surface_ = FakeOutputSurface::CreateSoftware( | 46 output_surface_ = FakeOutputSurface::CreateSoftware( |
| 45 make_scoped_ptr(new SoftwareOutputDevice)); | 47 make_scoped_ptr(new SoftwareOutputDevice)); |
| 46 } | 48 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 58 factory_.SubmitFrame(surface_id, frame.Pass(), | 60 factory_.SubmitFrame(surface_id, frame.Pass(), |
| 59 SurfaceFactory::DrawCallback()); | 61 SurfaceFactory::DrawCallback()); |
| 60 } | 62 } |
| 61 | 63 |
| 62 SurfaceManager manager_; | 64 SurfaceManager manager_; |
| 63 EmptySurfaceFactoryClient empty_client_; | 65 EmptySurfaceFactoryClient empty_client_; |
| 64 SurfaceFactory factory_; | 66 SurfaceFactory factory_; |
| 65 scoped_ptr<FakeOutputSurface> output_surface_; | 67 scoped_ptr<FakeOutputSurface> output_surface_; |
| 66 FakeOutputSurface* output_surface_ptr_; | 68 FakeOutputSurface* output_surface_ptr_; |
| 67 FakeBeginFrameSource fake_begin_frame_source_; | 69 FakeBeginFrameSource fake_begin_frame_source_; |
| 70 scoped_refptr<base::NullTaskRunner> task_runner_; |
| 68 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; | 71 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
| 69 }; | 72 }; |
| 70 | 73 |
| 71 class TestDisplayClient : public DisplayClient { | 74 class TestDisplayClient : public DisplayClient { |
| 72 public: | 75 public: |
| 73 TestDisplayClient() {} | 76 TestDisplayClient() {} |
| 74 ~TestDisplayClient() override {} | 77 ~TestDisplayClient() override {} |
| 75 | 78 |
| 76 void CommitVSyncParameters(base::TimeTicks timebase, | 79 void CommitVSyncParameters(base::TimeTicks timebase, |
| 77 base::TimeDelta interval) override {} | 80 base::TimeDelta interval) override {} |
| 78 void OutputSurfaceLost() override {} | 81 void OutputSurfaceLost() override {} |
| 79 void SetMemoryPolicy(const ManagedMemoryPolicy& policy) override {} | 82 void SetMemoryPolicy(const ManagedMemoryPolicy& policy) override {} |
| 80 }; | 83 }; |
| 81 | 84 |
| 82 class TestDisplayScheduler : public DisplayScheduler { | 85 class TestDisplayScheduler : public DisplayScheduler { |
| 83 public: | 86 public: |
| 84 TestDisplayScheduler(DisplaySchedulerClient* client, | 87 TestDisplayScheduler(DisplaySchedulerClient* client, |
| 85 BeginFrameSource* begin_frame_source) | 88 BeginFrameSource* begin_frame_source, |
| 86 : DisplayScheduler(client, | 89 base::NullTaskRunner* task_runner) |
| 87 begin_frame_source, | 90 : DisplayScheduler(client, begin_frame_source, task_runner, 1), |
| 88 make_scoped_refptr(new base::NullTaskRunner), | |
| 89 1), | |
| 90 damaged(false), | 91 damaged(false), |
| 91 entire_display_damaged(false), | 92 entire_display_damaged(false), |
| 92 swapped(false) {} | 93 swapped(false) {} |
| 93 | 94 |
| 94 ~TestDisplayScheduler() override {} | 95 ~TestDisplayScheduler() override {} |
| 95 | 96 |
| 96 void EntireDisplayDamaged(SurfaceId root_surface_id) override { | 97 void EntireDisplayDamaged(SurfaceId root_surface_id) override { |
| 97 entire_display_damaged = true; | 98 entire_display_damaged = true; |
| 98 } | 99 } |
| 99 | 100 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 121 // Check that frame is damaged and swapped only under correct conditions. | 122 // Check that frame is damaged and swapped only under correct conditions. |
| 122 TEST_F(DisplayTest, DisplayDamaged) { | 123 TEST_F(DisplayTest, DisplayDamaged) { |
| 123 SetUpContext(nullptr); | 124 SetUpContext(nullptr); |
| 124 TestDisplayClient client; | 125 TestDisplayClient client; |
| 125 RendererSettings settings; | 126 RendererSettings settings; |
| 126 settings.partial_swap_enabled = true; | 127 settings.partial_swap_enabled = true; |
| 127 settings.finish_rendering_on_resize = true; | 128 settings.finish_rendering_on_resize = true; |
| 128 Display display(&client, &manager_, shared_bitmap_manager_.get(), nullptr, | 129 Display display(&client, &manager_, shared_bitmap_manager_.get(), nullptr, |
| 129 settings); | 130 settings); |
| 130 | 131 |
| 131 TestDisplayScheduler scheduler(&display, &fake_begin_frame_source_); | 132 TestDisplayScheduler scheduler(&display, &fake_begin_frame_source_, |
| 133 task_runner_.get()); |
| 132 display.Initialize(output_surface_.Pass(), &scheduler); | 134 display.Initialize(output_surface_.Pass(), &scheduler); |
| 133 | 135 |
| 134 SurfaceId surface_id(7u); | 136 SurfaceId surface_id(7u); |
| 135 EXPECT_FALSE(scheduler.damaged); | 137 EXPECT_FALSE(scheduler.damaged); |
| 136 EXPECT_FALSE(scheduler.entire_display_damaged); | 138 EXPECT_FALSE(scheduler.entire_display_damaged); |
| 137 display.SetSurfaceId(surface_id, 1.f); | 139 display.SetSurfaceId(surface_id, 1.f); |
| 138 EXPECT_FALSE(scheduler.damaged); | 140 EXPECT_FALSE(scheduler.damaged); |
| 139 EXPECT_TRUE(scheduler.entire_display_damaged); | 141 EXPECT_TRUE(scheduler.entire_display_damaged); |
| 140 | 142 |
| 141 scheduler.ResetDamageForTest(); | 143 scheduler.ResetDamageForTest(); |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 SetUpContext(context.Pass()); | 330 SetUpContext(context.Pass()); |
| 329 | 331 |
| 330 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0); | 332 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0); |
| 331 TestDisplayClient client; | 333 TestDisplayClient client; |
| 332 RendererSettings settings; | 334 RendererSettings settings; |
| 333 settings.partial_swap_enabled = true; | 335 settings.partial_swap_enabled = true; |
| 334 settings.finish_rendering_on_resize = true; | 336 settings.finish_rendering_on_resize = true; |
| 335 Display display(&client, &manager_, shared_bitmap_manager_.get(), nullptr, | 337 Display display(&client, &manager_, shared_bitmap_manager_.get(), nullptr, |
| 336 settings); | 338 settings); |
| 337 | 339 |
| 338 TestDisplayScheduler scheduler(&display, &fake_begin_frame_source_); | 340 TestDisplayScheduler scheduler(&display, &fake_begin_frame_source_, |
| 341 task_runner_.get()); |
| 339 display.Initialize(output_surface_.Pass(), &scheduler); | 342 display.Initialize(output_surface_.Pass(), &scheduler); |
| 340 | 343 |
| 341 SurfaceId surface_id(7u); | 344 SurfaceId surface_id(7u); |
| 342 display.SetSurfaceId(surface_id, 1.f); | 345 display.SetSurfaceId(surface_id, 1.f); |
| 343 | 346 |
| 344 display.Resize(gfx::Size(100, 100)); | 347 display.Resize(gfx::Size(100, 100)); |
| 345 factory_.Create(surface_id); | 348 factory_.Create(surface_id); |
| 346 | 349 |
| 347 { | 350 { |
| 348 RenderPassList pass_list; | 351 RenderPassList pass_list; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 | 390 |
| 388 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); | 391 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); |
| 389 display.Resize(gfx::Size(250, 250)); | 392 display.Resize(gfx::Size(250, 250)); |
| 390 testing::Mock::VerifyAndClearExpectations(context_ptr); | 393 testing::Mock::VerifyAndClearExpectations(context_ptr); |
| 391 | 394 |
| 392 factory_.Destroy(surface_id); | 395 factory_.Destroy(surface_id); |
| 393 } | 396 } |
| 394 | 397 |
| 395 } // namespace | 398 } // namespace |
| 396 } // namespace cc | 399 } // namespace cc |
| OLD | NEW |