| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/layers/delegated_frame_provider.h" | 5 #include "cc/layers/delegated_frame_provider.h" |
| 6 #include "cc/layers/delegated_frame_resource_collection.h" | 6 #include "cc/layers/delegated_frame_resource_collection.h" |
| 7 #include "cc/layers/delegated_renderer_layer.h" | 7 #include "cc/layers/delegated_renderer_layer.h" |
| 8 #include "cc/output/delegated_frame_data.h" | 8 #include "cc/output/delegated_frame_data.h" |
| 9 #include "cc/quads/texture_draw_quad.h" | 9 #include "cc/quads/texture_draw_quad.h" |
| 10 #include "cc/resources/returned_resource.h" | 10 #include "cc/resources/returned_resource.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 SK_ColorTRANSPARENT, | 60 SK_ColorTRANSPARENT, |
| 61 vertex_opacity, | 61 vertex_opacity, |
| 62 false); | 62 false); |
| 63 } | 63 } |
| 64 | 64 |
| 65 virtual void SetUp() override { | 65 virtual void SetUp() override { |
| 66 resource_collection_ = new DelegatedFrameResourceCollection; | 66 resource_collection_ = new DelegatedFrameResourceCollection; |
| 67 resource_collection_->SetClient(this); | 67 resource_collection_->SetClient(this); |
| 68 } | 68 } |
| 69 | 69 |
| 70 virtual void TearDown() override { resource_collection_->SetClient(NULL); } | 70 virtual void TearDown() override { resource_collection_->SetClient(nullptr); } |
| 71 | 71 |
| 72 virtual void UnusedResourcesAreAvailable() override { | 72 virtual void UnusedResourcesAreAvailable() override { |
| 73 resources_available_ = true; | 73 resources_available_ = true; |
| 74 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources_); | 74 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources_); |
| 75 } | 75 } |
| 76 | 76 |
| 77 bool ReturnAndResetResourcesAvailable() { | 77 bool ReturnAndResetResourcesAvailable() { |
| 78 bool r = resources_available_; | 78 bool r = resources_available_; |
| 79 resources_available_ = false; | 79 resources_available_ = false; |
| 80 return r; | 80 return r; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 99 SetFrameProvider(frame.Pass()); | 99 SetFrameProvider(frame.Pass()); |
| 100 | 100 |
| 101 frame = CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); | 101 frame = CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); |
| 102 AddTextureQuad(frame.get(), 444); | 102 AddTextureQuad(frame.get(), 444); |
| 103 AddTransferableResource(frame.get(), 444); | 103 AddTransferableResource(frame.get(), 444); |
| 104 SetFrameProvider(frame.Pass()); | 104 SetFrameProvider(frame.Pass()); |
| 105 | 105 |
| 106 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 106 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 107 EXPECT_EQ(0u, resources_.size()); | 107 EXPECT_EQ(0u, resources_.size()); |
| 108 | 108 |
| 109 frame_provider_ = NULL; | 109 frame_provider_ = nullptr; |
| 110 | 110 |
| 111 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); | 111 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); |
| 112 EXPECT_EQ(1u, resources_.size()); | 112 EXPECT_EQ(1u, resources_.size()); |
| 113 EXPECT_EQ(444u, resources_[0].id); | 113 EXPECT_EQ(444u, resources_[0].id); |
| 114 } | 114 } |
| 115 | 115 |
| 116 TEST_F(DelegatedFrameProviderTest, ReplaceResources) { | 116 TEST_F(DelegatedFrameProviderTest, ReplaceResources) { |
| 117 scoped_ptr<DelegatedFrameData> frame = | 117 scoped_ptr<DelegatedFrameData> frame = |
| 118 CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); | 118 CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); |
| 119 AddTextureQuad(frame.get(), 444); | 119 AddTextureQuad(frame.get(), 444); |
| 120 AddTransferableResource(frame.get(), 444); | 120 AddTransferableResource(frame.get(), 444); |
| 121 SetFrameProvider(frame.Pass()); | 121 SetFrameProvider(frame.Pass()); |
| 122 | 122 |
| 123 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 123 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 124 | 124 |
| 125 frame = CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); | 125 frame = CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); |
| 126 AddTextureQuad(frame.get(), 555); | 126 AddTextureQuad(frame.get(), 555); |
| 127 AddTransferableResource(frame.get(), 555); | 127 AddTransferableResource(frame.get(), 555); |
| 128 SetFrameProvider(frame.Pass()); | 128 SetFrameProvider(frame.Pass()); |
| 129 | 129 |
| 130 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); | 130 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); |
| 131 EXPECT_EQ(1u, resources_.size()); | 131 EXPECT_EQ(1u, resources_.size()); |
| 132 EXPECT_EQ(444u, resources_[0].id); | 132 EXPECT_EQ(444u, resources_[0].id); |
| 133 resources_.clear(); | 133 resources_.clear(); |
| 134 | 134 |
| 135 frame_provider_ = NULL; | 135 frame_provider_ = nullptr; |
| 136 | 136 |
| 137 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); | 137 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); |
| 138 EXPECT_EQ(1u, resources_.size()); | 138 EXPECT_EQ(1u, resources_.size()); |
| 139 EXPECT_EQ(555u, resources_[0].id); | 139 EXPECT_EQ(555u, resources_[0].id); |
| 140 } | 140 } |
| 141 | 141 |
| 142 TEST_F(DelegatedFrameProviderTest, RefResources) { | 142 TEST_F(DelegatedFrameProviderTest, RefResources) { |
| 143 scoped_ptr<DelegatedFrameData> frame = | 143 scoped_ptr<DelegatedFrameData> frame = |
| 144 CreateFrameData(gfx::Rect(5, 5), gfx::Rect(2, 2)); | 144 CreateFrameData(gfx::Rect(5, 5), gfx::Rect(2, 2)); |
| 145 AddTextureQuad(frame.get(), 444); | 145 AddTextureQuad(frame.get(), 444); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 265 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 266 | 266 |
| 267 // Release both refs. But there's still a ref held in the frame | 267 // Release both refs. But there's still a ref held in the frame |
| 268 // provider itself. | 268 // provider itself. |
| 269 frame_provider_->UnrefResourcesOnMainThread(returned); | 269 frame_provider_->UnrefResourcesOnMainThread(returned); |
| 270 frame_provider_->UnrefResourcesOnMainThread(returned); | 270 frame_provider_->UnrefResourcesOnMainThread(returned); |
| 271 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 271 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 272 | 272 |
| 273 // Releasing all references to the frame provider will release | 273 // Releasing all references to the frame provider will release |
| 274 // the frame. | 274 // the frame. |
| 275 observer1 = NULL; | 275 observer1 = nullptr; |
| 276 observer2 = NULL; | 276 observer2 = nullptr; |
| 277 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 277 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 278 | 278 |
| 279 frame_provider_ = NULL; | 279 frame_provider_ = nullptr; |
| 280 | 280 |
| 281 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); | 281 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); |
| 282 EXPECT_EQ(1u, resources_.size()); | 282 EXPECT_EQ(1u, resources_.size()); |
| 283 EXPECT_EQ(444u, resources_[0].id); | 283 EXPECT_EQ(444u, resources_[0].id); |
| 284 } | 284 } |
| 285 | 285 |
| 286 TEST_F(DelegatedFrameProviderTest, Damage) { | 286 TEST_F(DelegatedFrameProviderTest, Damage) { |
| 287 scoped_ptr<DelegatedFrameData> frame = | 287 scoped_ptr<DelegatedFrameData> frame = |
| 288 CreateFrameData(gfx::Rect(5, 5), gfx::Rect(2, 2)); | 288 CreateFrameData(gfx::Rect(5, 5), gfx::Rect(2, 2)); |
| 289 AddTextureQuad(frame.get(), 444); | 289 AddTextureQuad(frame.get(), 444); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 AddTransferableResource(frame.get(), 444); | 379 AddTransferableResource(frame.get(), 444); |
| 380 SetFrameProvider(frame.Pass()); | 380 SetFrameProvider(frame.Pass()); |
| 381 | 381 |
| 382 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 382 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 383 | 383 |
| 384 // Lose all the resources. | 384 // Lose all the resources. |
| 385 EXPECT_TRUE(resource_collection_->LoseAllResources()); | 385 EXPECT_TRUE(resource_collection_->LoseAllResources()); |
| 386 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); | 386 EXPECT_TRUE(ReturnAndResetResourcesAvailable()); |
| 387 resources_.clear(); | 387 resources_.clear(); |
| 388 | 388 |
| 389 frame_provider_ = NULL; | 389 frame_provider_ = nullptr; |
| 390 | 390 |
| 391 // Nothing is returned twice. | 391 // Nothing is returned twice. |
| 392 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 392 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 393 EXPECT_EQ(0u, resources_.size()); | 393 EXPECT_EQ(0u, resources_.size()); |
| 394 } | 394 } |
| 395 | 395 |
| 396 } // namespace | 396 } // namespace |
| 397 } // namespace cc | 397 } // namespace cc |
| OLD | NEW |