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