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

Side by Side Diff: cc/layers/texture_layer_unittest.cc

Issue 643583003: [C++11 Allowed Features] Declares a type-safe null pointer converting from NULL to nullptr in src/… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Presubmit fix Created 6 years, 2 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
« no previous file with comments | « cc/layers/texture_layer.cc ('k') | cc/layers/tiled_layer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/layers/texture_layer.h" 5 #include "cc/layers/texture_layer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 gpu::Mailbox MailboxFromChar(char value) { 45 gpu::Mailbox MailboxFromChar(char value) {
46 gpu::Mailbox mailbox; 46 gpu::Mailbox mailbox;
47 memset(mailbox.name, value, sizeof(mailbox.name)); 47 memset(mailbox.name, value, sizeof(mailbox.name));
48 return mailbox; 48 return mailbox;
49 } 49 }
50 50
51 class MockLayerTreeHost : public LayerTreeHost { 51 class MockLayerTreeHost : public LayerTreeHost {
52 public: 52 public:
53 explicit MockLayerTreeHost(FakeLayerTreeHostClient* client) 53 explicit MockLayerTreeHost(FakeLayerTreeHostClient* client)
54 : LayerTreeHost(client, NULL, LayerTreeSettings()) { 54 : LayerTreeHost(client, nullptr, LayerTreeSettings()) {
55 InitializeSingleThreaded(client, base::MessageLoopProxy::current()); 55 InitializeSingleThreaded(client, base::MessageLoopProxy::current());
56 } 56 }
57 57
58 MOCK_METHOD0(SetNeedsCommit, void()); 58 MOCK_METHOD0(SetNeedsCommit, void());
59 MOCK_METHOD0(SetNeedsUpdateLayers, void()); 59 MOCK_METHOD0(SetNeedsUpdateLayers, void());
60 MOCK_METHOD0(StartRateLimiter, void()); 60 MOCK_METHOD0(StartRateLimiter, void());
61 MOCK_METHOD0(StopRateLimiter, void()); 61 MOCK_METHOD0(StopRateLimiter, void());
62 }; 62 };
63 63
64 class FakeTextureLayerClient : public TextureLayerClient { 64 class FakeTextureLayerClient : public TextureLayerClient {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 layer_tree_host_.reset(new MockLayerTreeHost(&fake_client_)); 177 layer_tree_host_.reset(new MockLayerTreeHost(&fake_client_));
178 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); 178 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber());
179 layer_tree_host_->SetViewportSize(gfx::Size(10, 10)); 179 layer_tree_host_->SetViewportSize(gfx::Size(10, 10));
180 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 180 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
181 } 181 }
182 182
183 virtual void TearDown() { 183 virtual void TearDown() {
184 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 184 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
185 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); 185 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber());
186 186
187 layer_tree_host_->SetRootLayer(NULL); 187 layer_tree_host_->SetRootLayer(nullptr);
188 layer_tree_host_ = nullptr; 188 layer_tree_host_ = nullptr;
189 } 189 }
190 190
191 scoped_ptr<MockLayerTreeHost> layer_tree_host_; 191 scoped_ptr<MockLayerTreeHost> layer_tree_host_;
192 FakeImplProxy proxy_; 192 FakeImplProxy proxy_;
193 FakeLayerTreeHostClient fake_client_; 193 FakeLayerTreeHostClient fake_client_;
194 TestSharedBitmapManager shared_bitmap_manager_; 194 TestSharedBitmapManager shared_bitmap_manager_;
195 FakeLayerTreeHostImpl host_impl_; 195 FakeLayerTreeHostImpl host_impl_;
196 }; 196 };
197 197
198 TEST_F(TextureLayerTest, CheckPropertyChangeCausesCorrectBehavior) { 198 TEST_F(TextureLayerTest, CheckPropertyChangeCausesCorrectBehavior) {
199 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox(NULL); 199 scoped_refptr<TextureLayer> test_layer =
200 TextureLayer::CreateForMailbox(nullptr);
reveman 2014/10/10 11:44:19 this formatting looks weird. is this what "cl form
200 EXPECT_SET_NEEDS_COMMIT(1, layer_tree_host_->SetRootLayer(test_layer)); 201 EXPECT_SET_NEEDS_COMMIT(1, layer_tree_host_->SetRootLayer(test_layer));
201 202
202 // Test properties that should call SetNeedsCommit. All properties need to 203 // Test properties that should call SetNeedsCommit. All properties need to
203 // be set to new values in order for SetNeedsCommit to be called. 204 // be set to new values in order for SetNeedsCommit to be called.
204 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetFlipped(false)); 205 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetFlipped(false));
205 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetUV( 206 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetUV(
206 gfx::PointF(0.25f, 0.25f), gfx::PointF(0.75f, 0.75f))); 207 gfx::PointF(0.25f, 0.25f), gfx::PointF(0.75f, 0.75f)));
207 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetVertexOpacity( 208 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetVertexOpacity(
208 0.5f, 0.5f, 0.5f, 0.5f)); 209 0.5f, 0.5f, 0.5f, 0.5f));
209 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetPremultipliedAlpha(false)); 210 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetPremultipliedAlpha(false));
210 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetBlendBackgroundColor(true)); 211 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetBlendBackgroundColor(true));
211 } 212 }
212 213
213 TEST_F(TextureLayerTest, VisibleContentOpaqueRegion) { 214 TEST_F(TextureLayerTest, VisibleContentOpaqueRegion) {
214 const gfx::Size layer_bounds(100, 100); 215 const gfx::Size layer_bounds(100, 100);
215 const gfx::Rect layer_rect(layer_bounds); 216 const gfx::Rect layer_rect(layer_bounds);
216 const Region layer_region(layer_rect); 217 const Region layer_region(layer_rect);
217 218
218 scoped_refptr<TextureLayer> layer = TextureLayer::CreateForMailbox(NULL); 219 scoped_refptr<TextureLayer> layer = TextureLayer::CreateForMailbox(nullptr);
219 layer->SetBounds(layer_bounds); 220 layer->SetBounds(layer_bounds);
220 layer->draw_properties().visible_content_rect = layer_rect; 221 layer->draw_properties().visible_content_rect = layer_rect;
221 layer->SetBlendBackgroundColor(true); 222 layer->SetBlendBackgroundColor(true);
222 223
223 // Verify initial conditions. 224 // Verify initial conditions.
224 EXPECT_FALSE(layer->contents_opaque()); 225 EXPECT_FALSE(layer->contents_opaque());
225 EXPECT_EQ(0u, layer->background_color()); 226 EXPECT_EQ(0u, layer->background_color());
226 EXPECT_EQ(Region().ToString(), 227 EXPECT_EQ(Region().ToString(),
227 layer->VisibleContentOpaqueRegion().ToString()); 228 layer->VisibleContentOpaqueRegion().ToString());
228 229
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 layer_tree_host_->SetRootLayer(test_layer); 277 layer_tree_host_->SetRootLayer(test_layer);
277 EXPECT_CALL(*layer_tree_host_, StartRateLimiter()).Times(0); 278 EXPECT_CALL(*layer_tree_host_, StartRateLimiter()).Times(0);
278 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 279 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
279 EXPECT_CALL(*layer_tree_host_, StartRateLimiter()); 280 EXPECT_CALL(*layer_tree_host_, StartRateLimiter());
280 test_layer->SetNeedsDisplay(); 281 test_layer->SetNeedsDisplay();
281 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 282 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
282 283
283 // Stop rate limiter when we're removed from the tree. 284 // Stop rate limiter when we're removed from the tree.
284 EXPECT_CALL(*layer_tree_host_, StopRateLimiter()); 285 EXPECT_CALL(*layer_tree_host_, StopRateLimiter());
285 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1); 286 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(1);
286 layer_tree_host_->SetRootLayer(NULL); 287 layer_tree_host_->SetRootLayer(nullptr);
287 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 288 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
288 } 289 }
289 290
290 class TestMailboxHolder : public TextureLayer::TextureMailboxHolder { 291 class TestMailboxHolder : public TextureLayer::TextureMailboxHolder {
291 public: 292 public:
292 using TextureLayer::TextureMailboxHolder::Create; 293 using TextureLayer::TextureMailboxHolder::Create;
293 294
294 protected: 295 protected:
295 virtual ~TestMailboxHolder() {} 296 virtual ~TestMailboxHolder() {}
296 }; 297 };
297 298
298 class TextureLayerWithMailboxTest : public TextureLayerTest { 299 class TextureLayerWithMailboxTest : public TextureLayerTest {
299 protected: 300 protected:
300 virtual void TearDown() { 301 virtual void TearDown() {
301 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); 302 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
302 EXPECT_CALL(test_data_.mock_callback_, 303 EXPECT_CALL(test_data_.mock_callback_,
303 Release(test_data_.mailbox_name1_, 304 Release(test_data_.mailbox_name1_,
304 test_data_.sync_point1_, 305 test_data_.sync_point1_,
305 false)).Times(1); 306 false)).Times(1);
306 TextureLayerTest::TearDown(); 307 TextureLayerTest::TearDown();
307 } 308 }
308 309
309 CommonMailboxObjects test_data_; 310 CommonMailboxObjects test_data_;
310 }; 311 };
311 312
312 TEST_F(TextureLayerWithMailboxTest, ReplaceMailboxOnMainThreadBeforeCommit) { 313 TEST_F(TextureLayerWithMailboxTest, ReplaceMailboxOnMainThreadBeforeCommit) {
313 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox(NULL); 314 scoped_refptr<TextureLayer> test_layer =
315 TextureLayer::CreateForMailbox(nullptr);
314 ASSERT_TRUE(test_layer.get()); 316 ASSERT_TRUE(test_layer.get());
315 317
316 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); 318 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber());
317 layer_tree_host_->SetRootLayer(test_layer); 319 layer_tree_host_->SetRootLayer(test_layer);
318 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 320 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
319 321
320 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1)); 322 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1));
321 test_layer->SetTextureMailbox( 323 test_layer->SetTextureMailbox(
322 test_data_.mailbox1_, 324 test_data_.mailbox1_,
323 SingleReleaseCallback::Create(test_data_.release_mailbox1_)); 325 SingleReleaseCallback::Create(test_data_.release_mailbox1_));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); 366 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
365 367
366 // Test destructor. 368 // Test destructor.
367 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1)); 369 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1));
368 test_layer->SetTextureMailbox( 370 test_layer->SetTextureMailbox(
369 test_data_.mailbox1_, 371 test_data_.mailbox1_,
370 SingleReleaseCallback::Create(test_data_.release_mailbox1_)); 372 SingleReleaseCallback::Create(test_data_.release_mailbox1_));
371 } 373 }
372 374
373 TEST_F(TextureLayerTest, SetTextureMailboxWithoutReleaseCallback) { 375 TEST_F(TextureLayerTest, SetTextureMailboxWithoutReleaseCallback) {
374 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox(NULL); 376 scoped_refptr<TextureLayer> test_layer =
377 TextureLayer::CreateForMailbox(nullptr);
375 ASSERT_TRUE(test_layer.get()); 378 ASSERT_TRUE(test_layer.get());
376 379
377 // These use the same gpu::Mailbox, but different sync points. 380 // These use the same gpu::Mailbox, but different sync points.
378 TextureMailbox mailbox1(MailboxFromChar('a'), GL_TEXTURE_2D, 1); 381 TextureMailbox mailbox1(MailboxFromChar('a'), GL_TEXTURE_2D, 1);
379 TextureMailbox mailbox2(MailboxFromChar('a'), GL_TEXTURE_2D, 2); 382 TextureMailbox mailbox2(MailboxFromChar('a'), GL_TEXTURE_2D, 2);
380 383
381 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); 384 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber());
382 layer_tree_host_->SetRootLayer(test_layer); 385 layer_tree_host_->SetRootLayer(test_layer);
383 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 386 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
384 387
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 } 448 }
446 449
447 scoped_ptr<TestMailboxHolder::MainThreadReference> 450 scoped_ptr<TestMailboxHolder::MainThreadReference>
448 main_ref_; 451 main_ref_;
449 base::Thread main_thread_; 452 base::Thread main_thread_;
450 scoped_ptr<BlockingTaskRunner> main_thread_task_runner_; 453 scoped_ptr<BlockingTaskRunner> main_thread_task_runner_;
451 CommonMailboxObjects test_data_; 454 CommonMailboxObjects test_data_;
452 }; 455 };
453 456
454 TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_BothReleaseThenMain) { 457 TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_BothReleaseThenMain) {
455 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox(NULL); 458 scoped_refptr<TextureLayer> test_layer =
459 TextureLayer::CreateForMailbox(nullptr);
456 ASSERT_TRUE(test_layer.get()); 460 ASSERT_TRUE(test_layer.get());
457 461
458 main_thread_.message_loop()->PostTask( 462 main_thread_.message_loop()->PostTask(
459 FROM_HERE, 463 FROM_HERE,
460 base::Bind(&TextureLayerMailboxHolderTest::CreateMainRef, 464 base::Bind(&TextureLayerMailboxHolderTest::CreateMainRef,
461 base::Unretained(this))); 465 base::Unretained(this)));
462 466
463 Wait(main_thread_); 467 Wait(main_thread_);
464 468
465 // The texture layer is attached to compositor1, and passes a reference to its 469 // The texture layer is attached to compositor1, and passes a reference to its
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 504
501 main_thread_.message_loop()->PostTask( 505 main_thread_.message_loop()->PostTask(
502 FROM_HERE, 506 FROM_HERE,
503 base::Bind(&TextureLayerMailboxHolderTest::ReleaseMainRef, 507 base::Bind(&TextureLayerMailboxHolderTest::ReleaseMainRef,
504 base::Unretained(this))); 508 base::Unretained(this)));
505 Wait(main_thread_); 509 Wait(main_thread_);
506 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); 510 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
507 } 511 }
508 512
509 TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleaseBetween) { 513 TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleaseBetween) {
510 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox(NULL); 514 scoped_refptr<TextureLayer> test_layer =
515 TextureLayer::CreateForMailbox(nullptr);
511 ASSERT_TRUE(test_layer.get()); 516 ASSERT_TRUE(test_layer.get());
512 517
513 main_thread_.message_loop()->PostTask( 518 main_thread_.message_loop()->PostTask(
514 FROM_HERE, 519 FROM_HERE,
515 base::Bind(&TextureLayerMailboxHolderTest::CreateMainRef, 520 base::Bind(&TextureLayerMailboxHolderTest::CreateMainRef,
516 base::Unretained(this))); 521 base::Unretained(this)));
517 522
518 Wait(main_thread_); 523 Wait(main_thread_);
519 524
520 // The texture layer is attached to compositor1, and passes a reference to its 525 // The texture layer is attached to compositor1, and passes a reference to its
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 // released back to the embedder with the last sync point from the impl tree. 561 // released back to the embedder with the last sync point from the impl tree.
557 EXPECT_CALL(test_data_.mock_callback_, 562 EXPECT_CALL(test_data_.mock_callback_,
558 Release(test_data_.mailbox_name1_, 200, true)).Times(1); 563 Release(test_data_.mailbox_name1_, 200, true)).Times(1);
559 564
560 compositor2->Run(200, true, main_thread_task_runner_.get()); 565 compositor2->Run(200, true, main_thread_task_runner_.get());
561 Wait(main_thread_); 566 Wait(main_thread_);
562 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); 567 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
563 } 568 }
564 569
565 TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleasedFirst) { 570 TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleasedFirst) {
566 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox(NULL); 571 scoped_refptr<TextureLayer> test_layer =
572 TextureLayer::CreateForMailbox(nullptr);
567 ASSERT_TRUE(test_layer.get()); 573 ASSERT_TRUE(test_layer.get());
568 574
569 main_thread_.message_loop()->PostTask( 575 main_thread_.message_loop()->PostTask(
570 FROM_HERE, 576 FROM_HERE,
571 base::Bind(&TextureLayerMailboxHolderTest::CreateMainRef, 577 base::Bind(&TextureLayerMailboxHolderTest::CreateMainRef,
572 base::Unretained(this))); 578 base::Unretained(this)));
573 579
574 Wait(main_thread_); 580 Wait(main_thread_);
575 581
576 // The texture layer is attached to compositor1, and passes a reference to its 582 // The texture layer is attached to compositor1, and passes a reference to its
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 // released back to the embedder with the last sync point from the impl tree. 618 // released back to the embedder with the last sync point from the impl tree.
613 EXPECT_CALL(test_data_.mock_callback_, 619 EXPECT_CALL(test_data_.mock_callback_,
614 Release(test_data_.mailbox_name1_, 100, true)).Times(1); 620 Release(test_data_.mailbox_name1_, 100, true)).Times(1);
615 621
616 compositor1->Run(100, true, main_thread_task_runner_.get()); 622 compositor1->Run(100, true, main_thread_task_runner_.get());
617 Wait(main_thread_); 623 Wait(main_thread_);
618 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_); 624 Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
619 } 625 }
620 626
621 TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_SecondImplRefShortcut) { 627 TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_SecondImplRefShortcut) {
622 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox(NULL); 628 scoped_refptr<TextureLayer> test_layer =
629 TextureLayer::CreateForMailbox(nullptr);
623 ASSERT_TRUE(test_layer.get()); 630 ASSERT_TRUE(test_layer.get());
624 631
625 main_thread_.message_loop()->PostTask( 632 main_thread_.message_loop()->PostTask(
626 FROM_HERE, 633 FROM_HERE,
627 base::Bind(&TextureLayerMailboxHolderTest::CreateMainRef, 634 base::Bind(&TextureLayerMailboxHolderTest::CreateMainRef,
628 base::Unretained(this))); 635 base::Unretained(this)));
629 636
630 Wait(main_thread_); 637 Wait(main_thread_);
631 638
632 // The texture layer is attached to compositor1, and passes a reference to its 639 // The texture layer is attached to compositor1, and passes a reference to its
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 callback.Pass()); 728 callback.Pass());
722 } 729 }
723 730
724 virtual void BeginTest() override { 731 virtual void BeginTest() override {
725 EXPECT_EQ(true, main_thread_.CalledOnValidThread()); 732 EXPECT_EQ(true, main_thread_.CalledOnValidThread());
726 733
727 gfx::Size bounds(100, 100); 734 gfx::Size bounds(100, 100);
728 root_ = Layer::Create(); 735 root_ = Layer::Create();
729 root_->SetBounds(bounds); 736 root_->SetBounds(bounds);
730 737
731 layer_ = TextureLayer::CreateForMailbox(NULL); 738 layer_ = TextureLayer::CreateForMailbox(nullptr);
732 layer_->SetIsDrawable(true); 739 layer_->SetIsDrawable(true);
733 layer_->SetBounds(bounds); 740 layer_->SetBounds(bounds);
734 741
735 root_->AddChild(layer_); 742 root_->AddChild(layer_);
736 layer_tree_host()->SetRootLayer(root_); 743 layer_tree_host()->SetRootLayer(root_);
737 layer_tree_host()->SetViewportSize(bounds); 744 layer_tree_host()->SetViewportSize(bounds);
738 SetMailbox('1'); 745 SetMailbox('1');
739 EXPECT_EQ(0, callback_count_); 746 EXPECT_EQ(0, callback_count_);
740 747
741 // Case #1: change mailbox before the commit. The old mailbox should be 748 // Case #1: change mailbox before the commit. The old mailbox should be
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 layer_->SetTextureMailbox( 851 layer_->SetTextureMailbox(
845 TextureMailbox(MailboxFromChar(mailbox_char), GL_TEXTURE_2D, 0), 852 TextureMailbox(MailboxFromChar(mailbox_char), GL_TEXTURE_2D, 0),
846 callback.Pass()); 853 callback.Pass());
847 } 854 }
848 855
849 virtual void BeginTest() override { 856 virtual void BeginTest() override {
850 gfx::Size bounds(100, 100); 857 gfx::Size bounds(100, 100);
851 root_ = Layer::Create(); 858 root_ = Layer::Create();
852 root_->SetBounds(bounds); 859 root_->SetBounds(bounds);
853 860
854 layer_ = TextureLayer::CreateForMailbox(NULL); 861 layer_ = TextureLayer::CreateForMailbox(nullptr);
855 layer_->SetIsDrawable(true); 862 layer_->SetIsDrawable(true);
856 layer_->SetBounds(bounds); 863 layer_->SetBounds(bounds);
857 864
858 root_->AddChild(layer_); 865 root_->AddChild(layer_);
859 layer_tree_host()->SetRootLayer(root_); 866 layer_tree_host()->SetRootLayer(root_);
860 layer_tree_host()->SetViewportSize(bounds); 867 layer_tree_host()->SetViewportSize(bounds);
861 SetMailbox('1'); 868 SetMailbox('1');
862 869
863 PostSetNeedsCommitToMainThread(); 870 PostSetNeedsCommitToMainThread();
864 } 871 }
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
1407 } 1414 }
1408 1415
1409 private: 1416 private:
1410 bool mailbox_released_; 1417 bool mailbox_released_;
1411 }; 1418 };
1412 1419
1413 class TextureLayerReleaseResourcesAfterCommit 1420 class TextureLayerReleaseResourcesAfterCommit
1414 : public TextureLayerReleaseResourcesBase { 1421 : public TextureLayerReleaseResourcesBase {
1415 public: 1422 public:
1416 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { 1423 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
1417 LayerTreeImpl* tree = NULL; 1424 LayerTreeImpl* tree = nullptr;
1418 if (host_impl->settings().impl_side_painting) 1425 if (host_impl->settings().impl_side_painting)
1419 tree = host_impl->pending_tree(); 1426 tree = host_impl->pending_tree();
1420 else 1427 else
1421 tree = host_impl->active_tree(); 1428 tree = host_impl->active_tree();
1422 tree->root_layer()->children()[0]->ReleaseResources(); 1429 tree->root_layer()->children()[0]->ReleaseResources();
1423 } 1430 }
1424 }; 1431 };
1425 1432
1426 SINGLE_AND_MULTI_THREAD_TEST_F(TextureLayerReleaseResourcesAfterCommit); 1433 SINGLE_AND_MULTI_THREAD_TEST_F(TextureLayerReleaseResourcesAfterCommit);
1427 1434
(...skipping 25 matching lines...) Expand all
1453 layer_->SetTextureMailbox( 1460 layer_->SetTextureMailbox(
1454 TextureMailbox(MailboxFromChar(mailbox_char), GL_TEXTURE_2D, 0), 1461 TextureMailbox(MailboxFromChar(mailbox_char), GL_TEXTURE_2D, 0),
1455 callback.Pass()); 1462 callback.Pass());
1456 } 1463 }
1457 1464
1458 virtual void SetupTree() override { 1465 virtual void SetupTree() override {
1459 gfx::Size bounds(100, 100); 1466 gfx::Size bounds(100, 100);
1460 root_ = Layer::Create(); 1467 root_ = Layer::Create();
1461 root_->SetBounds(bounds); 1468 root_->SetBounds(bounds);
1462 1469
1463 layer_ = TextureLayer::CreateForMailbox(NULL); 1470 layer_ = TextureLayer::CreateForMailbox(nullptr);
1464 layer_->SetIsDrawable(true); 1471 layer_->SetIsDrawable(true);
1465 layer_->SetBounds(bounds); 1472 layer_->SetBounds(bounds);
1466 1473
1467 root_->AddChild(layer_); 1474 root_->AddChild(layer_);
1468 layer_tree_host()->SetRootLayer(root_); 1475 layer_tree_host()->SetRootLayer(root_);
1469 layer_tree_host()->SetViewportSize(bounds); 1476 layer_tree_host()->SetViewportSize(bounds);
1470 } 1477 }
1471 1478
1472 virtual void BeginTest() override { 1479 virtual void BeginTest() override {
1473 EXPECT_EQ(true, main_thread_.CalledOnValidThread()); 1480 EXPECT_EQ(true, main_thread_.CalledOnValidThread());
1474 1481
1475 callback_count_ = 0; 1482 callback_count_ = 0;
1476 1483
1477 // Set the mailbox on the main thread. 1484 // Set the mailbox on the main thread.
1478 SetMailbox('1'); 1485 SetMailbox('1');
1479 EXPECT_EQ(0, callback_count_); 1486 EXPECT_EQ(0, callback_count_);
1480 1487
1481 PostSetNeedsCommitToMainThread(); 1488 PostSetNeedsCommitToMainThread();
1482 } 1489 }
1483 1490
1484 virtual void DidCommitAndDrawFrame() override { 1491 virtual void DidCommitAndDrawFrame() override {
1485 switch (layer_tree_host()->source_frame_number()) { 1492 switch (layer_tree_host()->source_frame_number()) {
1486 case 1: 1493 case 1:
1487 // Delete the TextureLayer on the main thread while the mailbox is in 1494 // Delete the TextureLayer on the main thread while the mailbox is in
1488 // the impl tree. 1495 // the impl tree.
1489 layer_->RemoveFromParent(); 1496 layer_->RemoveFromParent();
1490 layer_ = NULL; 1497 layer_ = nullptr;
1491 break; 1498 break;
1492 } 1499 }
1493 } 1500 }
1494 1501
1495 virtual void AfterTest() override { 1502 virtual void AfterTest() override {
1496 EXPECT_EQ(1, callback_count_); 1503 EXPECT_EQ(1, callback_count_);
1497 } 1504 }
1498 1505
1499 private: 1506 private:
1500 base::ThreadChecker main_thread_; 1507 base::ThreadChecker main_thread_;
(...skipping 23 matching lines...) Expand all
1524 layer_->SetTextureMailbox( 1531 layer_->SetTextureMailbox(
1525 TextureMailbox(MailboxFromChar(mailbox_char), GL_TEXTURE_2D, 0), 1532 TextureMailbox(MailboxFromChar(mailbox_char), GL_TEXTURE_2D, 0),
1526 callback.Pass()); 1533 callback.Pass());
1527 } 1534 }
1528 1535
1529 virtual void SetupTree() override { 1536 virtual void SetupTree() override {
1530 gfx::Size bounds(100, 100); 1537 gfx::Size bounds(100, 100);
1531 root_ = Layer::Create(); 1538 root_ = Layer::Create();
1532 root_->SetBounds(bounds); 1539 root_->SetBounds(bounds);
1533 1540
1534 layer_ = TextureLayer::CreateForMailbox(NULL); 1541 layer_ = TextureLayer::CreateForMailbox(nullptr);
1535 layer_->SetIsDrawable(true); 1542 layer_->SetIsDrawable(true);
1536 layer_->SetBounds(bounds); 1543 layer_->SetBounds(bounds);
1537 1544
1538 root_->AddChild(layer_); 1545 root_->AddChild(layer_);
1539 layer_tree_host()->SetRootLayer(root_); 1546 layer_tree_host()->SetRootLayer(root_);
1540 layer_tree_host()->SetViewportSize(bounds); 1547 layer_tree_host()->SetViewportSize(bounds);
1541 } 1548 }
1542 1549
1543 virtual void BeginTest() override { 1550 virtual void BeginTest() override {
1544 EXPECT_EQ(true, main_thread_.CalledOnValidThread()); 1551 EXPECT_EQ(true, main_thread_.CalledOnValidThread());
1545 1552
1546 callback_count_ = 0; 1553 callback_count_ = 0;
1547 1554
1548 // Set the mailbox on the main thread. 1555 // Set the mailbox on the main thread.
1549 SetMailbox('1'); 1556 SetMailbox('1');
1550 EXPECT_EQ(0, callback_count_); 1557 EXPECT_EQ(0, callback_count_);
1551 1558
1552 PostSetNeedsCommitToMainThread(); 1559 PostSetNeedsCommitToMainThread();
1553 } 1560 }
1554 1561
1555 virtual void DidCommitAndDrawFrame() override { 1562 virtual void DidCommitAndDrawFrame() override {
1556 switch (layer_tree_host()->source_frame_number()) { 1563 switch (layer_tree_host()->source_frame_number()) {
1557 case 1: 1564 case 1:
1558 // Remove the TextureLayer on the main thread while the mailbox is in 1565 // Remove the TextureLayer on the main thread while the mailbox is in
1559 // the impl tree, but don't delete the TextureLayer until after the impl 1566 // the impl tree, but don't delete the TextureLayer until after the impl
1560 // tree side is deleted. 1567 // tree side is deleted.
1561 layer_->RemoveFromParent(); 1568 layer_->RemoveFromParent();
1562 break; 1569 break;
1563 case 2: 1570 case 2:
1564 layer_ = NULL; 1571 layer_ = nullptr;
1565 break; 1572 break;
1566 } 1573 }
1567 } 1574 }
1568 1575
1569 virtual void AfterTest() override { 1576 virtual void AfterTest() override {
1570 EXPECT_EQ(1, callback_count_); 1577 EXPECT_EQ(1, callback_count_);
1571 } 1578 }
1572 1579
1573 private: 1580 private:
1574 base::ThreadChecker main_thread_; 1581 base::ThreadChecker main_thread_;
1575 int callback_count_; 1582 int callback_count_;
1576 scoped_refptr<Layer> root_; 1583 scoped_refptr<Layer> root_;
1577 scoped_refptr<TextureLayer> layer_; 1584 scoped_refptr<TextureLayer> layer_;
1578 }; 1585 };
1579 1586
1580 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( 1587 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(
1581 TextureLayerWithMailboxImplThreadDeleted); 1588 TextureLayerWithMailboxImplThreadDeleted);
1582 1589
1583 } // namespace 1590 } // namespace
1584 } // namespace cc 1591 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/texture_layer.cc ('k') | cc/layers/tiled_layer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698