Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: cc/texture_layer_unittest.cc

Issue 11888010: Cosmetic cleanup to texture_layer mailboxes. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Using Mailbox struct Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/texture_layer.h" 5 #include "cc/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/layer_tree_host.h" 10 #include "cc/layer_tree_host.h"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); 189 Mock::VerifyAndClearExpectations(m_layerTreeHost.get());
190 } 190 }
191 191
192 class MockMailboxCallback { 192 class MockMailboxCallback {
193 public: 193 public:
194 MOCK_METHOD2(Release, void(const std::string& mailbox, unsigned syncPoint)); 194 MOCK_METHOD2(Release, void(const std::string& mailbox, unsigned syncPoint));
195 }; 195 };
196 196
197 struct CommonMailboxObjects { 197 struct CommonMailboxObjects {
198 CommonMailboxObjects() 198 CommonMailboxObjects()
199 : m_mailbox1(64, '1') 199 : m_mailboxName1(64, '1')
200 , m_mailbox2(64, '2') 200 , m_mailboxName2(64, '2')
201 { 201 {
202 m_releaseMailbox1 = base::Bind(&MockMailboxCallback::Release, 202 m_releaseMailbox1 = base::Bind(&MockMailboxCallback::Release,
203 base::Unretained(&m_mockCallback), 203 base::Unretained(&m_mockCallback),
204 m_mailbox1); 204 m_mailboxName1);
205 m_releaseMailbox2 = base::Bind(&MockMailboxCallback::Release, 205 m_releaseMailbox2 = base::Bind(&MockMailboxCallback::Release,
206 base::Unretained(&m_mockCallback), 206 base::Unretained(&m_mockCallback),
207 m_mailbox2); 207 m_mailboxName2);
208
209 m_mailbox1 = TextureMailbox(m_mailboxName1, m_releaseMailbox1);
210 m_mailbox2 = TextureMailbox(m_mailboxName2, m_releaseMailbox2);
208 } 211 }
209 212
210 std::string m_mailbox1; 213 std::string m_mailboxName1;
211 std::string m_mailbox2; 214 std::string m_mailboxName2;
212 MockMailboxCallback m_mockCallback; 215 MockMailboxCallback m_mockCallback;
213 TextureLayer::MailboxCallback m_releaseMailbox1; 216 TextureMailbox::ReleaseCallback m_releaseMailbox1;
214 TextureLayer::MailboxCallback m_releaseMailbox2; 217 TextureMailbox::ReleaseCallback m_releaseMailbox2;
218 TextureMailbox m_mailbox1;
219 TextureMailbox m_mailbox2;
215 }; 220 };
216 221
217 class TextureLayerWithMailboxTest : public TextureLayerTest { 222 class TextureLayerWithMailboxTest : public TextureLayerTest {
218 protected: 223 protected:
219 virtual void TearDown() 224 virtual void TearDown()
220 { 225 {
221 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback); 226 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback);
222 EXPECT_CALL(m_testData.m_mockCallback, 227 EXPECT_CALL(m_testData.m_mockCallback,
223 Release(m_testData.m_mailbox1, _)).Times(1); 228 Release(m_testData.m_mailboxName1, _)).Times(1);
224 TextureLayerTest::TearDown(); 229 TextureLayerTest::TearDown();
225 } 230 }
226 231
227 CommonMailboxObjects m_testData; 232 CommonMailboxObjects m_testData;
228 }; 233 };
229 234
230 TEST_F(TextureLayerWithMailboxTest, replaceMailboxOnMainThreadBeforeCommit) 235 TEST_F(TextureLayerWithMailboxTest, replaceMailboxOnMainThreadBeforeCommit)
231 { 236 {
232 scoped_refptr<TextureLayer> testLayer = TextureLayer::createForMailbox(); 237 scoped_refptr<TextureLayer> testLayer = TextureLayer::createForMailbox();
233 ASSERT_TRUE(testLayer); 238 ASSERT_TRUE(testLayer);
234 239
235 EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0); 240 EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0);
236 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AnyNumber()); 241 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AnyNumber());
237 m_layerTreeHost->setRootLayer(testLayer); 242 m_layerTreeHost->setRootLayer(testLayer);
238 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); 243 Mock::VerifyAndClearExpectations(m_layerTreeHost.get());
239 244
240 EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0); 245 EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0);
241 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1)); 246 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1));
242 testLayer->setTextureMailbox(m_testData.m_mailbox1, 247 testLayer->setTextureMailbox(m_testData.m_mailbox1);
243 m_testData.m_releaseMailbox1);
244 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); 248 Mock::VerifyAndClearExpectations(m_layerTreeHost.get());
245 249
246 EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0); 250 EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0);
247 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1)); 251 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1));
248 EXPECT_CALL(m_testData.m_mockCallback, 252 EXPECT_CALL(m_testData.m_mockCallback,
249 Release(m_testData.m_mailbox1, _)).Times(1); 253 Release(m_testData.m_mailboxName1, _)).Times(1);
250 testLayer->setTextureMailbox(m_testData.m_mailbox2, 254 testLayer->setTextureMailbox(m_testData.m_mailbox2);
251 m_testData.m_releaseMailbox2);
252 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); 255 Mock::VerifyAndClearExpectations(m_layerTreeHost.get());
253 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback); 256 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback);
254 257
255 EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0); 258 EXPECT_CALL(*m_layerTreeHost, acquireLayerTextures()).Times(0);
256 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1)); 259 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1));
257 EXPECT_CALL(m_testData.m_mockCallback, 260 EXPECT_CALL(m_testData.m_mockCallback,
258 Release(m_testData.m_mailbox2, _)).Times(1); 261 Release(m_testData.m_mailboxName2, _)).Times(1);
259 testLayer->setTextureMailbox(std::string(), 262 testLayer->setTextureMailbox(TextureMailbox());
260 TextureLayer::MailboxCallback());
261 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); 263 Mock::VerifyAndClearExpectations(m_layerTreeHost.get());
262 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback); 264 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback);
263 265
264 // Test destructor. 266 // Test destructor.
265 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1)); 267 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1));
266 testLayer->setTextureMailbox(m_testData.m_mailbox1, 268 testLayer->setTextureMailbox(m_testData.m_mailbox1);
267 m_testData.m_releaseMailbox1);
268 } 269 }
269 270
270 class TextureLayerImplWithMailboxThreadedCallback : public ThreadedTest { 271 class TextureLayerImplWithMailboxThreadedCallback : public ThreadedTest {
271 public: 272 public:
272 TextureLayerImplWithMailboxThreadedCallback() 273 TextureLayerImplWithMailboxThreadedCallback()
273 : m_resetMailbox(false) 274 : m_resetMailbox(false)
274 { 275 {
275 } 276 }
276 277
277 // Make sure callback is received on main and doesn't block the impl thread. 278 // Make sure callback is received on main and doesn't block the impl thread.
278 void releaseCallback(unsigned syncPoint) { 279 void releaseCallback(unsigned syncPoint) {
279 EXPECT_EQ(true, proxy()->isMainThread()); 280 EXPECT_EQ(true, proxy()->isMainThread());
280 endTest(); 281 endTest();
281 } 282 }
282 283
283 virtual void beginTest() OVERRIDE 284 virtual void beginTest() OVERRIDE
284 { 285 {
285 m_layer = TextureLayer::createForMailbox(); 286 m_layer = TextureLayer::createForMailbox();
286 m_layer->setIsDrawable(true); 287 m_layer->setIsDrawable(true);
287 m_layerTreeHost->setRootLayer(m_layer); 288 m_layerTreeHost->setRootLayer(m_layer);
288 m_layer->setTextureMailbox( 289 TextureMailbox mailbox(
289 std::string(64, '1'), 290 std::string(64, '1'),
290 base::Bind( 291 base::Bind(
291 &TextureLayerImplWithMailboxThreadedCallback::releaseCallback, 292 &TextureLayerImplWithMailboxThreadedCallback::releaseCallback,
292 base::Unretained(this))); 293 base::Unretained(this)));
294 m_layer->setTextureMailbox(mailbox);
293 postSetNeedsCommitToMainThread(); 295 postSetNeedsCommitToMainThread();
294 } 296 }
295 297
296 virtual void didCommit() OVERRIDE 298 virtual void didCommit() OVERRIDE
297 { 299 {
298 if (m_resetMailbox) 300 if (m_resetMailbox)
299 return; 301 return;
300 302
301 m_layer->setTextureMailbox(std::string(), 303 m_layer->setTextureMailbox(TextureMailbox());
302 TextureLayer::MailboxCallback());
303 m_resetMailbox = true; 304 m_resetMailbox = true;
304 } 305 }
305 306
306 virtual void afterTest() OVERRIDE 307 virtual void afterTest() OVERRIDE
307 { 308 {
308 } 309 }
309 310
310 private: 311 private:
311 bool m_resetMailbox; 312 bool m_resetMailbox;
312 scoped_refptr<TextureLayer> m_layer; 313 scoped_refptr<TextureLayer> m_layer;
(...skipping 14 matching lines...) Expand all
327 }; 328 };
328 329
329 TEST_F(TextureLayerImplWithMailboxTest, testImplLayerCallbacks) 330 TEST_F(TextureLayerImplWithMailboxTest, testImplLayerCallbacks)
330 { 331 {
331 scoped_ptr<TextureLayerImpl> implLayer; 332 scoped_ptr<TextureLayerImpl> implLayer;
332 implLayer = TextureLayerImpl::create(m_hostImpl.activeTree(), 1, true); 333 implLayer = TextureLayerImpl::create(m_hostImpl.activeTree(), 1, true);
333 ASSERT_TRUE(implLayer); 334 ASSERT_TRUE(implLayer);
334 335
335 // Test setting identical mailbox. 336 // Test setting identical mailbox.
336 EXPECT_CALL(m_testData.m_mockCallback, Release(_, _)).Times(0); 337 EXPECT_CALL(m_testData.m_mockCallback, Release(_, _)).Times(0);
337 implLayer->setTextureMailbox(m_testData.m_mailbox1, 338 implLayer->setTextureMailbox(m_testData.m_mailbox1);
338 m_testData.m_releaseMailbox1); 339 implLayer->setTextureMailbox(m_testData.m_mailbox1);
339 implLayer->setTextureMailbox(m_testData.m_mailbox1,
340 m_testData.m_releaseMailbox1);
341 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback); 340 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback);
342 341
343 // Test multiple commits without a draw. 342 // Test multiple commits without a draw.
344 EXPECT_CALL(m_testData.m_mockCallback, 343 EXPECT_CALL(m_testData.m_mockCallback,
345 Release(m_testData.m_mailbox1, _)).Times(1); 344 Release(m_testData.m_mailboxName1, _)).Times(1);
346 implLayer->setTextureMailbox(m_testData.m_mailbox2, 345 implLayer->setTextureMailbox(m_testData.m_mailbox2);
347 m_testData.m_releaseMailbox2);
348 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback); 346 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback);
349 347
350 // Test resetting the mailbox. 348 // Test resetting the mailbox.
351 EXPECT_CALL(m_testData.m_mockCallback, 349 EXPECT_CALL(m_testData.m_mockCallback,
352 Release(m_testData.m_mailbox2, _)).Times(1); 350 Release(m_testData.m_mailboxName2, _)).Times(1);
353 implLayer->setTextureMailbox(std::string(), 351 implLayer->setTextureMailbox(TextureMailbox());
354 TextureLayer::MailboxCallback());
355 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback); 352 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback);
356 353
357 // Test destructor. 354 // Test destructor.
358 EXPECT_CALL(m_testData.m_mockCallback, 355 EXPECT_CALL(m_testData.m_mockCallback,
359 Release(m_testData.m_mailbox1, _)).Times(1); 356 Release(m_testData.m_mailboxName1, _)).Times(1);
360 implLayer->setTextureMailbox(m_testData.m_mailbox1, 357 implLayer->setTextureMailbox(m_testData.m_mailbox1);
361 m_testData.m_releaseMailbox1);
362 } 358 }
363 359
364 TEST_F(TextureLayerImplWithMailboxTest, testDestructorCallbackOnCreatedResource) 360 TEST_F(TextureLayerImplWithMailboxTest, testDestructorCallbackOnCreatedResource)
365 { 361 {
366 scoped_ptr<TextureLayerImpl> implLayer; 362 scoped_ptr<TextureLayerImpl> implLayer;
367 implLayer = TextureLayerImpl::create(m_hostImpl.activeTree(), 1, true); 363 implLayer = TextureLayerImpl::create(m_hostImpl.activeTree(), 1, true);
368 ASSERT_TRUE(implLayer); 364 ASSERT_TRUE(implLayer);
369 365
370 EXPECT_CALL(m_testData.m_mockCallback, 366 EXPECT_CALL(m_testData.m_mockCallback,
371 Release(m_testData.m_mailbox1, _)).Times(1); 367 Release(m_testData.m_mailboxName1, _)).Times(1);
372 implLayer->setTextureMailbox(m_testData.m_mailbox1, 368 implLayer->setTextureMailbox(m_testData.m_mailbox1);
373 m_testData.m_releaseMailbox1);
374 implLayer->willDraw(m_hostImpl.activeTree()->resource_provider()); 369 implLayer->willDraw(m_hostImpl.activeTree()->resource_provider());
375 implLayer->didDraw(m_hostImpl.activeTree()->resource_provider()); 370 implLayer->didDraw(m_hostImpl.activeTree()->resource_provider());
376 implLayer->setTextureMailbox(std::string(), 371 implLayer->setTextureMailbox(TextureMailbox());
377 TextureLayer::MailboxCallback());
378 } 372 }
379 373
380 TEST_F(TextureLayerImplWithMailboxTest, testCallbackOnInUseResource) 374 TEST_F(TextureLayerImplWithMailboxTest, testCallbackOnInUseResource)
381 { 375 {
382 ResourceProvider *provider = m_hostImpl.activeTree()->resource_provider(); 376 ResourceProvider *provider = m_hostImpl.activeTree()->resource_provider();
383 ResourceProvider::ResourceId id = 377 ResourceProvider::ResourceId id =
384 provider->createResourceFromTextureMailbox( 378 provider->createResourceFromTextureMailbox(m_testData.m_mailbox1);
385 m_testData.m_mailbox1,
386 m_testData.m_releaseMailbox1);
387 provider->allocateForTesting(id); 379 provider->allocateForTesting(id);
388 380
389 // Transfer some resources to the parent. 381 // Transfer some resources to the parent.
390 ResourceProvider::ResourceIdArray resourceIdsToTransfer; 382 ResourceProvider::ResourceIdArray resourceIdsToTransfer;
391 resourceIdsToTransfer.push_back(id); 383 resourceIdsToTransfer.push_back(id);
392 TransferableResourceList list; 384 TransferableResourceList list;
393 provider->prepareSendToParent(resourceIdsToTransfer, &list); 385 provider->prepareSendToParent(resourceIdsToTransfer, &list);
394 EXPECT_TRUE(provider->inUseByConsumer(id)); 386 EXPECT_TRUE(provider->inUseByConsumer(id));
395 EXPECT_CALL(m_testData.m_mockCallback, Release(_, _)).Times(0); 387 EXPECT_CALL(m_testData.m_mockCallback, Release(_, _)).Times(0);
396 provider->deleteResource(id); 388 provider->deleteResource(id);
397 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback); 389 Mock::VerifyAndClearExpectations(&m_testData.m_mockCallback);
398 EXPECT_CALL(m_testData.m_mockCallback, 390 EXPECT_CALL(m_testData.m_mockCallback,
399 Release(m_testData.m_mailbox1, _)).Times(1); 391 Release(m_testData.m_mailboxName1, _)).Times(1);
400 provider->receiveFromParent(list); 392 provider->receiveFromParent(list);
401 } 393 }
402 394
403 } // namespace 395 } // namespace
404 } // namespace cc 396 } // namespace cc
OLDNEW
« no previous file with comments | « cc/texture_layer_impl.cc ('k') | cc/texture_mailbox.h » ('j') | cc/texture_mailbox.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698