OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
11 | 11 |
12 #include "base/auto_reset.h" | 12 #include "base/auto_reset.h" |
13 #include "base/location.h" | 13 #include "base/location.h" |
| 14 #include "base/memory/ptr_util.h" |
14 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
15 #include "base/synchronization/lock.h" | 16 #include "base/synchronization/lock.h" |
16 #include "base/thread_task_runner_handle.h" | 17 #include "base/thread_task_runner_handle.h" |
17 #include "cc/animation/timing_function.h" | 18 #include "cc/animation/timing_function.h" |
18 #include "cc/debug/frame_rate_counter.h" | 19 #include "cc/debug/frame_rate_counter.h" |
19 #include "cc/input/scroll_elasticity_helper.h" | 20 #include "cc/input/scroll_elasticity_helper.h" |
20 #include "cc/layers/content_layer_client.h" | 21 #include "cc/layers/content_layer_client.h" |
21 #include "cc/layers/io_surface_layer.h" | 22 #include "cc/layers/io_surface_layer.h" |
22 #include "cc/layers/layer_impl.h" | 23 #include "cc/layers/layer_impl.h" |
23 #include "cc/layers/painted_scrollbar_layer.h" | 24 #include "cc/layers/painted_scrollbar_layer.h" |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 bool did_notify_ready_to_draw_; | 424 bool did_notify_ready_to_draw_; |
424 bool did_draw_; | 425 bool did_draw_; |
425 }; | 426 }; |
426 | 427 |
427 // Note: With this test setup, we only get tiles flagged as REQUIRED_FOR_DRAW in | 428 // Note: With this test setup, we only get tiles flagged as REQUIRED_FOR_DRAW in |
428 // single threaded mode. | 429 // single threaded mode. |
429 SINGLE_THREAD_TEST_F(LayerTreeHostTestReadyToDrawVisibility); | 430 SINGLE_THREAD_TEST_F(LayerTreeHostTestReadyToDrawVisibility); |
430 | 431 |
431 class LayerTreeHostFreeWorkerContextResourcesTest : public LayerTreeHostTest { | 432 class LayerTreeHostFreeWorkerContextResourcesTest : public LayerTreeHostTest { |
432 public: | 433 public: |
433 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { | 434 std::unique_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { |
434 auto output_surface = make_scoped_ptr(new testing::StrictMock< | 435 auto output_surface = base::WrapUnique( |
435 MockSetWorkerContextShouldAggressivelyFreeResourcesOutputSurface>( | 436 new testing::StrictMock< |
436 delegating_renderer())); | 437 MockSetWorkerContextShouldAggressivelyFreeResourcesOutputSurface>( |
| 438 delegating_renderer())); |
437 | 439 |
438 // At init, we expect one call to set visibility to true. | 440 // At init, we expect one call to set visibility to true. |
439 testing::Expectation visibility_true = | 441 testing::Expectation visibility_true = |
440 EXPECT_CALL(*output_surface, | 442 EXPECT_CALL(*output_surface, |
441 SetWorkerContextShouldAggressivelyFreeResources(false)) | 443 SetWorkerContextShouldAggressivelyFreeResources(false)) |
442 .Times(1); | 444 .Times(1); |
443 | 445 |
444 // After running, we should get exactly one call to | 446 // After running, we should get exactly one call to |
445 // FreeWorkerContextGpuResources. | 447 // FreeWorkerContextGpuResources. |
446 EXPECT_CALL(*output_surface, | 448 EXPECT_CALL(*output_surface, |
(...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1380 | 1382 |
1381 // Tests that if a layer is not drawn because of some reason in the parent then | 1383 // Tests that if a layer is not drawn because of some reason in the parent then |
1382 // its damage is preserved until the next time it is drawn. | 1384 // its damage is preserved until the next time it is drawn. |
1383 class LayerTreeHostTestDamageWithScale : public LayerTreeHostTest { | 1385 class LayerTreeHostTestDamageWithScale : public LayerTreeHostTest { |
1384 public: | 1386 public: |
1385 LayerTreeHostTestDamageWithScale() {} | 1387 LayerTreeHostTestDamageWithScale() {} |
1386 | 1388 |
1387 void SetupTree() override { | 1389 void SetupTree() override { |
1388 client_.set_fill_with_nonsolid_color(true); | 1390 client_.set_fill_with_nonsolid_color(true); |
1389 | 1391 |
1390 scoped_ptr<FakeRecordingSource> recording(new FakeRecordingSource); | 1392 std::unique_ptr<FakeRecordingSource> recording(new FakeRecordingSource); |
1391 root_layer_ = FakePictureLayer::CreateWithRecordingSource( | 1393 root_layer_ = FakePictureLayer::CreateWithRecordingSource( |
1392 &client_, std::move(recording)); | 1394 &client_, std::move(recording)); |
1393 root_layer_->SetBounds(gfx::Size(50, 50)); | 1395 root_layer_->SetBounds(gfx::Size(50, 50)); |
1394 | 1396 |
1395 recording.reset(new FakeRecordingSource); | 1397 recording.reset(new FakeRecordingSource); |
1396 child_layer_ = FakePictureLayer::CreateWithRecordingSource( | 1398 child_layer_ = FakePictureLayer::CreateWithRecordingSource( |
1397 &client_, std::move(recording)); | 1399 &client_, std::move(recording)); |
1398 child_layer_->SetBounds(gfx::Size(25, 25)); | 1400 child_layer_->SetBounds(gfx::Size(25, 25)); |
1399 child_layer_->SetIsDrawable(true); | 1401 child_layer_->SetIsDrawable(true); |
1400 child_layer_->SetContentsOpaque(true); | 1402 child_layer_->SetContentsOpaque(true); |
(...skipping 900 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2301 GLsizei count, | 2303 GLsizei count, |
2302 GLenum type, | 2304 GLenum type, |
2303 GLintptr offset)); | 2305 GLintptr offset)); |
2304 MOCK_METHOD1(deleteTexture, void(GLenum texture)); | 2306 MOCK_METHOD1(deleteTexture, void(GLenum texture)); |
2305 MOCK_METHOD3(produceTextureDirectCHROMIUM, | 2307 MOCK_METHOD3(produceTextureDirectCHROMIUM, |
2306 void(GLuint texture, GLenum target, const GLbyte* mailbox)); | 2308 void(GLuint texture, GLenum target, const GLbyte* mailbox)); |
2307 }; | 2309 }; |
2308 | 2310 |
2309 class LayerTreeHostTestIOSurfaceDrawing : public LayerTreeHostTest { | 2311 class LayerTreeHostTestIOSurfaceDrawing : public LayerTreeHostTest { |
2310 protected: | 2312 protected: |
2311 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { | 2313 std::unique_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { |
2312 scoped_ptr<MockIOSurfaceWebGraphicsContext3D> mock_context_owned( | 2314 std::unique_ptr<MockIOSurfaceWebGraphicsContext3D> mock_context_owned( |
2313 new MockIOSurfaceWebGraphicsContext3D); | 2315 new MockIOSurfaceWebGraphicsContext3D); |
2314 mock_context_ = mock_context_owned.get(); | 2316 mock_context_ = mock_context_owned.get(); |
2315 | 2317 |
2316 if (delegating_renderer()) | 2318 if (delegating_renderer()) |
2317 return FakeOutputSurface::CreateDelegating3d( | 2319 return FakeOutputSurface::CreateDelegating3d( |
2318 std::move(mock_context_owned)); | 2320 std::move(mock_context_owned)); |
2319 else | 2321 else |
2320 return FakeOutputSurface::Create3d(std::move(mock_context_owned)); | 2322 return FakeOutputSurface::Create3d(std::move(mock_context_owned)); |
2321 } | 2323 } |
2322 | 2324 |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2488 child_layer_->SetBounds(gfx::Size(50, 50)); | 2490 child_layer_->SetBounds(gfx::Size(50, 50)); |
2489 | 2491 |
2490 root_layer_->AddChild(parent_layer_); | 2492 root_layer_->AddChild(parent_layer_); |
2491 parent_layer_->AddChild(child_layer_); | 2493 parent_layer_->AddChild(child_layer_); |
2492 layer_tree_host()->SetRootLayer(root_layer_); | 2494 layer_tree_host()->SetRootLayer(root_layer_); |
2493 | 2495 |
2494 LayerTreeHostTest::SetupTree(); | 2496 LayerTreeHostTest::SetupTree(); |
2495 client_.set_bounds(root_layer_->bounds()); | 2497 client_.set_bounds(root_layer_->bounds()); |
2496 } | 2498 } |
2497 | 2499 |
2498 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { | 2500 std::unique_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { |
2499 if (delegating_renderer()) { | 2501 if (delegating_renderer()) { |
2500 return FakeOutputSurface::CreateDelegatingSoftware( | 2502 return FakeOutputSurface::CreateDelegatingSoftware( |
2501 make_scoped_ptr(new SoftwareOutputDevice)); | 2503 base::WrapUnique(new SoftwareOutputDevice)); |
2502 } else { | 2504 } else { |
2503 return FakeOutputSurface::CreateSoftware( | 2505 return FakeOutputSurface::CreateSoftware( |
2504 make_scoped_ptr(new SoftwareOutputDevice)); | 2506 base::WrapUnique(new SoftwareOutputDevice)); |
2505 } | 2507 } |
2506 } | 2508 } |
2507 | 2509 |
2508 void BeginTest() override { | 2510 void BeginTest() override { |
2509 PostSetNeedsCommitToMainThread(); | 2511 PostSetNeedsCommitToMainThread(); |
2510 swap_count_ = 0; | 2512 swap_count_ = 0; |
2511 } | 2513 } |
2512 | 2514 |
2513 void ScheduledActionInvalidateOutputSurface() override { | 2515 void ScheduledActionInvalidateOutputSurface() override { |
2514 if (TestEnded()) | 2516 if (TestEnded()) |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2653 void ClearResources() { | 2655 void ClearResources() { |
2654 for (int i = 0; i < num_ui_resources_; i++) | 2656 for (int i = 0; i < num_ui_resources_; i++) |
2655 ui_resources_[i] = nullptr; | 2657 ui_resources_[i] = nullptr; |
2656 } | 2658 } |
2657 | 2659 |
2658 void CreateResource() { | 2660 void CreateResource() { |
2659 ui_resources_[num_ui_resources_++] = | 2661 ui_resources_[num_ui_resources_++] = |
2660 FakeScopedUIResource::Create(layer_tree_host()); | 2662 FakeScopedUIResource::Create(layer_tree_host()); |
2661 } | 2663 } |
2662 | 2664 |
2663 scoped_ptr<FakeScopedUIResource> ui_resources_[5]; | 2665 std::unique_ptr<FakeScopedUIResource> ui_resources_[5]; |
2664 int num_ui_resources_; | 2666 int num_ui_resources_; |
2665 }; | 2667 }; |
2666 | 2668 |
2667 MULTI_THREAD_TEST_F(LayerTreeHostTestUIResource); | 2669 MULTI_THREAD_TEST_F(LayerTreeHostTestUIResource); |
2668 | 2670 |
2669 class PushPropertiesCountingLayerImpl : public LayerImpl { | 2671 class PushPropertiesCountingLayerImpl : public LayerImpl { |
2670 public: | 2672 public: |
2671 static scoped_ptr<PushPropertiesCountingLayerImpl> Create( | 2673 static std::unique_ptr<PushPropertiesCountingLayerImpl> Create( |
2672 LayerTreeImpl* tree_impl, int id) { | 2674 LayerTreeImpl* tree_impl, |
2673 return make_scoped_ptr(new PushPropertiesCountingLayerImpl(tree_impl, id)); | 2675 int id) { |
| 2676 return base::WrapUnique(new PushPropertiesCountingLayerImpl(tree_impl, id)); |
2674 } | 2677 } |
2675 | 2678 |
2676 ~PushPropertiesCountingLayerImpl() override {} | 2679 ~PushPropertiesCountingLayerImpl() override {} |
2677 | 2680 |
2678 void PushPropertiesTo(LayerImpl* layer) override { | 2681 void PushPropertiesTo(LayerImpl* layer) override { |
2679 LayerImpl::PushPropertiesTo(layer); | 2682 LayerImpl::PushPropertiesTo(layer); |
2680 push_properties_count_++; | 2683 push_properties_count_++; |
2681 // Push state to the active tree because we can only access it from there. | 2684 // Push state to the active tree because we can only access it from there. |
2682 static_cast<PushPropertiesCountingLayerImpl*>( | 2685 static_cast<PushPropertiesCountingLayerImpl*>( |
2683 layer)->push_properties_count_ = push_properties_count_; | 2686 layer)->push_properties_count_ = push_properties_count_; |
2684 } | 2687 } |
2685 | 2688 |
2686 scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override { | 2689 std::unique_ptr<LayerImpl> CreateLayerImpl( |
| 2690 LayerTreeImpl* tree_impl) override { |
2687 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()); | 2691 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()); |
2688 } | 2692 } |
2689 | 2693 |
2690 size_t push_properties_count() const { return push_properties_count_; } | 2694 size_t push_properties_count() const { return push_properties_count_; } |
2691 void reset_push_properties_count() { push_properties_count_ = 0; } | 2695 void reset_push_properties_count() { push_properties_count_ = 0; } |
2692 | 2696 |
2693 private: | 2697 private: |
2694 size_t push_properties_count_; | 2698 size_t push_properties_count_; |
2695 | 2699 |
2696 PushPropertiesCountingLayerImpl(LayerTreeImpl* tree_impl, int id) | 2700 PushPropertiesCountingLayerImpl(LayerTreeImpl* tree_impl, int id) |
(...skipping 13 matching lines...) Expand all Loading... |
2710 Layer::PushPropertiesTo(layer); | 2714 Layer::PushPropertiesTo(layer); |
2711 push_properties_count_++; | 2715 push_properties_count_++; |
2712 if (persist_needs_push_properties_) { | 2716 if (persist_needs_push_properties_) { |
2713 layer_tree_host()->AddLayerShouldPushProperties(this); | 2717 layer_tree_host()->AddLayerShouldPushProperties(this); |
2714 } | 2718 } |
2715 } | 2719 } |
2716 | 2720 |
2717 // Something to make this layer push properties, but no other layer. | 2721 // Something to make this layer push properties, but no other layer. |
2718 void MakePushProperties() { SetContentsOpaque(!contents_opaque()); } | 2722 void MakePushProperties() { SetContentsOpaque(!contents_opaque()); } |
2719 | 2723 |
2720 scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override { | 2724 std::unique_ptr<LayerImpl> CreateLayerImpl( |
| 2725 LayerTreeImpl* tree_impl) override { |
2721 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()); | 2726 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()); |
2722 } | 2727 } |
2723 | 2728 |
2724 void SetDrawsContent(bool draws_content) { SetIsDrawable(draws_content); } | 2729 void SetDrawsContent(bool draws_content) { SetIsDrawable(draws_content); } |
2725 | 2730 |
2726 size_t push_properties_count() const { return push_properties_count_; } | 2731 size_t push_properties_count() const { return push_properties_count_; } |
2727 void reset_push_properties_count() { push_properties_count_ = 0; } | 2732 void reset_push_properties_count() { push_properties_count_ = 0; } |
2728 | 2733 |
2729 void set_persist_needs_push_properties(bool persist) { | 2734 void set_persist_needs_push_properties(bool persist) { |
2730 persist_needs_push_properties_ = persist; | 2735 persist_needs_push_properties_ = persist; |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3168 | 3173 |
3169 void DidCommitAndDrawFrame() override { | 3174 void DidCommitAndDrawFrame() override { |
3170 switch (layer_tree_host()->source_frame_number()) { | 3175 switch (layer_tree_host()->source_frame_number()) { |
3171 case 0: | 3176 case 0: |
3172 break; | 3177 break; |
3173 case 1: { | 3178 case 1: { |
3174 // During update, the ignore_set_needs_commit_ bit is set to true to | 3179 // During update, the ignore_set_needs_commit_ bit is set to true to |
3175 // avoid causing a second commit to be scheduled. If a property change | 3180 // avoid causing a second commit to be scheduled. If a property change |
3176 // is made during this, however, it needs to be pushed in the upcoming | 3181 // is made during this, however, it needs to be pushed in the upcoming |
3177 // commit. | 3182 // commit. |
3178 scoped_ptr<base::AutoReset<bool>> ignore = | 3183 std::unique_ptr<base::AutoReset<bool>> ignore = |
3179 scrollbar_layer_->IgnoreSetNeedsCommit(); | 3184 scrollbar_layer_->IgnoreSetNeedsCommit(); |
3180 | 3185 |
3181 scrollbar_layer_->SetBounds(gfx::Size(30, 30)); | 3186 scrollbar_layer_->SetBounds(gfx::Size(30, 30)); |
3182 | 3187 |
3183 EXPECT_TRUE(layer_tree_host()->LayerNeedsPushPropertiesForTesting( | 3188 EXPECT_TRUE(layer_tree_host()->LayerNeedsPushPropertiesForTesting( |
3184 scrollbar_layer_.get())); | 3189 scrollbar_layer_.get())); |
3185 layer_tree_host()->SetNeedsCommit(); | 3190 layer_tree_host()->SetNeedsCommit(); |
3186 | 3191 |
3187 scrollbar_layer_->reset_push_properties_count(); | 3192 scrollbar_layer_->reset_push_properties_count(); |
3188 EXPECT_EQ(0u, scrollbar_layer_->push_properties_count()); | 3193 EXPECT_EQ(0u, scrollbar_layer_->push_properties_count()); |
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4000 | 4005 |
4001 MULTI_THREAD_TEST_F(LayerTreeHostTestElasticOverscroll); | 4006 MULTI_THREAD_TEST_F(LayerTreeHostTestElasticOverscroll); |
4002 | 4007 |
4003 class LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface | 4008 class LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface |
4004 : public LayerTreeHostTest { | 4009 : public LayerTreeHostTest { |
4005 protected: | 4010 protected: |
4006 LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface() | 4011 LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface() |
4007 : first_output_surface_memory_limit_(4321234), | 4012 : first_output_surface_memory_limit_(4321234), |
4008 second_output_surface_memory_limit_(1234321) {} | 4013 second_output_surface_memory_limit_(1234321) {} |
4009 | 4014 |
4010 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { | 4015 std::unique_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { |
4011 if (!first_context_provider_.get()) { | 4016 if (!first_context_provider_.get()) { |
4012 first_context_provider_ = TestContextProvider::Create(); | 4017 first_context_provider_ = TestContextProvider::Create(); |
4013 } else { | 4018 } else { |
4014 EXPECT_FALSE(second_context_provider_.get()); | 4019 EXPECT_FALSE(second_context_provider_.get()); |
4015 second_context_provider_ = TestContextProvider::Create(); | 4020 second_context_provider_ = TestContextProvider::Create(); |
4016 } | 4021 } |
4017 | 4022 |
4018 scoped_refptr<TestContextProvider> provider(second_context_provider_.get() | 4023 scoped_refptr<TestContextProvider> provider(second_context_provider_.get() |
4019 ? second_context_provider_ | 4024 ? second_context_provider_ |
4020 : first_context_provider_); | 4025 : first_context_provider_); |
4021 scoped_ptr<FakeOutputSurface> output_surface; | 4026 std::unique_ptr<FakeOutputSurface> output_surface; |
4022 if (delegating_renderer()) | 4027 if (delegating_renderer()) |
4023 output_surface = FakeOutputSurface::CreateDelegating3d(provider); | 4028 output_surface = FakeOutputSurface::CreateDelegating3d(provider); |
4024 else | 4029 else |
4025 output_surface = FakeOutputSurface::Create3d(provider); | 4030 output_surface = FakeOutputSurface::Create3d(provider); |
4026 output_surface->SetMemoryPolicyToSetAtBind( | 4031 output_surface->SetMemoryPolicyToSetAtBind( |
4027 make_scoped_ptr(new ManagedMemoryPolicy( | 4032 base::WrapUnique(new ManagedMemoryPolicy( |
4028 second_context_provider_.get() ? second_output_surface_memory_limit_ | 4033 second_context_provider_.get() ? second_output_surface_memory_limit_ |
4029 : first_output_surface_memory_limit_, | 4034 : first_output_surface_memory_limit_, |
4030 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE, | 4035 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE, |
4031 ManagedMemoryPolicy::kDefaultNumResourcesLimit))); | 4036 ManagedMemoryPolicy::kDefaultNumResourcesLimit))); |
4032 return output_surface; | 4037 return output_surface; |
4033 } | 4038 } |
4034 | 4039 |
4035 void SetupTree() override { | 4040 void SetupTree() override { |
4036 root_ = FakePictureLayer::Create(&client_); | 4041 root_ = FakePictureLayer::Create(&client_); |
4037 root_->SetBounds(gfx::Size(20, 20)); | 4042 root_->SetBounds(gfx::Size(20, 20)); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4142 class PinnedLayerTreeSwapPromise : public LayerTreeHostTest { | 4147 class PinnedLayerTreeSwapPromise : public LayerTreeHostTest { |
4143 protected: | 4148 protected: |
4144 void BeginTest() override { | 4149 void BeginTest() override { |
4145 PostSetNextCommitForcesRedrawToMainThread(); | 4150 PostSetNextCommitForcesRedrawToMainThread(); |
4146 PostSetNeedsCommitToMainThread(); | 4151 PostSetNeedsCommitToMainThread(); |
4147 } | 4152 } |
4148 | 4153 |
4149 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { | 4154 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { |
4150 int frame = host_impl->active_tree()->source_frame_number(); | 4155 int frame = host_impl->active_tree()->source_frame_number(); |
4151 if (frame == -1) { | 4156 if (frame == -1) { |
4152 host_impl->active_tree()->QueuePinnedSwapPromise(make_scoped_ptr( | 4157 host_impl->active_tree()->QueuePinnedSwapPromise(base::WrapUnique( |
4153 new TestSwapPromise(&pinned_active_swap_promise_result_))); | 4158 new TestSwapPromise(&pinned_active_swap_promise_result_))); |
4154 host_impl->pending_tree()->QueueSwapPromise( | 4159 host_impl->pending_tree()->QueueSwapPromise( |
4155 make_scoped_ptr(new TestSwapPromise(&pending_swap_promise_result_))); | 4160 base::WrapUnique(new TestSwapPromise(&pending_swap_promise_result_))); |
4156 host_impl->active_tree()->QueueSwapPromise( | 4161 host_impl->active_tree()->QueueSwapPromise( |
4157 make_scoped_ptr(new TestSwapPromise(&active_swap_promise_result_))); | 4162 base::WrapUnique(new TestSwapPromise(&active_swap_promise_result_))); |
4158 } | 4163 } |
4159 } | 4164 } |
4160 | 4165 |
4161 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { | 4166 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
4162 EndTest(); | 4167 EndTest(); |
4163 } | 4168 } |
4164 | 4169 |
4165 void AfterTest() override { | 4170 void AfterTest() override { |
4166 // The pending swap promise should activate and swap. | 4171 // The pending swap promise should activate and swap. |
4167 EXPECT_TRUE(pending_swap_promise_result_.did_activate_called); | 4172 EXPECT_TRUE(pending_swap_promise_result_.did_activate_called); |
(...skipping 18 matching lines...) Expand all Loading... |
4186 | 4191 |
4187 MULTI_THREAD_TEST_F(PinnedLayerTreeSwapPromise); | 4192 MULTI_THREAD_TEST_F(PinnedLayerTreeSwapPromise); |
4188 | 4193 |
4189 class LayerTreeHostTestBreakSwapPromise : public LayerTreeHostTest { | 4194 class LayerTreeHostTestBreakSwapPromise : public LayerTreeHostTest { |
4190 protected: | 4195 protected: |
4191 LayerTreeHostTestBreakSwapPromise() | 4196 LayerTreeHostTestBreakSwapPromise() |
4192 : commit_count_(0), commit_complete_count_(0) {} | 4197 : commit_count_(0), commit_complete_count_(0) {} |
4193 | 4198 |
4194 void WillBeginMainFrame() override { | 4199 void WillBeginMainFrame() override { |
4195 ASSERT_LE(commit_count_, 2); | 4200 ASSERT_LE(commit_count_, 2); |
4196 scoped_ptr<SwapPromise> swap_promise( | 4201 std::unique_ptr<SwapPromise> swap_promise( |
4197 new TestSwapPromise(&swap_promise_result_[commit_count_])); | 4202 new TestSwapPromise(&swap_promise_result_[commit_count_])); |
4198 layer_tree_host()->QueueSwapPromise(std::move(swap_promise)); | 4203 layer_tree_host()->QueueSwapPromise(std::move(swap_promise)); |
4199 } | 4204 } |
4200 | 4205 |
4201 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 4206 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
4202 | 4207 |
4203 void DidCommit() override { | 4208 void DidCommit() override { |
4204 commit_count_++; | 4209 commit_count_++; |
4205 if (commit_count_ == 2) { | 4210 if (commit_count_ == 2) { |
4206 // This commit will finish. | 4211 // This commit will finish. |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4300 MainThreadTaskRunner()->PostTask( | 4305 MainThreadTaskRunner()->PostTask( |
4301 FROM_HERE, base::Bind(&LayerTreeHostTestKeepSwapPromise::ChangeFrame, | 4306 FROM_HERE, base::Bind(&LayerTreeHostTestKeepSwapPromise::ChangeFrame, |
4302 base::Unretained(this))); | 4307 base::Unretained(this))); |
4303 } | 4308 } |
4304 | 4309 |
4305 void ChangeFrame() { | 4310 void ChangeFrame() { |
4306 switch (layer_tree_host()->source_frame_number()) { | 4311 switch (layer_tree_host()->source_frame_number()) { |
4307 case 1: | 4312 case 1: |
4308 layer_->SetBounds(gfx::Size(10, 11)); | 4313 layer_->SetBounds(gfx::Size(10, 11)); |
4309 layer_tree_host()->QueueSwapPromise( | 4314 layer_tree_host()->QueueSwapPromise( |
4310 make_scoped_ptr(new TestSwapPromise(&swap_promise_result_))); | 4315 base::WrapUnique(new TestSwapPromise(&swap_promise_result_))); |
4311 break; | 4316 break; |
4312 case 2: | 4317 case 2: |
4313 break; | 4318 break; |
4314 default: | 4319 default: |
4315 NOTREACHED(); | 4320 NOTREACHED(); |
4316 break; | 4321 break; |
4317 } | 4322 } |
4318 } | 4323 } |
4319 | 4324 |
4320 void WillActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 4325 void WillActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4373 | 4378 |
4374 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestKeepSwapPromise); | 4379 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestKeepSwapPromise); |
4375 | 4380 |
4376 class LayerTreeHostTestBreakSwapPromiseForVisibility | 4381 class LayerTreeHostTestBreakSwapPromiseForVisibility |
4377 : public LayerTreeHostTest { | 4382 : public LayerTreeHostTest { |
4378 protected: | 4383 protected: |
4379 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 4384 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
4380 | 4385 |
4381 void SetVisibleFalseAndQueueSwapPromise() { | 4386 void SetVisibleFalseAndQueueSwapPromise() { |
4382 layer_tree_host()->SetVisible(false); | 4387 layer_tree_host()->SetVisible(false); |
4383 scoped_ptr<SwapPromise> swap_promise( | 4388 std::unique_ptr<SwapPromise> swap_promise( |
4384 new TestSwapPromise(&swap_promise_result_)); | 4389 new TestSwapPromise(&swap_promise_result_)); |
4385 layer_tree_host()->QueueSwapPromise(std::move(swap_promise)); | 4390 layer_tree_host()->QueueSwapPromise(std::move(swap_promise)); |
4386 } | 4391 } |
4387 | 4392 |
4388 void ScheduledActionWillSendBeginMainFrame() override { | 4393 void ScheduledActionWillSendBeginMainFrame() override { |
4389 MainThreadTaskRunner()->PostTask( | 4394 MainThreadTaskRunner()->PostTask( |
4390 FROM_HERE, | 4395 FROM_HERE, |
4391 base::Bind(&LayerTreeHostTestBreakSwapPromiseForVisibility | 4396 base::Bind(&LayerTreeHostTestBreakSwapPromiseForVisibility |
4392 ::SetVisibleFalseAndQueueSwapPromise, | 4397 ::SetVisibleFalseAndQueueSwapPromise, |
4393 base::Unretained(this))); | 4398 base::Unretained(this))); |
(...skipping 23 matching lines...) Expand all Loading... |
4417 class LayerTreeHostTestBreakSwapPromiseForContext : public LayerTreeHostTest { | 4422 class LayerTreeHostTestBreakSwapPromiseForContext : public LayerTreeHostTest { |
4418 protected: | 4423 protected: |
4419 LayerTreeHostTestBreakSwapPromiseForContext() | 4424 LayerTreeHostTestBreakSwapPromiseForContext() |
4420 : output_surface_lost_triggered_(false) { | 4425 : output_surface_lost_triggered_(false) { |
4421 } | 4426 } |
4422 | 4427 |
4423 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 4428 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
4424 | 4429 |
4425 void LoseOutputSurfaceAndQueueSwapPromise() { | 4430 void LoseOutputSurfaceAndQueueSwapPromise() { |
4426 layer_tree_host()->DidLoseOutputSurface(); | 4431 layer_tree_host()->DidLoseOutputSurface(); |
4427 scoped_ptr<SwapPromise> swap_promise( | 4432 std::unique_ptr<SwapPromise> swap_promise( |
4428 new TestSwapPromise(&swap_promise_result_)); | 4433 new TestSwapPromise(&swap_promise_result_)); |
4429 layer_tree_host()->QueueSwapPromise(std::move(swap_promise)); | 4434 layer_tree_host()->QueueSwapPromise(std::move(swap_promise)); |
4430 } | 4435 } |
4431 | 4436 |
4432 void ScheduledActionWillSendBeginMainFrame() override { | 4437 void ScheduledActionWillSendBeginMainFrame() override { |
4433 if (output_surface_lost_triggered_) | 4438 if (output_surface_lost_triggered_) |
4434 return; | 4439 return; |
4435 output_surface_lost_triggered_ = true; | 4440 output_surface_lost_triggered_ = true; |
4436 | 4441 |
4437 MainThreadTaskRunner()->PostTask( | 4442 MainThreadTaskRunner()->PostTask( |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4496 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 4501 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
4497 | 4502 |
4498 void WillBeginMainFrame() override { | 4503 void WillBeginMainFrame() override { |
4499 if (TestEnded()) | 4504 if (TestEnded()) |
4500 return; | 4505 return; |
4501 | 4506 |
4502 int set_needs_commit_count = 0; | 4507 int set_needs_commit_count = 0; |
4503 int set_needs_redraw_count = 0; | 4508 int set_needs_redraw_count = 0; |
4504 | 4509 |
4505 { | 4510 { |
4506 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( | 4511 std::unique_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( |
4507 new SimpleSwapPromiseMonitor(layer_tree_host(), | 4512 new SimpleSwapPromiseMonitor(layer_tree_host(), NULL, |
4508 NULL, | |
4509 &set_needs_commit_count, | 4513 &set_needs_commit_count, |
4510 &set_needs_redraw_count)); | 4514 &set_needs_redraw_count)); |
4511 layer_tree_host()->SetNeedsCommit(); | 4515 layer_tree_host()->SetNeedsCommit(); |
4512 EXPECT_EQ(1, set_needs_commit_count); | 4516 EXPECT_EQ(1, set_needs_commit_count); |
4513 EXPECT_EQ(0, set_needs_redraw_count); | 4517 EXPECT_EQ(0, set_needs_redraw_count); |
4514 } | 4518 } |
4515 | 4519 |
4516 // Now the monitor is destroyed, SetNeedsCommit() is no longer being | 4520 // Now the monitor is destroyed, SetNeedsCommit() is no longer being |
4517 // monitored. | 4521 // monitored. |
4518 layer_tree_host()->SetNeedsCommit(); | 4522 layer_tree_host()->SetNeedsCommit(); |
4519 EXPECT_EQ(1, set_needs_commit_count); | 4523 EXPECT_EQ(1, set_needs_commit_count); |
4520 EXPECT_EQ(0, set_needs_redraw_count); | 4524 EXPECT_EQ(0, set_needs_redraw_count); |
4521 | 4525 |
4522 { | 4526 { |
4523 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( | 4527 std::unique_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( |
4524 new SimpleSwapPromiseMonitor(layer_tree_host(), | 4528 new SimpleSwapPromiseMonitor(layer_tree_host(), NULL, |
4525 NULL, | |
4526 &set_needs_commit_count, | 4529 &set_needs_commit_count, |
4527 &set_needs_redraw_count)); | 4530 &set_needs_redraw_count)); |
4528 layer_tree_host()->SetNeedsUpdateLayers(); | 4531 layer_tree_host()->SetNeedsUpdateLayers(); |
4529 EXPECT_EQ(2, set_needs_commit_count); | 4532 EXPECT_EQ(2, set_needs_commit_count); |
4530 EXPECT_EQ(0, set_needs_redraw_count); | 4533 EXPECT_EQ(0, set_needs_redraw_count); |
4531 } | 4534 } |
4532 | 4535 |
4533 { | 4536 { |
4534 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( | 4537 std::unique_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( |
4535 new SimpleSwapPromiseMonitor(layer_tree_host(), | 4538 new SimpleSwapPromiseMonitor(layer_tree_host(), NULL, |
4536 NULL, | |
4537 &set_needs_commit_count, | 4539 &set_needs_commit_count, |
4538 &set_needs_redraw_count)); | 4540 &set_needs_redraw_count)); |
4539 layer_tree_host()->SetNeedsAnimate(); | 4541 layer_tree_host()->SetNeedsAnimate(); |
4540 EXPECT_EQ(3, set_needs_commit_count); | 4542 EXPECT_EQ(3, set_needs_commit_count); |
4541 EXPECT_EQ(0, set_needs_redraw_count); | 4543 EXPECT_EQ(0, set_needs_redraw_count); |
4542 } | 4544 } |
4543 | 4545 |
4544 EndTest(); | 4546 EndTest(); |
4545 } | 4547 } |
4546 | 4548 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4578 case 2: | 4580 case 2: |
4579 ui_resource_ = nullptr; | 4581 ui_resource_ = nullptr; |
4580 EndTest(); | 4582 EndTest(); |
4581 break; | 4583 break; |
4582 } | 4584 } |
4583 } | 4585 } |
4584 | 4586 |
4585 void AfterTest() override {} | 4587 void AfterTest() override {} |
4586 | 4588 |
4587 FakeContentLayerClient client_; | 4589 FakeContentLayerClient client_; |
4588 scoped_ptr<FakeScopedUIResource> ui_resource_; | 4590 std::unique_ptr<FakeScopedUIResource> ui_resource_; |
4589 }; | 4591 }; |
4590 | 4592 |
4591 // This test is flaky, see http://crbug.com/386199 | 4593 // This test is flaky, see http://crbug.com/386199 |
4592 // MULTI_THREAD_TEST_F(LayerTreeHostTestHighResRequiredAfterEvictingUIResources) | 4594 // MULTI_THREAD_TEST_F(LayerTreeHostTestHighResRequiredAfterEvictingUIResources) |
4593 | 4595 |
4594 class LayerTreeHostTestGpuRasterizationDefault : public LayerTreeHostTest { | 4596 class LayerTreeHostTestGpuRasterizationDefault : public LayerTreeHostTest { |
4595 protected: | 4597 protected: |
4596 void InitializeSettings(LayerTreeSettings* settings) override { | 4598 void InitializeSettings(LayerTreeSettings* settings) override { |
4597 EXPECT_FALSE(settings->gpu_rasterization_enabled); | 4599 EXPECT_FALSE(settings->gpu_rasterization_enabled); |
4598 EXPECT_FALSE(settings->gpu_rasterization_forced); | 4600 EXPECT_FALSE(settings->gpu_rasterization_forced); |
4599 } | 4601 } |
4600 | 4602 |
4601 void SetupTree() override { | 4603 void SetupTree() override { |
4602 LayerTreeHostTest::SetupTree(); | 4604 LayerTreeHostTest::SetupTree(); |
4603 | 4605 |
4604 scoped_ptr<FakeRecordingSource> recording_source(new FakeRecordingSource); | 4606 std::unique_ptr<FakeRecordingSource> recording_source( |
| 4607 new FakeRecordingSource); |
4605 recording_source_ = recording_source.get(); | 4608 recording_source_ = recording_source.get(); |
4606 | 4609 |
4607 scoped_refptr<FakePictureLayer> layer = | 4610 scoped_refptr<FakePictureLayer> layer = |
4608 FakePictureLayer::CreateWithRecordingSource( | 4611 FakePictureLayer::CreateWithRecordingSource( |
4609 &layer_client_, std::move(recording_source)); | 4612 &layer_client_, std::move(recording_source)); |
4610 layer_ = layer.get(); | 4613 layer_ = layer.get(); |
4611 layer->SetBounds(gfx::Size(10, 10)); | 4614 layer->SetBounds(gfx::Size(10, 10)); |
4612 layer->SetIsDrawable(true); | 4615 layer->SetIsDrawable(true); |
4613 layer_tree_host()->root_layer()->AddChild(layer); | 4616 layer_tree_host()->root_layer()->AddChild(layer); |
4614 layer_client_.set_bounds(layer_->bounds()); | 4617 layer_client_.set_bounds(layer_->bounds()); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4649 FakeRecordingSource* recording_source_; | 4652 FakeRecordingSource* recording_source_; |
4650 }; | 4653 }; |
4651 | 4654 |
4652 MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationDefault); | 4655 MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationDefault); |
4653 | 4656 |
4654 class LayerTreeHostTestEmptyLayerGpuRasterization : public LayerTreeHostTest { | 4657 class LayerTreeHostTestEmptyLayerGpuRasterization : public LayerTreeHostTest { |
4655 protected: | 4658 protected: |
4656 void SetupTree() override { | 4659 void SetupTree() override { |
4657 LayerTreeHostTest::SetupTree(); | 4660 LayerTreeHostTest::SetupTree(); |
4658 | 4661 |
4659 scoped_ptr<FakeRecordingSource> recording_source(new FakeRecordingSource); | 4662 std::unique_ptr<FakeRecordingSource> recording_source( |
| 4663 new FakeRecordingSource); |
4660 recording_source_ = recording_source.get(); | 4664 recording_source_ = recording_source.get(); |
4661 | 4665 |
4662 scoped_refptr<FakePictureLayer> layer = | 4666 scoped_refptr<FakePictureLayer> layer = |
4663 FakePictureLayer::CreateWithRecordingSource( | 4667 FakePictureLayer::CreateWithRecordingSource( |
4664 &layer_client_, std::move(recording_source)); | 4668 &layer_client_, std::move(recording_source)); |
4665 layer_ = layer.get(); | 4669 layer_ = layer.get(); |
4666 layer->SetBounds(gfx::Size()); | 4670 layer->SetBounds(gfx::Size()); |
4667 layer->SetIsDrawable(true); | 4671 layer->SetIsDrawable(true); |
4668 layer_tree_host()->root_layer()->AddChild(layer); | 4672 layer_tree_host()->root_layer()->AddChild(layer); |
4669 layer_client_.set_bounds(layer->bounds()); | 4673 layer_client_.set_bounds(layer->bounds()); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4706 class LayerTreeHostTestGpuRasterizationEnabled : public LayerTreeHostTest { | 4710 class LayerTreeHostTestGpuRasterizationEnabled : public LayerTreeHostTest { |
4707 protected: | 4711 protected: |
4708 void InitializeSettings(LayerTreeSettings* settings) override { | 4712 void InitializeSettings(LayerTreeSettings* settings) override { |
4709 EXPECT_FALSE(settings->gpu_rasterization_enabled); | 4713 EXPECT_FALSE(settings->gpu_rasterization_enabled); |
4710 settings->gpu_rasterization_enabled = true; | 4714 settings->gpu_rasterization_enabled = true; |
4711 } | 4715 } |
4712 | 4716 |
4713 void SetupTree() override { | 4717 void SetupTree() override { |
4714 LayerTreeHostTest::SetupTree(); | 4718 LayerTreeHostTest::SetupTree(); |
4715 | 4719 |
4716 scoped_ptr<FakeRecordingSource> recording_source(new FakeRecordingSource); | 4720 std::unique_ptr<FakeRecordingSource> recording_source( |
| 4721 new FakeRecordingSource); |
4717 recording_source_ = recording_source.get(); | 4722 recording_source_ = recording_source.get(); |
4718 | 4723 |
4719 scoped_refptr<FakePictureLayer> layer = | 4724 scoped_refptr<FakePictureLayer> layer = |
4720 FakePictureLayer::CreateWithRecordingSource( | 4725 FakePictureLayer::CreateWithRecordingSource( |
4721 &layer_client_, std::move(recording_source)); | 4726 &layer_client_, std::move(recording_source)); |
4722 layer_ = layer.get(); | 4727 layer_ = layer.get(); |
4723 layer->SetBounds(gfx::Size(10, 10)); | 4728 layer->SetBounds(gfx::Size(10, 10)); |
4724 layer->SetIsDrawable(true); | 4729 layer->SetIsDrawable(true); |
4725 layer_tree_host()->root_layer()->AddChild(layer); | 4730 layer_tree_host()->root_layer()->AddChild(layer); |
4726 layer_client_.set_bounds(layer_->bounds()); | 4731 layer_client_.set_bounds(layer_->bounds()); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4775 class LayerTreeHostTestGpuRasterizationForced : public LayerTreeHostTest { | 4780 class LayerTreeHostTestGpuRasterizationForced : public LayerTreeHostTest { |
4776 protected: | 4781 protected: |
4777 void InitializeSettings(LayerTreeSettings* settings) override { | 4782 void InitializeSettings(LayerTreeSettings* settings) override { |
4778 EXPECT_FALSE(settings->gpu_rasterization_forced); | 4783 EXPECT_FALSE(settings->gpu_rasterization_forced); |
4779 settings->gpu_rasterization_forced = true; | 4784 settings->gpu_rasterization_forced = true; |
4780 } | 4785 } |
4781 | 4786 |
4782 void SetupTree() override { | 4787 void SetupTree() override { |
4783 LayerTreeHostTest::SetupTree(); | 4788 LayerTreeHostTest::SetupTree(); |
4784 | 4789 |
4785 scoped_ptr<FakeRecordingSource> recording_source(new FakeRecordingSource); | 4790 std::unique_ptr<FakeRecordingSource> recording_source( |
| 4791 new FakeRecordingSource); |
4786 recording_source_ = recording_source.get(); | 4792 recording_source_ = recording_source.get(); |
4787 | 4793 |
4788 scoped_refptr<FakePictureLayer> layer = | 4794 scoped_refptr<FakePictureLayer> layer = |
4789 FakePictureLayer::CreateWithRecordingSource( | 4795 FakePictureLayer::CreateWithRecordingSource( |
4790 &layer_client_, std::move(recording_source)); | 4796 &layer_client_, std::move(recording_source)); |
4791 layer_ = layer.get(); | 4797 layer_ = layer.get(); |
4792 | 4798 |
4793 layer->SetBounds(gfx::Size(10, 10)); | 4799 layer->SetBounds(gfx::Size(10, 10)); |
4794 layer->SetIsDrawable(true); | 4800 layer->SetIsDrawable(true); |
4795 layer_tree_host()->root_layer()->AddChild(layer); | 4801 layer_tree_host()->root_layer()->AddChild(layer); |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5090 public: | 5096 public: |
5091 LayerTreeHostTestSynchronousCompositeSwapPromise() : commit_count_(0) {} | 5097 LayerTreeHostTestSynchronousCompositeSwapPromise() : commit_count_(0) {} |
5092 | 5098 |
5093 void InitializeSettings(LayerTreeSettings* settings) override { | 5099 void InitializeSettings(LayerTreeSettings* settings) override { |
5094 settings->single_thread_proxy_scheduler = false; | 5100 settings->single_thread_proxy_scheduler = false; |
5095 settings->use_zero_copy = true; | 5101 settings->use_zero_copy = true; |
5096 } | 5102 } |
5097 | 5103 |
5098 void BeginTest() override { | 5104 void BeginTest() override { |
5099 // Successful composite. | 5105 // Successful composite. |
5100 scoped_ptr<SwapPromise> swap_promise0( | 5106 std::unique_ptr<SwapPromise> swap_promise0( |
5101 new TestSwapPromise(&swap_promise_result_[0])); | 5107 new TestSwapPromise(&swap_promise_result_[0])); |
5102 layer_tree_host()->QueueSwapPromise(std::move(swap_promise0)); | 5108 layer_tree_host()->QueueSwapPromise(std::move(swap_promise0)); |
5103 layer_tree_host()->Composite(base::TimeTicks::Now()); | 5109 layer_tree_host()->Composite(base::TimeTicks::Now()); |
5104 | 5110 |
5105 // Fail to swap (no damage). | 5111 // Fail to swap (no damage). |
5106 scoped_ptr<SwapPromise> swap_promise1( | 5112 std::unique_ptr<SwapPromise> swap_promise1( |
5107 new TestSwapPromise(&swap_promise_result_[1])); | 5113 new TestSwapPromise(&swap_promise_result_[1])); |
5108 layer_tree_host()->QueueSwapPromise(std::move(swap_promise1)); | 5114 layer_tree_host()->QueueSwapPromise(std::move(swap_promise1)); |
5109 layer_tree_host()->SetNeedsCommit(); | 5115 layer_tree_host()->SetNeedsCommit(); |
5110 layer_tree_host()->Composite(base::TimeTicks::Now()); | 5116 layer_tree_host()->Composite(base::TimeTicks::Now()); |
5111 | 5117 |
5112 // Fail to draw (not visible). | 5118 // Fail to draw (not visible). |
5113 scoped_ptr<SwapPromise> swap_promise2( | 5119 std::unique_ptr<SwapPromise> swap_promise2( |
5114 new TestSwapPromise(&swap_promise_result_[2])); | 5120 new TestSwapPromise(&swap_promise_result_[2])); |
5115 layer_tree_host()->QueueSwapPromise(std::move(swap_promise2)); | 5121 layer_tree_host()->QueueSwapPromise(std::move(swap_promise2)); |
5116 layer_tree_host()->SetNeedsDisplayOnAllLayers(); | 5122 layer_tree_host()->SetNeedsDisplayOnAllLayers(); |
5117 layer_tree_host()->SetVisible(false); | 5123 layer_tree_host()->SetVisible(false); |
5118 layer_tree_host()->Composite(base::TimeTicks::Now()); | 5124 layer_tree_host()->Composite(base::TimeTicks::Now()); |
5119 | 5125 |
5120 EndTest(); | 5126 EndTest(); |
5121 } | 5127 } |
5122 | 5128 |
5123 void DidCommit() override { | 5129 void DidCommit() override { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5221 scoped_refptr<Layer> page_scale_layer = Layer::Create(); | 5227 scoped_refptr<Layer> page_scale_layer = Layer::Create(); |
5222 page_scale_layer->SetBounds(gfx::Size(500, 500)); | 5228 page_scale_layer->SetBounds(gfx::Size(500, 500)); |
5223 | 5229 |
5224 scoped_refptr<Layer> pinch = Layer::Create(); | 5230 scoped_refptr<Layer> pinch = Layer::Create(); |
5225 pinch->SetBounds(gfx::Size(500, 500)); | 5231 pinch->SetBounds(gfx::Size(500, 500)); |
5226 pinch->SetScrollClipLayerId(root_clip->id()); | 5232 pinch->SetScrollClipLayerId(root_clip->id()); |
5227 pinch->SetIsContainerForFixedPositionLayers(true); | 5233 pinch->SetIsContainerForFixedPositionLayers(true); |
5228 page_scale_layer->AddChild(pinch); | 5234 page_scale_layer->AddChild(pinch); |
5229 root_clip->AddChild(page_scale_layer); | 5235 root_clip->AddChild(page_scale_layer); |
5230 | 5236 |
5231 scoped_ptr<FakeRecordingSource> recording(new FakeRecordingSource); | 5237 std::unique_ptr<FakeRecordingSource> recording(new FakeRecordingSource); |
5232 recording->SetPlaybackAllowedEvent(&playback_allowed_event_); | 5238 recording->SetPlaybackAllowedEvent(&playback_allowed_event_); |
5233 scoped_refptr<FakePictureLayer> layer = | 5239 scoped_refptr<FakePictureLayer> layer = |
5234 FakePictureLayer::CreateWithRecordingSource(&client_, | 5240 FakePictureLayer::CreateWithRecordingSource(&client_, |
5235 std::move(recording)); | 5241 std::move(recording)); |
5236 layer->SetBounds(gfx::Size(500, 500)); | 5242 layer->SetBounds(gfx::Size(500, 500)); |
5237 layer->SetContentsOpaque(true); | 5243 layer->SetContentsOpaque(true); |
5238 // Avoid LCD text on the layer so we don't cause extra commits when we | 5244 // Avoid LCD text on the layer so we don't cause extra commits when we |
5239 // pinch. | 5245 // pinch. |
5240 pinch->AddChild(layer); | 5246 pinch->AddChild(layer); |
5241 | 5247 |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5391 base::WaitableEvent playback_allowed_event_; | 5397 base::WaitableEvent playback_allowed_event_; |
5392 }; | 5398 }; |
5393 | 5399 |
5394 // This test does pinching on the impl side which is not supported in single | 5400 // This test does pinching on the impl side which is not supported in single |
5395 // thread. | 5401 // thread. |
5396 MULTI_THREAD_TEST_F(LayerTreeHostTestCrispUpAfterPinchEnds); | 5402 MULTI_THREAD_TEST_F(LayerTreeHostTestCrispUpAfterPinchEnds); |
5397 | 5403 |
5398 class LayerTreeHostTestCrispUpAfterPinchEndsWithOneCopy | 5404 class LayerTreeHostTestCrispUpAfterPinchEndsWithOneCopy |
5399 : public LayerTreeHostTestCrispUpAfterPinchEnds { | 5405 : public LayerTreeHostTestCrispUpAfterPinchEnds { |
5400 protected: | 5406 protected: |
5401 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { | 5407 std::unique_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { |
5402 scoped_ptr<TestWebGraphicsContext3D> context3d = | 5408 std::unique_ptr<TestWebGraphicsContext3D> context3d = |
5403 TestWebGraphicsContext3D::Create(); | 5409 TestWebGraphicsContext3D::Create(); |
5404 context3d->set_support_image(true); | 5410 context3d->set_support_image(true); |
5405 context3d->set_support_sync_query(true); | 5411 context3d->set_support_sync_query(true); |
5406 #if defined(OS_MACOSX) | 5412 #if defined(OS_MACOSX) |
5407 context3d->set_support_texture_rectangle(true); | 5413 context3d->set_support_texture_rectangle(true); |
5408 #endif | 5414 #endif |
5409 | 5415 |
5410 if (delegating_renderer()) | 5416 if (delegating_renderer()) |
5411 return FakeOutputSurface::CreateDelegating3d(std::move(context3d)); | 5417 return FakeOutputSurface::CreateDelegating3d(std::move(context3d)); |
5412 else | 5418 else |
(...skipping 13 matching lines...) Expand all Loading... |
5426 settings->gpu_rasterization_forced = true; | 5432 settings->gpu_rasterization_forced = true; |
5427 } | 5433 } |
5428 | 5434 |
5429 void SetupTree() override { | 5435 void SetupTree() override { |
5430 client_.set_fill_with_nonsolid_color(true); | 5436 client_.set_fill_with_nonsolid_color(true); |
5431 | 5437 |
5432 scoped_refptr<Layer> root = Layer::Create(); | 5438 scoped_refptr<Layer> root = Layer::Create(); |
5433 root->SetBounds(gfx::Size(500, 500)); | 5439 root->SetBounds(gfx::Size(500, 500)); |
5434 client_.set_bounds(root->bounds()); | 5440 client_.set_bounds(root->bounds()); |
5435 | 5441 |
5436 scoped_ptr<FakeRecordingSource> recording(new FakeRecordingSource); | 5442 std::unique_ptr<FakeRecordingSource> recording(new FakeRecordingSource); |
5437 scoped_refptr<FakePictureLayer> layer = | 5443 scoped_refptr<FakePictureLayer> layer = |
5438 FakePictureLayer::CreateWithRecordingSource(&client_, | 5444 FakePictureLayer::CreateWithRecordingSource(&client_, |
5439 std::move(recording)); | 5445 std::move(recording)); |
5440 layer->SetBounds(gfx::Size(500, 500)); | 5446 layer->SetBounds(gfx::Size(500, 500)); |
5441 layer->SetContentsOpaque(true); | 5447 layer->SetContentsOpaque(true); |
5442 root->AddChild(layer); | 5448 root->AddChild(layer); |
5443 | 5449 |
5444 layer_tree_host()->SetRootLayer(root); | 5450 layer_tree_host()->SetRootLayer(root); |
5445 LayerTreeHostTest::SetupTree(); | 5451 LayerTreeHostTest::SetupTree(); |
5446 client_.set_bounds(root->bounds()); | 5452 client_.set_bounds(root->bounds()); |
(...skipping 20 matching lines...) Expand all Loading... |
5467 GpuRasterizationRasterizesBorderTiles() : viewport_size_(1024, 2048) {} | 5473 GpuRasterizationRasterizesBorderTiles() : viewport_size_(1024, 2048) {} |
5468 | 5474 |
5469 void InitializeSettings(LayerTreeSettings* settings) override { | 5475 void InitializeSettings(LayerTreeSettings* settings) override { |
5470 settings->gpu_rasterization_enabled = true; | 5476 settings->gpu_rasterization_enabled = true; |
5471 settings->gpu_rasterization_forced = true; | 5477 settings->gpu_rasterization_forced = true; |
5472 } | 5478 } |
5473 | 5479 |
5474 void SetupTree() override { | 5480 void SetupTree() override { |
5475 client_.set_fill_with_nonsolid_color(true); | 5481 client_.set_fill_with_nonsolid_color(true); |
5476 | 5482 |
5477 scoped_ptr<FakeRecordingSource> recording(new FakeRecordingSource); | 5483 std::unique_ptr<FakeRecordingSource> recording(new FakeRecordingSource); |
5478 scoped_refptr<FakePictureLayer> root = | 5484 scoped_refptr<FakePictureLayer> root = |
5479 FakePictureLayer::CreateWithRecordingSource(&client_, | 5485 FakePictureLayer::CreateWithRecordingSource(&client_, |
5480 std::move(recording)); | 5486 std::move(recording)); |
5481 root->SetBounds(gfx::Size(10000, 10000)); | 5487 root->SetBounds(gfx::Size(10000, 10000)); |
5482 client_.set_bounds(root->bounds()); | 5488 client_.set_bounds(root->bounds()); |
5483 root->SetContentsOpaque(true); | 5489 root->SetContentsOpaque(true); |
5484 | 5490 |
5485 layer_tree_host()->SetRootLayer(root); | 5491 layer_tree_host()->SetRootLayer(root); |
5486 LayerTreeHostTest::SetupTree(); | 5492 LayerTreeHostTest::SetupTree(); |
5487 layer_tree_host()->SetViewportSize(viewport_size_); | 5493 layer_tree_host()->SetViewportSize(viewport_size_); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5523 scoped_refptr<Layer> page_scale_layer = Layer::Create(); | 5529 scoped_refptr<Layer> page_scale_layer = Layer::Create(); |
5524 page_scale_layer->SetBounds(gfx::Size(500, 500)); | 5530 page_scale_layer->SetBounds(gfx::Size(500, 500)); |
5525 | 5531 |
5526 scoped_refptr<Layer> pinch = Layer::Create(); | 5532 scoped_refptr<Layer> pinch = Layer::Create(); |
5527 pinch->SetBounds(gfx::Size(500, 500)); | 5533 pinch->SetBounds(gfx::Size(500, 500)); |
5528 pinch->SetScrollClipLayerId(root_clip->id()); | 5534 pinch->SetScrollClipLayerId(root_clip->id()); |
5529 pinch->SetIsContainerForFixedPositionLayers(true); | 5535 pinch->SetIsContainerForFixedPositionLayers(true); |
5530 page_scale_layer->AddChild(pinch); | 5536 page_scale_layer->AddChild(pinch); |
5531 root_clip->AddChild(page_scale_layer); | 5537 root_clip->AddChild(page_scale_layer); |
5532 | 5538 |
5533 scoped_ptr<FakeRecordingSource> recording(new FakeRecordingSource); | 5539 std::unique_ptr<FakeRecordingSource> recording(new FakeRecordingSource); |
5534 recording->SetPlaybackAllowedEvent(&playback_allowed_event_); | 5540 recording->SetPlaybackAllowedEvent(&playback_allowed_event_); |
5535 scoped_refptr<FakePictureLayer> layer = | 5541 scoped_refptr<FakePictureLayer> layer = |
5536 FakePictureLayer::CreateWithRecordingSource(&client_, | 5542 FakePictureLayer::CreateWithRecordingSource(&client_, |
5537 std::move(recording)); | 5543 std::move(recording)); |
5538 layer->SetBounds(gfx::Size(500, 500)); | 5544 layer->SetBounds(gfx::Size(500, 500)); |
5539 layer->SetContentsOpaque(true); | 5545 layer->SetContentsOpaque(true); |
5540 // Avoid LCD text on the layer so we don't cause extra commits when we | 5546 // Avoid LCD text on the layer so we don't cause extra commits when we |
5541 // pinch. | 5547 // pinch. |
5542 pinch->AddChild(layer); | 5548 pinch->AddChild(layer); |
5543 | 5549 |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5778 | 5784 |
5779 // Since in reality, the events will be read by LayerTreeHost during commit, | 5785 // Since in reality, the events will be read by LayerTreeHost during commit, |
5780 // we check the requests here to ensure that they are correct at the next | 5786 // we check the requests here to ensure that they are correct at the next |
5781 // commit time (as opposed to checking in DrawLayers for instance). | 5787 // commit time (as opposed to checking in DrawLayers for instance). |
5782 // TODO(vmpstr): Change this to read things from the main thread when this | 5788 // TODO(vmpstr): Change this to read things from the main thread when this |
5783 // information is propagated to the main thread (not yet implemented). | 5789 // information is propagated to the main thread (not yet implemented). |
5784 FrameTimingTracker* tracker = host_impl->frame_timing_tracker(); | 5790 FrameTimingTracker* tracker = host_impl->frame_timing_tracker(); |
5785 | 5791 |
5786 // Check composite events. | 5792 // Check composite events. |
5787 { | 5793 { |
5788 scoped_ptr<FrameTimingTracker::CompositeTimingSet> timing_set = | 5794 std::unique_ptr<FrameTimingTracker::CompositeTimingSet> timing_set = |
5789 tracker->GroupCompositeCountsByRectId(); | 5795 tracker->GroupCompositeCountsByRectId(); |
5790 EXPECT_EQ(1u, timing_set->size()); | 5796 EXPECT_EQ(1u, timing_set->size()); |
5791 auto rect_1_it = timing_set->find(1); | 5797 auto rect_1_it = timing_set->find(1); |
5792 EXPECT_TRUE(rect_1_it != timing_set->end()); | 5798 EXPECT_TRUE(rect_1_it != timing_set->end()); |
5793 const auto& timing_events = rect_1_it->second; | 5799 const auto& timing_events = rect_1_it->second; |
5794 EXPECT_EQ(1u, timing_events.size()); | 5800 EXPECT_EQ(1u, timing_events.size()); |
5795 EXPECT_EQ(host_impl->active_tree()->source_frame_number(), | 5801 EXPECT_EQ(host_impl->active_tree()->source_frame_number(), |
5796 timing_events[0].frame_id); | 5802 timing_events[0].frame_id); |
5797 EXPECT_GT(timing_events[0].timestamp, base::TimeTicks()); | 5803 EXPECT_GT(timing_events[0].timestamp, base::TimeTicks()); |
5798 } | 5804 } |
5799 | 5805 |
5800 // Check main frame events. | 5806 // Check main frame events. |
5801 { | 5807 { |
5802 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> timing_set = | 5808 std::unique_ptr<FrameTimingTracker::MainFrameTimingSet> timing_set = |
5803 tracker->GroupMainFrameCountsByRectId(); | 5809 tracker->GroupMainFrameCountsByRectId(); |
5804 EXPECT_EQ(2u, timing_set->size()); | 5810 EXPECT_EQ(2u, timing_set->size()); |
5805 auto rect_1_it = timing_set->find(1); | 5811 auto rect_1_it = timing_set->find(1); |
5806 EXPECT_TRUE(rect_1_it != timing_set->end()); | 5812 EXPECT_TRUE(rect_1_it != timing_set->end()); |
5807 const auto& timing_events = rect_1_it->second; | 5813 const auto& timing_events = rect_1_it->second; |
5808 EXPECT_EQ(1u, timing_events.size()); | 5814 EXPECT_EQ(1u, timing_events.size()); |
5809 EXPECT_EQ(host_impl->active_tree()->source_frame_number(), | 5815 EXPECT_EQ(host_impl->active_tree()->source_frame_number(), |
5810 timing_events[0].frame_id); | 5816 timing_events[0].frame_id); |
5811 EXPECT_GT(timing_events[0].timestamp, base::TimeTicks()); | 5817 EXPECT_GT(timing_events[0].timestamp, base::TimeTicks()); |
5812 EXPECT_GT(timing_events[0].end_time, timing_events[0].timestamp); | 5818 EXPECT_GT(timing_events[0].end_time, timing_events[0].timestamp); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5917 class LayerTreeHostTestUpdateCopyRequests : public LayerTreeHostTest { | 5923 class LayerTreeHostTestUpdateCopyRequests : public LayerTreeHostTest { |
5918 protected: | 5924 protected: |
5919 void SetupTree() override { | 5925 void SetupTree() override { |
5920 root = Layer::Create(); | 5926 root = Layer::Create(); |
5921 child = Layer::Create(); | 5927 child = Layer::Create(); |
5922 root->AddChild(child); | 5928 root->AddChild(child); |
5923 layer_tree_host()->SetRootLayer(root); | 5929 layer_tree_host()->SetRootLayer(root); |
5924 LayerTreeHostTest::SetupTree(); | 5930 LayerTreeHostTest::SetupTree(); |
5925 } | 5931 } |
5926 | 5932 |
5927 static void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {} | 5933 static void CopyOutputCallback(std::unique_ptr<CopyOutputResult> result) {} |
5928 | 5934 |
5929 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5935 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5930 | 5936 |
5931 void WillCommit() override { | 5937 void WillCommit() override { |
5932 switch (layer_tree_host()->source_frame_number()) { | 5938 switch (layer_tree_host()->source_frame_number()) { |
5933 case 1: | 5939 case 1: |
5934 EXPECT_GT(root->num_copy_requests_in_target_subtree(), 0); | 5940 EXPECT_GT(root->num_copy_requests_in_target_subtree(), 0); |
5935 break; | 5941 break; |
5936 } | 5942 } |
5937 } | 5943 } |
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6618 EndTest(); | 6624 EndTest(); |
6619 } | 6625 } |
6620 | 6626 |
6621 void AfterTest() override {} | 6627 void AfterTest() override {} |
6622 }; | 6628 }; |
6623 | 6629 |
6624 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestPaintedDeviceScaleFactor); | 6630 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestPaintedDeviceScaleFactor); |
6625 | 6631 |
6626 } // namespace | 6632 } // namespace |
6627 } // namespace cc | 6633 } // namespace cc |
OLD | NEW |