| 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" |
| 11 #include "cc/resources/transferable_resource.h" | 11 #include "cc/resources/transferable_resource.h" |
| 12 #include "cc/trees/layer_tree_settings.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 14 |
| 14 namespace cc { | 15 namespace cc { |
| 15 namespace { | 16 namespace { |
| 16 | 17 |
| 17 class DelegatedFrameProviderTest | 18 class DelegatedFrameProviderTest |
| 18 : public testing::Test, | 19 : public testing::Test, |
| 19 public DelegatedFrameResourceCollectionClient { | 20 public DelegatedFrameResourceCollectionClient { |
| 20 protected: | 21 protected: |
| 21 DelegatedFrameProviderTest() : resources_available_(false) {} | 22 DelegatedFrameProviderTest() : resources_available_(false) {} |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 | 83 |
| 83 void SetFrameProvider(scoped_ptr<DelegatedFrameData> frame_data) { | 84 void SetFrameProvider(scoped_ptr<DelegatedFrameData> frame_data) { |
| 84 frame_provider_ = | 85 frame_provider_ = |
| 85 new DelegatedFrameProvider(resource_collection_, frame_data.Pass()); | 86 new DelegatedFrameProvider(resource_collection_, frame_data.Pass()); |
| 86 } | 87 } |
| 87 | 88 |
| 88 scoped_refptr<DelegatedFrameResourceCollection> resource_collection_; | 89 scoped_refptr<DelegatedFrameResourceCollection> resource_collection_; |
| 89 scoped_refptr<DelegatedFrameProvider> frame_provider_; | 90 scoped_refptr<DelegatedFrameProvider> frame_provider_; |
| 90 bool resources_available_; | 91 bool resources_available_; |
| 91 ReturnedResourceArray resources_; | 92 ReturnedResourceArray resources_; |
| 93 LayerSettings layer_settings_; |
| 92 }; | 94 }; |
| 93 | 95 |
| 94 TEST_F(DelegatedFrameProviderTest, SameResources) { | 96 TEST_F(DelegatedFrameProviderTest, SameResources) { |
| 95 scoped_ptr<DelegatedFrameData> frame = | 97 scoped_ptr<DelegatedFrameData> frame = |
| 96 CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); | 98 CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); |
| 97 AddTextureQuad(frame.get(), 444); | 99 AddTextureQuad(frame.get(), 444); |
| 98 AddTransferableResource(frame.get(), 444); | 100 AddTransferableResource(frame.get(), 444); |
| 99 SetFrameProvider(frame.Pass()); | 101 SetFrameProvider(frame.Pass()); |
| 100 | 102 |
| 101 frame = CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); | 103 frame = CreateFrameData(gfx::Rect(1, 1), gfx::Rect(1, 1)); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 AddTextureQuad(frame.get(), 444); | 147 AddTextureQuad(frame.get(), 444); |
| 146 AddTransferableResource(frame.get(), 444); | 148 AddTransferableResource(frame.get(), 444); |
| 147 | 149 |
| 148 TransferableResourceArray reffed = frame->resource_list; | 150 TransferableResourceArray reffed = frame->resource_list; |
| 149 ReturnedResourceArray returned; | 151 ReturnedResourceArray returned; |
| 150 TransferableResource::ReturnResources(reffed, &returned); | 152 TransferableResource::ReturnResources(reffed, &returned); |
| 151 | 153 |
| 152 SetFrameProvider(frame.Pass()); | 154 SetFrameProvider(frame.Pass()); |
| 153 | 155 |
| 154 scoped_refptr<DelegatedRendererLayer> observer1 = | 156 scoped_refptr<DelegatedRendererLayer> observer1 = |
| 155 DelegatedRendererLayer::Create(frame_provider_); | 157 DelegatedRendererLayer::Create(layer_settings_, frame_provider_); |
| 156 scoped_refptr<DelegatedRendererLayer> observer2 = | 158 scoped_refptr<DelegatedRendererLayer> observer2 = |
| 157 DelegatedRendererLayer::Create(frame_provider_); | 159 DelegatedRendererLayer::Create(layer_settings_, frame_provider_); |
| 158 | 160 |
| 159 gfx::RectF damage; | 161 gfx::RectF damage; |
| 160 | 162 |
| 161 // Both observers get a full frame of damage on the first request. | 163 // Both observers get a full frame of damage on the first request. |
| 162 frame_provider_->GetFrameDataAndRefResources(observer1.get(), &damage); | 164 frame_provider_->GetFrameDataAndRefResources(observer1.get(), &damage); |
| 163 EXPECT_EQ(gfx::RectF(5.f, 5.f).ToString(), damage.ToString()); | 165 EXPECT_EQ(gfx::RectF(5.f, 5.f).ToString(), damage.ToString()); |
| 164 frame_provider_->GetFrameDataAndRefResources(observer2.get(), &damage); | 166 frame_provider_->GetFrameDataAndRefResources(observer2.get(), &damage); |
| 165 EXPECT_EQ(gfx::RectF(5.f, 5.f).ToString(), damage.ToString()); | 167 EXPECT_EQ(gfx::RectF(5.f, 5.f).ToString(), damage.ToString()); |
| 166 | 168 |
| 167 // And both get no damage on the 2nd request. This adds a second ref to the | 169 // And both get no damage on the 2nd request. This adds a second ref to the |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 AddTextureQuad(frame.get(), 444); | 205 AddTextureQuad(frame.get(), 444); |
| 204 AddTransferableResource(frame.get(), 444); | 206 AddTransferableResource(frame.get(), 444); |
| 205 | 207 |
| 206 TransferableResourceArray reffed = frame->resource_list; | 208 TransferableResourceArray reffed = frame->resource_list; |
| 207 ReturnedResourceArray returned; | 209 ReturnedResourceArray returned; |
| 208 TransferableResource::ReturnResources(reffed, &returned); | 210 TransferableResource::ReturnResources(reffed, &returned); |
| 209 | 211 |
| 210 SetFrameProvider(frame.Pass()); | 212 SetFrameProvider(frame.Pass()); |
| 211 | 213 |
| 212 scoped_refptr<DelegatedRendererLayer> observer1 = | 214 scoped_refptr<DelegatedRendererLayer> observer1 = |
| 213 DelegatedRendererLayer::Create(frame_provider_); | 215 DelegatedRendererLayer::Create(layer_settings_, frame_provider_); |
| 214 scoped_refptr<DelegatedRendererLayer> observer2 = | 216 scoped_refptr<DelegatedRendererLayer> observer2 = |
| 215 DelegatedRendererLayer::Create(frame_provider_); | 217 DelegatedRendererLayer::Create(layer_settings_, frame_provider_); |
| 216 | 218 |
| 217 gfx::RectF damage; | 219 gfx::RectF damage; |
| 218 | 220 |
| 219 // Take a ref on each observer. | 221 // Take a ref on each observer. |
| 220 frame_provider_->GetFrameDataAndRefResources(observer1.get(), &damage); | 222 frame_provider_->GetFrameDataAndRefResources(observer1.get(), &damage); |
| 221 frame_provider_->GetFrameDataAndRefResources(observer2.get(), &damage); | 223 frame_provider_->GetFrameDataAndRefResources(observer2.get(), &damage); |
| 222 | 224 |
| 223 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 225 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 224 | 226 |
| 225 // Release both refs. But there's still a ref held in the frame | 227 // Release both refs. But there's still a ref held in the frame |
| (...skipping 19 matching lines...) Expand all Loading... |
| 245 AddTextureQuad(frame.get(), 444); | 247 AddTextureQuad(frame.get(), 444); |
| 246 AddTransferableResource(frame.get(), 444); | 248 AddTransferableResource(frame.get(), 444); |
| 247 | 249 |
| 248 TransferableResourceArray reffed = frame->resource_list; | 250 TransferableResourceArray reffed = frame->resource_list; |
| 249 ReturnedResourceArray returned; | 251 ReturnedResourceArray returned; |
| 250 TransferableResource::ReturnResources(reffed, &returned); | 252 TransferableResource::ReturnResources(reffed, &returned); |
| 251 | 253 |
| 252 SetFrameProvider(frame.Pass()); | 254 SetFrameProvider(frame.Pass()); |
| 253 | 255 |
| 254 scoped_refptr<DelegatedRendererLayer> observer1 = | 256 scoped_refptr<DelegatedRendererLayer> observer1 = |
| 255 DelegatedRendererLayer::Create(frame_provider_); | 257 DelegatedRendererLayer::Create(layer_settings_, frame_provider_); |
| 256 scoped_refptr<DelegatedRendererLayer> observer2 = | 258 scoped_refptr<DelegatedRendererLayer> observer2 = |
| 257 DelegatedRendererLayer::Create(frame_provider_); | 259 DelegatedRendererLayer::Create(layer_settings_, frame_provider_); |
| 258 | 260 |
| 259 gfx::RectF damage; | 261 gfx::RectF damage; |
| 260 | 262 |
| 261 // Take a ref on each observer. | 263 // Take a ref on each observer. |
| 262 frame_provider_->GetFrameDataAndRefResources(observer1.get(), &damage); | 264 frame_provider_->GetFrameDataAndRefResources(observer1.get(), &damage); |
| 263 frame_provider_->GetFrameDataAndRefResources(observer2.get(), &damage); | 265 frame_provider_->GetFrameDataAndRefResources(observer2.get(), &damage); |
| 264 | 266 |
| 265 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 267 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 266 | 268 |
| 267 // Release both refs. But there's still a ref held in the frame | 269 // Release both refs. But there's still a ref held in the frame |
| (...skipping 21 matching lines...) Expand all Loading... |
| 289 AddTextureQuad(frame.get(), 444); | 291 AddTextureQuad(frame.get(), 444); |
| 290 AddTransferableResource(frame.get(), 444); | 292 AddTransferableResource(frame.get(), 444); |
| 291 | 293 |
| 292 TransferableResourceArray reffed = frame->resource_list; | 294 TransferableResourceArray reffed = frame->resource_list; |
| 293 ReturnedResourceArray returned; | 295 ReturnedResourceArray returned; |
| 294 TransferableResource::ReturnResources(reffed, &returned); | 296 TransferableResource::ReturnResources(reffed, &returned); |
| 295 | 297 |
| 296 SetFrameProvider(frame.Pass()); | 298 SetFrameProvider(frame.Pass()); |
| 297 | 299 |
| 298 scoped_refptr<DelegatedRendererLayer> observer1 = | 300 scoped_refptr<DelegatedRendererLayer> observer1 = |
| 299 DelegatedRendererLayer::Create(frame_provider_); | 301 DelegatedRendererLayer::Create(layer_settings_, frame_provider_); |
| 300 scoped_refptr<DelegatedRendererLayer> observer2 = | 302 scoped_refptr<DelegatedRendererLayer> observer2 = |
| 301 DelegatedRendererLayer::Create(frame_provider_); | 303 DelegatedRendererLayer::Create(layer_settings_, frame_provider_); |
| 302 | 304 |
| 303 gfx::RectF damage; | 305 gfx::RectF damage; |
| 304 | 306 |
| 305 // Both observers get a full frame of damage on the first request. | 307 // Both observers get a full frame of damage on the first request. |
| 306 frame_provider_->GetFrameDataAndRefResources(observer1.get(), &damage); | 308 frame_provider_->GetFrameDataAndRefResources(observer1.get(), &damage); |
| 307 EXPECT_EQ(gfx::RectF(5.f, 5.f).ToString(), damage.ToString()); | 309 EXPECT_EQ(gfx::RectF(5.f, 5.f).ToString(), damage.ToString()); |
| 308 frame_provider_->GetFrameDataAndRefResources(observer2.get(), &damage); | 310 frame_provider_->GetFrameDataAndRefResources(observer2.get(), &damage); |
| 309 EXPECT_EQ(gfx::RectF(5.f, 5.f).ToString(), damage.ToString()); | 311 EXPECT_EQ(gfx::RectF(5.f, 5.f).ToString(), damage.ToString()); |
| 310 | 312 |
| 311 // And both get no damage on the 2nd request. | 313 // And both get no damage on the 2nd request. |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 | 390 |
| 389 frame_provider_ = nullptr; | 391 frame_provider_ = nullptr; |
| 390 | 392 |
| 391 // Nothing is returned twice. | 393 // Nothing is returned twice. |
| 392 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); | 394 EXPECT_FALSE(ReturnAndResetResourcesAvailable()); |
| 393 EXPECT_EQ(0u, resources_.size()); | 395 EXPECT_EQ(0u, resources_.size()); |
| 394 } | 396 } |
| 395 | 397 |
| 396 } // namespace | 398 } // namespace |
| 397 } // namespace cc | 399 } // namespace cc |
| OLD | NEW |