OLD | NEW |
---|---|
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/texture_layer.h" | 5 #include "cc/layers/texture_layer.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "cc/base/thread.h" | 10 #include "cc/base/thread.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 | 198 |
199 // Calling SetTextureId can call AcquireLayerTextures. | 199 // Calling SetTextureId can call AcquireLayerTextures. |
200 EXPECT_CALL(*layer_tree_host_, AcquireLayerTextures()).Times(AnyNumber()); | 200 EXPECT_CALL(*layer_tree_host_, AcquireLayerTextures()).Times(AnyNumber()); |
201 } | 201 } |
202 | 202 |
203 class MockMailboxCallback { | 203 class MockMailboxCallback { |
204 public: | 204 public: |
205 MOCK_METHOD3(Release, void(const std::string& mailbox, | 205 MOCK_METHOD3(Release, void(const std::string& mailbox, |
206 unsigned sync_point, | 206 unsigned sync_point, |
207 bool lost_resource)); | 207 bool lost_resource)); |
208 MOCK_METHOD3(Release2, void(base::SharedMemory* shared_memory, | |
209 unsigned sync_point, | |
210 bool lost_resource)); | |
208 }; | 211 }; |
209 | 212 |
210 struct CommonMailboxObjects { | 213 struct CommonMailboxObjects { |
211 CommonMailboxObjects() | 214 CommonMailboxObjects() |
212 : mailbox_name1_(64, '1'), | 215 : mailbox_name1_(64, '1'), |
213 mailbox_name2_(64, '2'), | 216 mailbox_name2_(64, '2'), |
214 sync_point1_(1), | 217 sync_point1_(1), |
215 sync_point2_(2) { | 218 sync_point2_(2), |
219 shared_memory_(new base::SharedMemory) { | |
216 release_mailbox1_ = base::Bind(&MockMailboxCallback::Release, | 220 release_mailbox1_ = base::Bind(&MockMailboxCallback::Release, |
217 base::Unretained(&mock_callback_), | 221 base::Unretained(&mock_callback_), |
218 mailbox_name1_); | 222 mailbox_name1_); |
219 release_mailbox2_ = base::Bind(&MockMailboxCallback::Release, | 223 release_mailbox2_ = base::Bind(&MockMailboxCallback::Release, |
220 base::Unretained(&mock_callback_), | 224 base::Unretained(&mock_callback_), |
221 mailbox_name2_); | 225 mailbox_name2_); |
222 gpu::Mailbox m1; | 226 gpu::Mailbox m1; |
223 m1.SetName(reinterpret_cast<const int8*>(mailbox_name1_.data())); | 227 m1.SetName(reinterpret_cast<const int8*>(mailbox_name1_.data())); |
224 mailbox1_ = TextureMailbox(m1, release_mailbox1_, sync_point1_); | 228 mailbox1_ = TextureMailbox(m1, release_mailbox1_, sync_point1_); |
225 gpu::Mailbox m2; | 229 gpu::Mailbox m2; |
226 m2.SetName(reinterpret_cast<const int8*>(mailbox_name2_.data())); | 230 m2.SetName(reinterpret_cast<const int8*>(mailbox_name2_.data())); |
227 mailbox2_ = TextureMailbox(m2, release_mailbox2_, sync_point2_); | 231 mailbox2_ = TextureMailbox(m2, release_mailbox2_, sync_point2_); |
232 | |
233 gfx::Size size(128, 128); | |
234 EXPECT_TRUE(shared_memory_->CreateAndMapAnonymous(4 * size.GetArea())); | |
235 release_mailbox3_ = base::Bind(&MockMailboxCallback::Release2, | |
236 base::Unretained(&mock_callback_), | |
237 shared_memory_.get()); | |
238 mailbox3_ = TextureMailbox(shared_memory_.get(), size, release_mailbox3_); | |
228 } | 239 } |
229 | 240 |
230 std::string mailbox_name1_; | 241 std::string mailbox_name1_; |
231 std::string mailbox_name2_; | 242 std::string mailbox_name2_; |
232 MockMailboxCallback mock_callback_; | 243 MockMailboxCallback mock_callback_; |
233 TextureMailbox::ReleaseCallback release_mailbox1_; | 244 TextureMailbox::ReleaseCallback release_mailbox1_; |
234 TextureMailbox::ReleaseCallback release_mailbox2_; | 245 TextureMailbox::ReleaseCallback release_mailbox2_; |
246 TextureMailbox::ReleaseCallback release_mailbox3_; | |
235 TextureMailbox mailbox1_; | 247 TextureMailbox mailbox1_; |
236 TextureMailbox mailbox2_; | 248 TextureMailbox mailbox2_; |
249 TextureMailbox mailbox3_; | |
237 unsigned sync_point1_; | 250 unsigned sync_point1_; |
238 unsigned sync_point2_; | 251 unsigned sync_point2_; |
252 scoped_ptr<base::SharedMemory> shared_memory_; | |
239 }; | 253 }; |
240 | 254 |
241 class TextureLayerWithMailboxTest : public TextureLayerTest { | 255 class TextureLayerWithMailboxTest : public TextureLayerTest { |
242 protected: | 256 protected: |
243 virtual void TearDown() { | 257 virtual void TearDown() { |
244 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); | 258 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); |
245 EXPECT_CALL(test_data_.mock_callback_, | 259 EXPECT_CALL(test_data_.mock_callback_, |
246 Release(test_data_.mailbox_name1_, | 260 Release(test_data_.mailbox_name1_, |
247 test_data_.sync_point1_, | 261 test_data_.sync_point1_, |
248 false)).Times(1); | 262 false)).Times(1); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
281 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1)); | 295 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1)); |
282 EXPECT_CALL(test_data_.mock_callback_, | 296 EXPECT_CALL(test_data_.mock_callback_, |
283 Release(test_data_.mailbox_name2_, | 297 Release(test_data_.mailbox_name2_, |
284 test_data_.sync_point2_, | 298 test_data_.sync_point2_, |
285 false)) | 299 false)) |
286 .Times(1); | 300 .Times(1); |
287 test_layer->SetTextureMailbox(TextureMailbox()); | 301 test_layer->SetTextureMailbox(TextureMailbox()); |
288 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 302 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
289 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); | 303 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); |
290 | 304 |
305 test_layer->SetTextureMailbox(test_data_.mailbox3_); | |
306 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | |
307 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); | |
308 | |
309 EXPECT_CALL(*layer_tree_host_, AcquireLayerTextures()).Times(0); | |
310 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1)); | |
311 EXPECT_CALL(test_data_.mock_callback_, | |
312 Release2(test_data_.shared_memory_.get(), | |
313 0, false)) | |
piman
2013/06/07 01:26:28
nit: indent
slavi
2013/06/07 21:49:21
Done.
| |
314 .Times(1); | |
315 test_layer->SetTextureMailbox(TextureMailbox()); | |
316 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | |
317 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); | |
318 | |
291 // Test destructor. | 319 // Test destructor. |
292 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1)); | 320 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1)); |
293 test_layer->SetTextureMailbox(test_data_.mailbox1_); | 321 test_layer->SetTextureMailbox(test_data_.mailbox1_); |
294 } | 322 } |
295 | 323 |
296 class TextureLayerImplWithMailboxThreadedCallback : public LayerTreeTest { | 324 class TextureLayerImplWithMailboxThreadedCallback : public LayerTreeTest { |
297 public: | 325 public: |
298 TextureLayerImplWithMailboxThreadedCallback() | 326 TextureLayerImplWithMailboxThreadedCallback() |
299 : callback_count_(0), | 327 : callback_count_(0), |
300 commit_count_(0) {} | 328 commit_count_(0) {} |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
689 base::Lock lock_; | 717 base::Lock lock_; |
690 unsigned expected_used_textures_on_commit_; | 718 unsigned expected_used_textures_on_commit_; |
691 }; | 719 }; |
692 | 720 |
693 // The TextureLayerClient does not use mailboxes, so can't use a delegating | 721 // The TextureLayerClient does not use mailboxes, so can't use a delegating |
694 // renderer. | 722 // renderer. |
695 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(TextureLayerClientTest); | 723 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(TextureLayerClientTest); |
696 | 724 |
697 } // namespace | 725 } // namespace |
698 } // namespace cc | 726 } // namespace cc |
OLD | NEW |