OLD | NEW |
| 1 |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 2 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 4 // found in the LICENSE file. |
4 | 5 |
5 #include "content/browser/media/session/media_session.h" | 6 #include "content/browser/media/session/media_session.h" |
6 | 7 |
7 #include <stddef.h> | 8 #include <stddef.h> |
8 | 9 |
9 #include <list> | 10 #include <list> |
10 #include <vector> | 11 #include <vector> |
(...skipping 30 matching lines...) Expand all Loading... |
41 | 42 |
42 void AbandonAudioFocus() override { | 43 void AbandonAudioFocus() override { |
43 } | 44 } |
44 }; | 45 }; |
45 | 46 |
46 class MockWebContentsObserver : public WebContentsObserver { | 47 class MockWebContentsObserver : public WebContentsObserver { |
47 public: | 48 public: |
48 MockWebContentsObserver(WebContents* web_contents) | 49 MockWebContentsObserver(WebContents* web_contents) |
49 : WebContentsObserver(web_contents) {} | 50 : WebContentsObserver(web_contents) {} |
50 | 51 |
51 MOCK_METHOD3(MediaSessionStateChanged, | 52 MOCK_METHOD2(MediaSessionStateChanged, |
52 void(bool is_controllable, bool is_suspended, | 53 void(bool is_controllable, bool is_suspended)); |
53 const content::MediaMetadata& metadata)); | |
54 }; | 54 }; |
55 | 55 |
56 } // namespace | 56 } // namespace |
57 | 57 |
58 class MediaSessionBrowserTest : public content::ContentBrowserTest { | 58 class MediaSessionBrowserTest : public content::ContentBrowserTest { |
59 protected: | 59 protected: |
60 MediaSessionBrowserTest() = default; | 60 MediaSessionBrowserTest() = default; |
61 | 61 |
62 void SetUpOnMainThread() override { | 62 void SetUpOnMainThread() override { |
63 ContentBrowserTest::SetUpOnMainThread(); | 63 ContentBrowserTest::SetUpOnMainThread(); |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
482 EXPECT_TRUE(media_session_observer->IsPlaying(0)); | 482 EXPECT_TRUE(media_session_observer->IsPlaying(0)); |
483 EXPECT_TRUE(media_session_observer->IsPlaying(1)); | 483 EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
484 EXPECT_TRUE(media_session_observer->IsPlaying(2)); | 484 EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
485 EXPECT_TRUE(media_session_observer->IsPlaying(3)); | 485 EXPECT_TRUE(media_session_observer->IsPlaying(3)); |
486 | 486 |
487 EXPECT_EQ(MediaSession::Type::Content, GetSessionType()); | 487 EXPECT_EQ(MediaSession::Type::Content, GetSessionType()); |
488 } | 488 } |
489 | 489 |
490 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { | 490 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { |
491 EXPECT_CALL(*mock_web_contents_observer(), | 491 EXPECT_CALL(*mock_web_contents_observer(), |
492 MediaSessionStateChanged(true, false, testing::_)); | 492 MediaSessionStateChanged(true, false)); |
493 | 493 |
494 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 494 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
495 new MockMediaSessionObserver); | 495 new MockMediaSessionObserver); |
496 | 496 |
497 // Starting a player with a content type should show the media controls. | 497 // Starting a player with a content type should show the media controls. |
498 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 498 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
499 | 499 |
500 EXPECT_TRUE(IsControllable()); | 500 EXPECT_TRUE(IsControllable()); |
501 EXPECT_FALSE(IsSuspended()); | 501 EXPECT_FALSE(IsSuspended()); |
502 } | 502 } |
503 | 503 |
504 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { | 504 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { |
505 EXPECT_CALL(*mock_web_contents_observer(), | 505 EXPECT_CALL(*mock_web_contents_observer(), |
506 MediaSessionStateChanged(false, false, testing::_)); | 506 MediaSessionStateChanged(false, false)); |
507 | 507 |
508 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 508 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
509 new MockMediaSessionObserver); | 509 new MockMediaSessionObserver); |
510 | 510 |
511 // Starting a player with a transient type should not show the media controls. | 511 // Starting a player with a transient type should not show the media controls. |
512 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 512 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
513 | 513 |
514 EXPECT_FALSE(IsControllable()); | 514 EXPECT_FALSE(IsControllable()); |
515 EXPECT_FALSE(IsSuspended()); | 515 EXPECT_FALSE(IsSuspended()); |
516 } | 516 } |
517 | 517 |
518 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { | 518 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { |
519 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 519 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
520 MediaSessionStateChanged(true, false, testing::_)); | 520 MediaSessionStateChanged(true, false)); |
521 EXPECT_CALL(*mock_web_contents_observer(), | 521 EXPECT_CALL(*mock_web_contents_observer(), |
522 MediaSessionStateChanged(false, true, testing::_)) | 522 MediaSessionStateChanged(false, true)) |
523 .After(showControls); | 523 .After(showControls); |
524 | 524 |
525 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 525 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
526 new MockMediaSessionObserver); | 526 new MockMediaSessionObserver); |
527 | 527 |
528 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 528 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
529 | 529 |
530 RemovePlayers(media_session_observer.get()); | 530 RemovePlayers(media_session_observer.get()); |
531 | 531 |
532 EXPECT_FALSE(IsControllable()); | 532 EXPECT_FALSE(IsControllable()); |
533 EXPECT_TRUE(IsSuspended()); | 533 EXPECT_TRUE(IsSuspended()); |
534 } | 534 } |
535 | 535 |
536 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { | 536 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { |
537 EXPECT_CALL(*mock_web_contents_observer(), | 537 EXPECT_CALL(*mock_web_contents_observer(), |
538 MediaSessionStateChanged(true, false, testing::_)); | 538 MediaSessionStateChanged(true, false)); |
539 | 539 |
540 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 540 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
541 new MockMediaSessionObserver); | 541 new MockMediaSessionObserver); |
542 | 542 |
543 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 543 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
544 | 544 |
545 // Transient player join the session without affecting the controls. | 545 // Transient player join the session without affecting the controls. |
546 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 546 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
547 | 547 |
548 EXPECT_TRUE(IsControllable()); | 548 EXPECT_TRUE(IsControllable()); |
549 EXPECT_FALSE(IsSuspended()); | 549 EXPECT_FALSE(IsSuspended()); |
550 } | 550 } |
551 | 551 |
552 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 552 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
553 ControlsShownAfterContentAdded) { | 553 ControlsShownAfterContentAdded) { |
554 Expectation dontShowControls = EXPECT_CALL(*mock_web_contents_observer(), | 554 Expectation dontShowControls = EXPECT_CALL(*mock_web_contents_observer(), |
555 MediaSessionStateChanged(false, false, testing::_)); | 555 MediaSessionStateChanged(false, false)); |
556 EXPECT_CALL(*mock_web_contents_observer(), | 556 EXPECT_CALL(*mock_web_contents_observer(), |
557 MediaSessionStateChanged(true, false, testing::_)) | 557 MediaSessionStateChanged(true, false)) |
558 .After(dontShowControls); | 558 .After(dontShowControls); |
559 | 559 |
560 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 560 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
561 new MockMediaSessionObserver); | 561 new MockMediaSessionObserver); |
562 | 562 |
563 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 563 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
564 | 564 |
565 // The controls are shown when the content player is added. | 565 // The controls are shown when the content player is added. |
566 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 566 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
567 | 567 |
568 EXPECT_TRUE(IsControllable()); | 568 EXPECT_TRUE(IsControllable()); |
569 EXPECT_FALSE(IsSuspended()); | 569 EXPECT_FALSE(IsSuspended()); |
570 } | 570 } |
571 | 571 |
572 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 572 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
573 ControlsStayIfOnlyOnePlayerHasBeenPaused) { | 573 ControlsStayIfOnlyOnePlayerHasBeenPaused) { |
574 EXPECT_CALL(*mock_web_contents_observer(), | 574 EXPECT_CALL(*mock_web_contents_observer(), |
575 MediaSessionStateChanged(true, false, testing::_)); | 575 MediaSessionStateChanged(true, false)); |
576 | 576 |
577 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 577 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
578 new MockMediaSessionObserver); | 578 new MockMediaSessionObserver); |
579 | 579 |
580 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 580 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
581 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 581 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
582 | 582 |
583 // Removing only content player doesn't hide the controls since the session | 583 // Removing only content player doesn't hide the controls since the session |
584 // is still active. | 584 // is still active. |
585 RemovePlayer(media_session_observer.get(), 0); | 585 RemovePlayer(media_session_observer.get(), 0); |
586 | 586 |
587 EXPECT_TRUE(IsControllable()); | 587 EXPECT_TRUE(IsControllable()); |
588 EXPECT_FALSE(IsSuspended()); | 588 EXPECT_FALSE(IsSuspended()); |
589 } | 589 } |
590 | 590 |
591 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 591 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
592 ControlsHideWhenTheLastPlayerIsRemoved) { | 592 ControlsHideWhenTheLastPlayerIsRemoved) { |
593 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 593 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
594 MediaSessionStateChanged(true, false, testing::_)); | 594 MediaSessionStateChanged(true, false)); |
595 EXPECT_CALL(*mock_web_contents_observer(), | 595 EXPECT_CALL(*mock_web_contents_observer(), |
596 MediaSessionStateChanged(false, true, testing::_)) | 596 MediaSessionStateChanged(false, true)) |
597 .After(showControls); | 597 .After(showControls); |
598 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 598 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
599 new MockMediaSessionObserver); | 599 new MockMediaSessionObserver); |
600 | 600 |
601 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 601 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
602 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 602 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
603 | 603 |
604 RemovePlayer(media_session_observer.get(), 0); | 604 RemovePlayer(media_session_observer.get(), 0); |
605 | 605 |
606 EXPECT_TRUE(IsControllable()); | 606 EXPECT_TRUE(IsControllable()); |
607 EXPECT_FALSE(IsSuspended()); | 607 EXPECT_FALSE(IsSuspended()); |
608 | 608 |
609 RemovePlayer(media_session_observer.get(), 1); | 609 RemovePlayer(media_session_observer.get(), 1); |
610 | 610 |
611 EXPECT_FALSE(IsControllable()); | 611 EXPECT_FALSE(IsControllable()); |
612 EXPECT_TRUE(IsSuspended()); | 612 EXPECT_TRUE(IsSuspended()); |
613 } | 613 } |
614 | 614 |
615 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 615 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
616 ControlsHideWhenAllThePlayersAreRemoved) { | 616 ControlsHideWhenAllThePlayersAreRemoved) { |
617 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 617 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
618 MediaSessionStateChanged(true, false, testing::_)); | 618 MediaSessionStateChanged(true, false)); |
619 EXPECT_CALL(*mock_web_contents_observer(), | 619 EXPECT_CALL(*mock_web_contents_observer(), |
620 MediaSessionStateChanged(false, true, testing::_)) | 620 MediaSessionStateChanged(false, true)) |
621 .After(showControls); | 621 .After(showControls); |
622 | 622 |
623 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 623 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
624 new MockMediaSessionObserver); | 624 new MockMediaSessionObserver); |
625 | 625 |
626 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 626 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
627 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 627 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
628 | 628 |
629 RemovePlayers(media_session_observer.get()); | 629 RemovePlayers(media_session_observer.get()); |
630 | 630 |
631 EXPECT_FALSE(IsControllable()); | 631 EXPECT_FALSE(IsControllable()); |
632 EXPECT_TRUE(IsSuspended()); | 632 EXPECT_TRUE(IsSuspended()); |
633 } | 633 } |
634 | 634 |
635 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 635 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
636 ControlsNotHideWhenTheLastPlayerIsPaused) { | 636 ControlsNotHideWhenTheLastPlayerIsPaused) { |
637 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 637 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
638 MediaSessionStateChanged(true, false, testing::_)); | 638 MediaSessionStateChanged(true, false)); |
639 EXPECT_CALL(*mock_web_contents_observer(), | 639 EXPECT_CALL(*mock_web_contents_observer(), |
640 MediaSessionStateChanged(true, true, testing::_)) | 640 MediaSessionStateChanged(true, true)) |
641 .After(showControls); | 641 .After(showControls); |
642 | 642 |
643 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 643 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
644 new MockMediaSessionObserver); | 644 new MockMediaSessionObserver); |
645 | 645 |
646 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 646 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
647 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 647 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
648 | 648 |
649 OnPlayerPaused(media_session_observer.get(), 0); | 649 OnPlayerPaused(media_session_observer.get(), 0); |
650 | 650 |
651 EXPECT_TRUE(IsControllable()); | 651 EXPECT_TRUE(IsControllable()); |
652 EXPECT_FALSE(IsSuspended()); | 652 EXPECT_FALSE(IsSuspended()); |
653 | 653 |
654 OnPlayerPaused(media_session_observer.get(), 1); | 654 OnPlayerPaused(media_session_observer.get(), 1); |
655 | 655 |
656 EXPECT_TRUE(IsControllable()); | 656 EXPECT_TRUE(IsControllable()); |
657 EXPECT_TRUE(IsSuspended()); | 657 EXPECT_TRUE(IsSuspended()); |
658 } | 658 } |
659 | 659 |
660 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 660 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
661 SuspendTemporaryUpdatesControls) { | 661 SuspendTemporaryUpdatesControls) { |
662 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 662 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
663 MediaSessionStateChanged(true, false, testing::_)); | 663 MediaSessionStateChanged(true, false)); |
664 EXPECT_CALL(*mock_web_contents_observer(), | 664 EXPECT_CALL(*mock_web_contents_observer(), |
665 MediaSessionStateChanged(true, true, testing::_)) | 665 MediaSessionStateChanged(true, true)) |
666 .After(showControls); | 666 .After(showControls); |
667 | 667 |
668 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 668 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
669 new MockMediaSessionObserver); | 669 new MockMediaSessionObserver); |
670 | 670 |
671 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 671 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
672 | 672 |
673 SystemSuspend(true); | 673 SystemSuspend(true); |
674 | 674 |
675 EXPECT_TRUE(IsControllable()); | 675 EXPECT_TRUE(IsControllable()); |
676 EXPECT_TRUE(IsSuspended()); | 676 EXPECT_TRUE(IsSuspended()); |
677 } | 677 } |
678 | 678 |
679 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { | 679 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { |
680 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 680 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
681 MediaSessionStateChanged(true, false, testing::_)); | 681 MediaSessionStateChanged(true, false)); |
682 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 682 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
683 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 683 MediaSessionStateChanged(true, true)).After(showControls); |
684 EXPECT_CALL(*mock_web_contents_observer(), | 684 EXPECT_CALL(*mock_web_contents_observer(), |
685 MediaSessionStateChanged(true, false, testing::_)) | 685 MediaSessionStateChanged(true, false)) |
686 .After(pauseControls); | 686 .After(pauseControls); |
687 | 687 |
688 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 688 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
689 new MockMediaSessionObserver); | 689 new MockMediaSessionObserver); |
690 | 690 |
691 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 691 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
692 SystemSuspend(true); | 692 SystemSuspend(true); |
693 SystemResume(); | 693 SystemResume(); |
694 | 694 |
695 EXPECT_TRUE(IsControllable()); | 695 EXPECT_TRUE(IsControllable()); |
696 EXPECT_FALSE(IsSuspended()); | 696 EXPECT_FALSE(IsSuspended()); |
697 } | 697 } |
698 | 698 |
699 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 699 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
700 ControlsHideWhenSessionSuspendedPermanently) { | 700 ControlsHideWhenSessionSuspendedPermanently) { |
701 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 701 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
702 MediaSessionStateChanged(true, false, testing::_)); | 702 MediaSessionStateChanged(true, false)); |
703 EXPECT_CALL(*mock_web_contents_observer(), | 703 EXPECT_CALL(*mock_web_contents_observer(), |
704 MediaSessionStateChanged(false, true, testing::_)) | 704 MediaSessionStateChanged(false, true)) |
705 .After(showControls); | 705 .After(showControls); |
706 | 706 |
707 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 707 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
708 new MockMediaSessionObserver); | 708 new MockMediaSessionObserver); |
709 | 709 |
710 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 710 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
711 | 711 |
712 SystemSuspend(false); | 712 SystemSuspend(false); |
713 | 713 |
714 EXPECT_FALSE(IsControllable()); | 714 EXPECT_FALSE(IsControllable()); |
715 EXPECT_TRUE(IsSuspended()); | 715 EXPECT_TRUE(IsSuspended()); |
716 } | 716 } |
717 | 717 |
718 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 718 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
719 ConstrolsHideWhenSessionStops) { | 719 ConstrolsHideWhenSessionStops) { |
720 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 720 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
721 MediaSessionStateChanged(true, false, testing::_)); | 721 MediaSessionStateChanged(true, false)); |
722 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 722 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
723 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 723 MediaSessionStateChanged(true, true)).After(showControls); |
724 EXPECT_CALL(*mock_web_contents_observer(), | 724 EXPECT_CALL(*mock_web_contents_observer(), |
725 MediaSessionStateChanged(false, true, testing::_)) | 725 MediaSessionStateChanged(false, true)) |
726 .After(pauseControls); | 726 .After(pauseControls); |
727 | 727 |
728 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 728 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
729 new MockMediaSessionObserver); | 729 new MockMediaSessionObserver); |
730 | 730 |
731 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 731 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
732 | 732 |
733 media_session_->Stop(MediaSession::SuspendType::UI); | 733 media_session_->Stop(MediaSession::SuspendType::UI); |
734 | 734 |
735 EXPECT_FALSE(IsControllable()); | 735 EXPECT_FALSE(IsControllable()); |
736 EXPECT_TRUE(IsSuspended()); | 736 EXPECT_TRUE(IsSuspended()); |
737 } | 737 } |
738 | 738 |
739 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 739 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
740 ControlsHideWhenSessionChangesFromContentToTransient) { | 740 ControlsHideWhenSessionChangesFromContentToTransient) { |
741 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 741 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
742 MediaSessionStateChanged(true, false, testing::_)); | 742 MediaSessionStateChanged(true, false)); |
743 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 743 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
744 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 744 MediaSessionStateChanged(true, true)).After(showControls); |
745 EXPECT_CALL(*mock_web_contents_observer(), | 745 EXPECT_CALL(*mock_web_contents_observer(), |
746 MediaSessionStateChanged(false, false, testing::_)) | 746 MediaSessionStateChanged(false, false)) |
747 .After(pauseControls); | 747 .After(pauseControls); |
748 | 748 |
749 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 749 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
750 new MockMediaSessionObserver); | 750 new MockMediaSessionObserver); |
751 | 751 |
752 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 752 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
753 SystemSuspend(true); | 753 SystemSuspend(true); |
754 | 754 |
755 // This should reset the session and change it to a transient, so | 755 // This should reset the session and change it to a transient, so |
756 // hide the controls. | 756 // hide the controls. |
757 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); | 757 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient); |
758 | 758 |
759 EXPECT_FALSE(IsControllable()); | 759 EXPECT_FALSE(IsControllable()); |
760 EXPECT_FALSE(IsSuspended()); | 760 EXPECT_FALSE(IsSuspended()); |
761 } | 761 } |
762 | 762 |
763 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 763 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
764 ControlsUpdatedWhenNewPlayerResetsSession) { | 764 ControlsUpdatedWhenNewPlayerResetsSession) { |
765 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 765 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
766 MediaSessionStateChanged(true, false, testing::_)); | 766 MediaSessionStateChanged(true, false)); |
767 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 767 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
768 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 768 MediaSessionStateChanged(true, true)).After(showControls); |
769 EXPECT_CALL(*mock_web_contents_observer(), | 769 EXPECT_CALL(*mock_web_contents_observer(), |
770 MediaSessionStateChanged(true, false, testing::_)) | 770 MediaSessionStateChanged(true, false)) |
771 .After(pauseControls); | 771 .After(pauseControls); |
772 | 772 |
773 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 773 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
774 new MockMediaSessionObserver); | 774 new MockMediaSessionObserver); |
775 | 775 |
776 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 776 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
777 SystemSuspend(true); | 777 SystemSuspend(true); |
778 | 778 |
779 // This should reset the session and update the controls. | 779 // This should reset the session and update the controls. |
780 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 780 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
781 | 781 |
782 EXPECT_TRUE(IsControllable()); | 782 EXPECT_TRUE(IsControllable()); |
783 EXPECT_FALSE(IsSuspended()); | 783 EXPECT_FALSE(IsSuspended()); |
784 } | 784 } |
785 | 785 |
786 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 786 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
787 ControlsResumedWhenPlayerIsResumed) { | 787 ControlsResumedWhenPlayerIsResumed) { |
788 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 788 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
789 MediaSessionStateChanged(true, false, testing::_)); | 789 MediaSessionStateChanged(true, false)); |
790 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 790 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
791 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 791 MediaSessionStateChanged(true, true)).After(showControls); |
792 EXPECT_CALL(*mock_web_contents_observer(), | 792 EXPECT_CALL(*mock_web_contents_observer(), |
793 MediaSessionStateChanged(true, false, testing::_)) | 793 MediaSessionStateChanged(true, false)) |
794 .After(pauseControls); | 794 .After(pauseControls); |
795 | 795 |
796 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 796 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
797 new MockMediaSessionObserver); | 797 new MockMediaSessionObserver); |
798 | 798 |
799 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 799 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
800 SystemSuspend(true); | 800 SystemSuspend(true); |
801 | 801 |
802 // This should resume the session and update the controls. | 802 // This should resume the session and update the controls. |
803 AddPlayer(media_session_observer.get(), 0, MediaSession::Type::Content); | 803 AddPlayer(media_session_observer.get(), 0, MediaSession::Type::Content); |
804 | 804 |
805 EXPECT_TRUE(IsControllable()); | 805 EXPECT_TRUE(IsControllable()); |
806 EXPECT_FALSE(IsSuspended()); | 806 EXPECT_FALSE(IsSuspended()); |
807 } | 807 } |
808 | 808 |
809 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 809 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
810 ControlsUpdatedDueToResumeSessionAction) { | 810 ControlsUpdatedDueToResumeSessionAction) { |
811 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 811 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
812 MediaSessionStateChanged(true, false, testing::_)); | 812 MediaSessionStateChanged(true, false)); |
813 EXPECT_CALL(*mock_web_contents_observer(), | 813 EXPECT_CALL(*mock_web_contents_observer(), |
814 MediaSessionStateChanged(true, true, testing::_)) | 814 MediaSessionStateChanged(true, true)) |
815 .After(showControls); | 815 .After(showControls); |
816 | 816 |
817 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 817 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
818 new MockMediaSessionObserver); | 818 new MockMediaSessionObserver); |
819 | 819 |
820 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 820 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
821 UISuspend(); | 821 UISuspend(); |
822 | 822 |
823 EXPECT_TRUE(IsControllable()); | 823 EXPECT_TRUE(IsControllable()); |
824 EXPECT_TRUE(IsSuspended()); | 824 EXPECT_TRUE(IsSuspended()); |
825 } | 825 } |
826 | 826 |
827 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 827 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
828 ControlsUpdatedDueToSuspendSessionAction) { | 828 ControlsUpdatedDueToSuspendSessionAction) { |
829 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 829 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
830 MediaSessionStateChanged(true, false, testing::_)); | 830 MediaSessionStateChanged(true, false)); |
831 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 831 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
832 MediaSessionStateChanged(true, true, testing::_)).After(showControls); | 832 MediaSessionStateChanged(true, true)).After(showControls); |
833 EXPECT_CALL(*mock_web_contents_observer(), | 833 EXPECT_CALL(*mock_web_contents_observer(), |
834 MediaSessionStateChanged(true, false, testing::_)) | 834 MediaSessionStateChanged(true, false)) |
835 .After(pauseControls); | 835 .After(pauseControls); |
836 | 836 |
837 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 837 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
838 new MockMediaSessionObserver); | 838 new MockMediaSessionObserver); |
839 | 839 |
840 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 840 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
841 UISuspend(); | 841 UISuspend(); |
842 UIResume(); | 842 UIResume(); |
843 | 843 |
844 EXPECT_TRUE(IsControllable()); | 844 EXPECT_TRUE(IsControllable()); |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1194 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1194 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
1195 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1195 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
1196 media_session_->Stop(MediaSession::SuspendType::UI); | 1196 media_session_->Stop(MediaSession::SuspendType::UI); |
1197 | 1197 |
1198 std::unique_ptr<base::HistogramSamples> samples( | 1198 std::unique_ptr<base::HistogramSamples> samples( |
1199 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1199 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
1200 EXPECT_EQ(2, samples->TotalCount()); | 1200 EXPECT_EQ(2, samples->TotalCount()); |
1201 EXPECT_EQ(1, samples->GetCount(1000)); | 1201 EXPECT_EQ(1, samples->GetCount(1000)); |
1202 EXPECT_EQ(1, samples->GetCount(10000)); | 1202 EXPECT_EQ(1, samples->GetCount(10000)); |
1203 } | 1203 } |
OLD | NEW |