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