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 |