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

Side by Side Diff: cc/CCTextureUpdateControllerTest.cpp

Issue 10909020: Enable webkit_compositor_unittests (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 3 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/CCTextureUpdateController.cpp ('k') | cc/CCThreadProxy.h » ('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 "config.h" 5 #include "config.h"
6 6
7 #include "CCTextureUpdateController.h" 7 #include "CCTextureUpdateController.h"
8 8
9 #include "CCSchedulerTestCommon.h" 9 #include "CCSchedulerTestCommon.h"
10 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread 10 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 514
515 EXPECT_EQ(3, m_numBeginUploads); 515 EXPECT_EQ(3, m_numBeginUploads);
516 EXPECT_EQ(3, m_numEndUploads); 516 EXPECT_EQ(3, m_numEndUploads);
517 EXPECT_LE(m_numPreviousUploads, kMaxUploadsPerUpdate); 517 EXPECT_LE(m_numPreviousUploads, kMaxUploadsPerUpdate);
518 // Be lenient on the exact number of flushes here as well. 518 // Be lenient on the exact number of flushes here as well.
519 519
520 // Final sanity checks 520 // Final sanity checks
521 EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads); 521 EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads);
522 } 522 }
523 523
524 class FakeCCTextureUpdateControllerClient : public WebCore::CCTextureUpdateContr ollerClient {
525 public:
526 FakeCCTextureUpdateControllerClient() { reset(); }
527 void reset() { m_completedCalled = false; }
528 bool completedCalled() const { return m_completedCalled; }
529
530 virtual void updateTexturesCompleted() OVERRIDE { m_completedCalled = true; }
531
532 protected:
533 bool m_completedCalled;
534 };
535
536 class FakeCCTextureUpdateController : public WebCore::CCTextureUpdateController { 524 class FakeCCTextureUpdateController : public WebCore::CCTextureUpdateController {
537 public: 525 public:
538 static PassOwnPtr<FakeCCTextureUpdateController> create(WebCore::CCTextureUp dateControllerClient* client, WebCore::CCThread* thread, PassOwnPtr<CCTextureUpd ateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, Te xtureUploader* uploader) 526 static PassOwnPtr<FakeCCTextureUpdateController> create(WebCore::CCThread* t hread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvi der, TextureCopier* copier, TextureUploader* uploader)
539 { 527 {
540 return adoptPtr(new FakeCCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader)); 528 return adoptPtr(new FakeCCTextureUpdateController(thread, queue, resourc eProvider, copier, uploader));
541 } 529 }
542 530
543 void setMonotonicTimeNow(double time) { m_monotonicTimeNow = time; } 531 void setMonotonicTimeNow(double time) { m_monotonicTimeNow = time; }
544 virtual double monotonicTimeNow() const OVERRIDE { return m_monotonicTimeNow ; } 532 virtual double monotonicTimeNow() const OVERRIDE { return m_monotonicTimeNow ; }
545 void setUpdateMoreTexturesTime(double time) { m_updateMoreTexturesTime = tim e; } 533 void setUpdateMoreTexturesTime(double time) { m_updateMoreTexturesTime = tim e; }
546 virtual double updateMoreTexturesTime() const OVERRIDE { return m_updateMore TexturesTime; } 534 virtual double updateMoreTexturesTime() const OVERRIDE { return m_updateMore TexturesTime; }
547 void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = siz e; } 535 void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = siz e; }
548 virtual size_t updateMoreTexturesSize() const OVERRIDE { return m_updateMore TexturesSize; } 536 virtual size_t updateMoreTexturesSize() const OVERRIDE { return m_updateMore TexturesSize; }
549 537
550 protected: 538 protected:
551 FakeCCTextureUpdateController(WebCore::CCTextureUpdateControllerClient* clie nt, WebCore::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourc eProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader) 539 FakeCCTextureUpdateController(WebCore::CCThread* thread, PassOwnPtr<CCTextur eUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier , TextureUploader* uploader)
552 : WebCore::CCTextureUpdateController(client, thread, queue, resourceProv ider, copier, uploader) 540 : WebCore::CCTextureUpdateController(thread, queue, resourceProvider, co pier, uploader)
553 , m_monotonicTimeNow(0) 541 , m_monotonicTimeNow(0)
554 , m_updateMoreTexturesTime(0) 542 , m_updateMoreTexturesTime(0)
555 , m_updateMoreTexturesSize(0) { } 543 , m_updateMoreTexturesSize(0) { }
556 544
557 double m_monotonicTimeNow; 545 double m_monotonicTimeNow;
558 double m_updateMoreTexturesTime; 546 double m_updateMoreTexturesTime;
559 size_t m_updateMoreTexturesSize; 547 size_t m_updateMoreTexturesSize;
560 }; 548 };
561 549
562 static void runPendingTasks(FakeCCThread* thread, FakeCCTextureUpdateController* controller)
563 {
564 while (thread->hasPendingTask()) {
565 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread- >pendingDelayMs() / 1000.0);
566 thread->runPendingTask();
567 }
568 }
569
570 TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures) 550 TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures)
571 { 551 {
572 FakeCCTextureUpdateControllerClient client;
573 FakeCCThread thread; 552 FakeCCThread thread;
574 553
575 setMaxUploadCountPerUpdate(1); 554 setMaxUploadCountPerUpdate(1);
576 appendFullUploadsToUpdateQueue(3); 555 appendFullUploadsToUpdateQueue(3);
577 appendPartialUploadsToUpdateQueue(0); 556 appendPartialUploadsToUpdateQueue(0);
578 557
579 DebugScopedSetImplThread implThread; 558 DebugScopedSetImplThread implThread;
580 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); 559 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_u ploader));
581 560
582 controller->setMonotonicTimeNow(0); 561 controller->setMonotonicTimeNow(0);
583 controller->setUpdateMoreTexturesTime(0.1); 562 controller->setUpdateMoreTexturesTime(0.1);
584 controller->setUpdateMoreTexturesSize(1); 563 controller->setUpdateMoreTexturesSize(1);
585 // Not enough time for any updates. 564 // Not enough time for any updates.
586 controller->updateMoreTextures(0.09); 565 controller->updateMoreTextures(0.09);
587 runPendingTasks(&thread, controller.get()); 566 EXPECT_FALSE(thread.hasPendingTask());
588 EXPECT_EQ(0, m_numBeginUploads); 567 EXPECT_EQ(0, m_numBeginUploads);
589 EXPECT_EQ(0, m_numEndUploads); 568 EXPECT_EQ(0, m_numEndUploads);
590 569
570 thread.reset();
591 controller->setMonotonicTimeNow(0); 571 controller->setMonotonicTimeNow(0);
592 controller->setUpdateMoreTexturesTime(0.1); 572 controller->setUpdateMoreTexturesTime(0.1);
593 controller->setUpdateMoreTexturesSize(1); 573 controller->setUpdateMoreTexturesSize(1);
594 // Only enough time for 1 update. 574 // Only enough time for 1 update.
595 controller->updateMoreTextures(0.12); 575 controller->updateMoreTextures(0.12);
596 runPendingTasks(&thread, controller.get()); 576 EXPECT_TRUE(thread.hasPendingTask());
577 controller->setMonotonicTimeNow(thread.pendingDelayMs() / 1000.0);
578 thread.runPendingTask();
597 EXPECT_EQ(1, m_numBeginUploads); 579 EXPECT_EQ(1, m_numBeginUploads);
598 EXPECT_EQ(1, m_numEndUploads); 580 EXPECT_EQ(1, m_numEndUploads);
599 EXPECT_EQ(1, m_numTotalUploads); 581 EXPECT_EQ(1, m_numTotalUploads);
600 582
583 thread.reset();
601 controller->setMonotonicTimeNow(0); 584 controller->setMonotonicTimeNow(0);
602 controller->setUpdateMoreTexturesTime(0.1); 585 controller->setUpdateMoreTexturesTime(0.1);
603 controller->setUpdateMoreTexturesSize(1); 586 controller->setUpdateMoreTexturesSize(1);
604 // Enough time for 2 updates. 587 // Enough time for 2 updates.
605 controller->updateMoreTextures(0.22); 588 controller->updateMoreTextures(0.22);
606 runPendingTasks(&thread, controller.get()); 589 EXPECT_TRUE(thread.hasPendingTask());
607 EXPECT_TRUE(client.completedCalled()); 590 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread.pend ingDelayMs() / 1000.0);
591 thread.runPendingTask();
608 EXPECT_EQ(3, m_numBeginUploads); 592 EXPECT_EQ(3, m_numBeginUploads);
609 EXPECT_EQ(3, m_numEndUploads); 593 EXPECT_EQ(3, m_numEndUploads);
610 EXPECT_EQ(3, m_numTotalUploads); 594 EXPECT_EQ(3, m_numTotalUploads);
611 } 595 }
612 596
613 TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates) 597 TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates)
614 { 598 {
615 FakeCCTextureUpdateControllerClient client;
616 FakeCCThread thread; 599 FakeCCThread thread;
617 600
618 setMaxUploadCountPerUpdate(1); 601 setMaxUploadCountPerUpdate(1);
619 appendFullUploadsToUpdateQueue(2); 602 appendFullUploadsToUpdateQueue(2);
620 appendPartialUploadsToUpdateQueue(0); 603 appendPartialUploadsToUpdateQueue(0);
621 604
622 DebugScopedSetImplThread implThread; 605 DebugScopedSetImplThread implThread;
623 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); 606 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_u ploader));
624 607
625 controller->setMonotonicTimeNow(0); 608 controller->setMonotonicTimeNow(0);
626 controller->setUpdateMoreTexturesTime(0.1); 609 controller->setUpdateMoreTexturesTime(0.1);
627 controller->setUpdateMoreTexturesSize(1); 610 controller->setUpdateMoreTexturesSize(1);
628 // Enough time for 3 updates but only 2 necessary. 611 // Enough time for 3 updates but only 2 necessary.
629 controller->updateMoreTextures(0.31); 612 controller->updateMoreTextures(0.31);
630 runPendingTasks(&thread, controller.get()); 613 EXPECT_TRUE(thread.hasPendingTask());
631 EXPECT_TRUE(client.completedCalled()); 614 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread.pend ingDelayMs() / 1000.0);
615 thread.runPendingTask();
616 EXPECT_TRUE(thread.hasPendingTask());
617 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread.pend ingDelayMs() / 1000.0);
618 thread.runPendingTask();
632 EXPECT_EQ(2, m_numBeginUploads); 619 EXPECT_EQ(2, m_numBeginUploads);
633 EXPECT_EQ(2, m_numEndUploads); 620 EXPECT_EQ(2, m_numEndUploads);
634 EXPECT_EQ(2, m_numTotalUploads); 621 EXPECT_EQ(2, m_numTotalUploads);
635 622
623 thread.reset();
636 controller->setMonotonicTimeNow(0); 624 controller->setMonotonicTimeNow(0);
637 controller->setUpdateMoreTexturesTime(0.1); 625 controller->setUpdateMoreTexturesTime(0.1);
638 controller->setUpdateMoreTexturesSize(1); 626 controller->setUpdateMoreTexturesSize(1);
639 // Enough time for updates but no more updates left. 627 // Enough time for updates but no more updates left.
640 controller->updateMoreTextures(0.31); 628 controller->updateMoreTextures(0.31);
641 runPendingTasks(&thread, controller.get()); 629 EXPECT_FALSE(thread.hasPendingTask());
642 EXPECT_TRUE(client.completedCalled());
643 EXPECT_EQ(2, m_numBeginUploads); 630 EXPECT_EQ(2, m_numBeginUploads);
644 EXPECT_EQ(2, m_numEndUploads); 631 EXPECT_EQ(2, m_numEndUploads);
645 EXPECT_EQ(2, m_numTotalUploads); 632 EXPECT_EQ(2, m_numTotalUploads);
646 } 633 }
647 634
648 TEST_F(CCTextureUpdateControllerTest, UpdatesCompleteInFiniteTime) 635 TEST_F(CCTextureUpdateControllerTest, UpdatesCompleteInFiniteTime)
649 { 636 {
650 FakeCCTextureUpdateControllerClient client;
651 FakeCCThread thread; 637 FakeCCThread thread;
652 638
653 setMaxUploadCountPerUpdate(1); 639 setMaxUploadCountPerUpdate(1);
654 appendFullUploadsToUpdateQueue(2); 640 appendFullUploadsToUpdateQueue(2);
655 appendPartialUploadsToUpdateQueue(0); 641 appendPartialUploadsToUpdateQueue(0);
656 642
657 DebugScopedSetImplThread implThread; 643 DebugScopedSetImplThread implThread;
658 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); 644 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_u ploader));
659 645
660 controller->setMonotonicTimeNow(0); 646 controller->setMonotonicTimeNow(0);
661 controller->setUpdateMoreTexturesTime(0.5); 647 controller->setUpdateMoreTexturesTime(0.5);
662 controller->setUpdateMoreTexturesSize(1); 648 controller->setUpdateMoreTexturesSize(1);
663 649
664 for (int i = 0; i < 100; i++) { 650 for (int i = 0; i < 100; i++) {
665 if (client.completedCalled()) 651 if (!controller->hasMoreUpdates())
666 break; 652 break;
667 653
668 // Not enough time for any updates. 654 // Not enough time for any updates.
669 controller->updateMoreTextures(0.4); 655 controller->updateMoreTextures(0.4);
670 runPendingTasks(&thread, controller.get()); 656
657 if (thread.hasPendingTask()) {
658 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thr ead.pendingDelayMs() / 1000.0);
659 thread.runPendingTask();
660 }
671 } 661 }
672 662
673 EXPECT_TRUE(client.completedCalled());
674 EXPECT_EQ(2, m_numBeginUploads); 663 EXPECT_EQ(2, m_numBeginUploads);
675 EXPECT_EQ(2, m_numEndUploads); 664 EXPECT_EQ(2, m_numEndUploads);
676 EXPECT_EQ(2, m_numTotalUploads); 665 EXPECT_EQ(2, m_numTotalUploads);
677 } 666 }
678 667
679 } // namespace 668 } // namespace
OLDNEW
« no previous file with comments | « cc/CCTextureUpdateController.cpp ('k') | cc/CCThreadProxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698