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 |