| 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 |