| 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> | 
|    11  |    11  | 
|    12 #include "base/macros.h" |    12 #include "base/macros.h" | 
|    13 #include "base/metrics/histogram_samples.h" |    13 #include "base/metrics/histogram_samples.h" | 
|    14 #include "base/test/histogram_tester.h" |    14 #include "base/test/histogram_tester.h" | 
|    15 #include "base/test/simple_test_tick_clock.h" |    15 #include "base/test/simple_test_tick_clock.h" | 
|    16 #include "content/browser/media/session/audio_focus_delegate.h" |    16 #include "content/browser/media/session/audio_focus_delegate.h" | 
 |    17 #include "content/browser/media/session/media_session_observer.h" | 
|    17 #include "content/browser/media/session/mock_media_session_player_observer.h" |    18 #include "content/browser/media/session/mock_media_session_player_observer.h" | 
|    18 #include "content/public/browser/web_contents.h" |    19 #include "content/public/browser/web_contents.h" | 
|    19 #include "content/public/browser/web_contents_observer.h" |  | 
|    20 #include "content/public/test/content_browser_test.h" |    20 #include "content/public/test/content_browser_test.h" | 
|    21 #include "content/shell/browser/shell.h" |    21 #include "content/shell/browser/shell.h" | 
|    22 #include "media/base/media_content_type.h" |    22 #include "media/base/media_content_type.h" | 
|    23 #include "testing/gmock/include/gmock/gmock.h" |    23 #include "testing/gmock/include/gmock/gmock.h" | 
|    24  |    24  | 
|    25 using content::WebContents; |    25 using content::WebContents; | 
|    26 using content::WebContentsObserver; |  | 
|    27 using content::MediaSession; |    26 using content::MediaSession; | 
|    28 using content::AudioFocusDelegate; |    27 using content::AudioFocusDelegate; | 
|    29 using content::MediaSessionPlayerObserver; |    28 using content::MediaSessionPlayerObserver; | 
|    30 using content::MediaSessionUmaHelper; |    29 using content::MediaSessionUmaHelper; | 
|    31 using content::MockMediaSessionPlayerObserver; |    30 using content::MockMediaSessionPlayerObserver; | 
|    32  |    31  | 
|    33 using ::testing::Expectation; |    32 using ::testing::Expectation; | 
|    34  |    33  | 
|    35 namespace { |    34 namespace { | 
|    36  |    35  | 
|    37 const double kDefaultVolumeMultiplier = 1.0; |    36 const double kDefaultVolumeMultiplier = 1.0; | 
|    38 const double kDuckingVolumeMultiplier = 0.2; |    37 const double kDuckingVolumeMultiplier = 0.2; | 
|    39  |    38  | 
|    40 class MockAudioFocusDelegate : public AudioFocusDelegate { |    39 class MockAudioFocusDelegate : public AudioFocusDelegate { | 
|    41  public: |    40  public: | 
|    42   bool RequestAudioFocus(content::AudioFocusManager::AudioFocusType) override { |    41   bool RequestAudioFocus(content::AudioFocusManager::AudioFocusType) override { | 
|    43     return true; |    42     return true; | 
|    44   } |    43   } | 
|    45  |    44  | 
|    46   void AbandonAudioFocus() override { |    45   void AbandonAudioFocus() override { | 
|    47   } |    46   } | 
|    48 }; |    47 }; | 
|    49  |    48  | 
|    50 class MockWebContentsObserver : public WebContentsObserver { |    49 class MockMediaSessionObserver : public content::MediaSessionObserver { | 
|    51  public: |    50  public: | 
|    52   MockWebContentsObserver(WebContents* web_contents) |    51   MockMediaSessionObserver(MediaSession* session) | 
|    53       : WebContentsObserver(web_contents) {} |    52       : MediaSessionObserver(session) {} | 
|    54  |    53  | 
|    55   MOCK_METHOD2(MediaSessionStateChanged, |    54   MOCK_METHOD2(MediaSessionStateChanged, | 
|    56                void(bool is_controllable, bool is_suspended)); |    55                void(bool is_controllable, bool is_suspended)); | 
|    57 }; |    56 }; | 
|    58  |    57  | 
|    59 }  // namespace |    58 }  // namespace | 
|    60  |    59  | 
|    61 class MediaSessionBrowserTest : public content::ContentBrowserTest { |    60 class MediaSessionBrowserTest : public content::ContentBrowserTest { | 
|    62  protected: |    61  protected: | 
|    63   MediaSessionBrowserTest() = default; |    62   MediaSessionBrowserTest() = default; | 
|    64  |    63  | 
|    65   void SetUpOnMainThread() override { |    64   void SetUpOnMainThread() override { | 
|    66     ContentBrowserTest::SetUpOnMainThread(); |    65     ContentBrowserTest::SetUpOnMainThread(); | 
|    67  |    66  | 
|    68     mock_web_contents_observer_.reset( |    67     mock_media_session_observer_.reset(new MockMediaSessionObserver( | 
|    69         new MockWebContentsObserver(shell()->web_contents())); |    68         MediaSession::Get(shell()->web_contents()))); | 
|    70     media_session_ = MediaSession::Get(shell()->web_contents()); |    69     media_session_ = MediaSession::Get(shell()->web_contents()); | 
|    71     media_session_->SetDelegateForTests( |    70     media_session_->SetDelegateForTests( | 
|    72         std::unique_ptr<AudioFocusDelegate>(new MockAudioFocusDelegate())); |    71         std::unique_ptr<AudioFocusDelegate>(new MockAudioFocusDelegate())); | 
|    73     ASSERT_TRUE(media_session_); |    72     ASSERT_TRUE(media_session_); | 
|    74   } |    73   } | 
|    75  |    74  | 
|    76   void TearDownOnMainThread() override { |    75   void TearDownOnMainThread() override { | 
|    77     mock_web_contents_observer_.reset(); |    76     mock_media_session_observer_.reset(); | 
|    78  |    77  | 
|    79     media_session_->RemoveAllPlayersForTest(); |    78     media_session_->RemoveAllPlayersForTest(); | 
|    80     media_session_ = nullptr; |    79     media_session_ = nullptr; | 
|    81  |    80  | 
|    82     ContentBrowserTest::TearDownOnMainThread(); |    81     ContentBrowserTest::TearDownOnMainThread(); | 
|    83   } |    82   } | 
|    84  |    83  | 
|    85   void StartNewPlayer( |    84   void StartNewPlayer( | 
|    86       MockMediaSessionPlayerObserver* player_observer, |    85       MockMediaSessionPlayerObserver* player_observer, | 
|    87       media::MediaContentType media_content_type) { |    86       media::MediaContentType media_content_type) { | 
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   145   } |   144   } | 
|   146  |   145  | 
|   147   void SystemStartDucking() { |   146   void SystemStartDucking() { | 
|   148     media_session_->StartDucking(); |   147     media_session_->StartDucking(); | 
|   149   } |   148   } | 
|   150  |   149  | 
|   151   void SystemStopDucking() { |   150   void SystemStopDucking() { | 
|   152     media_session_->StopDucking(); |   151     media_session_->StopDucking(); | 
|   153   } |   152   } | 
|   154  |   153  | 
|   155   MockWebContentsObserver* mock_web_contents_observer() { |   154   MockMediaSessionObserver* mock_media_session_observer() { | 
|   156     return mock_web_contents_observer_.get(); |   155     return mock_media_session_observer_.get(); | 
|   157   } |   156   } | 
|   158  |   157  | 
|   159   std::unique_ptr<MediaSession> CreateDummyMediaSession() { |   158   std::unique_ptr<MediaSession> CreateDummyMediaSession() { | 
|   160     return std::unique_ptr<MediaSession>(new MediaSession(nullptr)); |   159     return std::unique_ptr<MediaSession>(new MediaSession(nullptr)); | 
|   161   } |   160   } | 
|   162  |   161  | 
|   163   MediaSessionUmaHelper* GetMediaSessionUMAHelper() { |   162   MediaSessionUmaHelper* GetMediaSessionUMAHelper() { | 
|   164     return media_session_->uma_helper_for_test(); |   163     return media_session_->uma_helper_for_test(); | 
|   165   } |   164   } | 
|   166  |   165  | 
|   167  protected: |   166  protected: | 
|   168   MediaSession* media_session_; |   167   MediaSession* media_session_; | 
|   169   std::unique_ptr<MockWebContentsObserver> mock_web_contents_observer_; |   168   std::unique_ptr<MockMediaSessionObserver> mock_media_session_observer_; | 
|   170  |   169  | 
|   171   DISALLOW_COPY_AND_ASSIGN(MediaSessionBrowserTest); |   170   DISALLOW_COPY_AND_ASSIGN(MediaSessionBrowserTest); | 
|   172 }; |   171 }; | 
|   173  |   172  | 
|   174 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   173 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   175                        PlayersFromSameObserverDoNotStopEachOtherInSameSession) { |   174                        PlayersFromSameObserverDoNotStopEachOtherInSameSession) { | 
|   176   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   175   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   177       new MockMediaSessionPlayerObserver); |   176       new MockMediaSessionPlayerObserver); | 
|   178  |   177  | 
|   179   StartNewPlayer(player_observer.get(), |   178   StartNewPlayer(player_observer.get(), | 
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   583   EXPECT_TRUE(player_observer->IsPlaying(0)); |   582   EXPECT_TRUE(player_observer->IsPlaying(0)); | 
|   584   EXPECT_TRUE(player_observer->IsPlaying(1)); |   583   EXPECT_TRUE(player_observer->IsPlaying(1)); | 
|   585   EXPECT_TRUE(player_observer->IsPlaying(2)); |   584   EXPECT_TRUE(player_observer->IsPlaying(2)); | 
|   586   EXPECT_TRUE(player_observer->IsPlaying(3)); |   585   EXPECT_TRUE(player_observer->IsPlaying(3)); | 
|   587  |   586  | 
|   588   EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, |   587   EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, | 
|   589             GetSessionAudioFocusType()); |   588             GetSessionAudioFocusType()); | 
|   590 } |   589 } | 
|   591  |   590  | 
|   592 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { |   591 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) { | 
|   593   EXPECT_CALL(*mock_web_contents_observer(), |   592   EXPECT_CALL(*mock_media_session_observer(), | 
|   594               MediaSessionStateChanged(true, false)); |   593               MediaSessionStateChanged(true, false)); | 
|   595  |   594  | 
|   596   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   595   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   597       new MockMediaSessionPlayerObserver); |   596       new MockMediaSessionPlayerObserver); | 
|   598  |   597  | 
|   599   // Starting a player with a content type should show the media controls. |   598   // Starting a player with a content type should show the media controls. | 
|   600   StartNewPlayer(player_observer.get(), |   599   StartNewPlayer(player_observer.get(), | 
|   601                  media::MediaContentType::Persistent); |   600                  media::MediaContentType::Persistent); | 
|   602  |   601  | 
|   603   EXPECT_TRUE(IsControllable()); |   602   EXPECT_TRUE(IsControllable()); | 
|   604   EXPECT_FALSE(IsSuspended()); |   603   EXPECT_FALSE(IsSuspended()); | 
|   605 } |   604 } | 
|   606  |   605  | 
|   607 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { |   606 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) { | 
|   608   EXPECT_CALL(*mock_web_contents_observer(), |   607   EXPECT_CALL(*mock_media_session_observer(), | 
|   609               MediaSessionStateChanged(false, false)); |   608               MediaSessionStateChanged(false, false)); | 
|   610  |   609  | 
|   611   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   610   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   612       new MockMediaSessionPlayerObserver); |   611       new MockMediaSessionPlayerObserver); | 
|   613  |   612  | 
|   614   // Starting a player with a transient type should not show the media controls. |   613   // Starting a player with a transient type should not show the media controls. | 
|   615   StartNewPlayer(player_observer.get(), |   614   StartNewPlayer(player_observer.get(), | 
|   616                  media::MediaContentType::Transient); |   615                  media::MediaContentType::Transient); | 
|   617  |   616  | 
|   618   EXPECT_FALSE(IsControllable()); |   617   EXPECT_FALSE(IsControllable()); | 
|   619   EXPECT_FALSE(IsSuspended()); |   618   EXPECT_FALSE(IsSuspended()); | 
|   620 } |   619 } | 
|   621  |   620  | 
|   622 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { |   621 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) { | 
|   623   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   622   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   624                                          MediaSessionStateChanged(true, false)); |   623                                          MediaSessionStateChanged(true, false)); | 
|   625   EXPECT_CALL(*mock_web_contents_observer(), |   624   EXPECT_CALL(*mock_media_session_observer(), | 
|   626               MediaSessionStateChanged(false, true)) |   625               MediaSessionStateChanged(false, true)) | 
|   627       .After(showControls); |   626       .After(showControls); | 
|   628  |   627  | 
|   629   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   628   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   630       new MockMediaSessionPlayerObserver); |   629       new MockMediaSessionPlayerObserver); | 
|   631  |   630  | 
|   632   StartNewPlayer(player_observer.get(), |   631   StartNewPlayer(player_observer.get(), | 
|   633                  media::MediaContentType::Persistent); |   632                  media::MediaContentType::Persistent); | 
|   634  |   633  | 
|   635   RemovePlayers(player_observer.get()); |   634   RemovePlayers(player_observer.get()); | 
|   636  |   635  | 
|   637   EXPECT_FALSE(IsControllable()); |   636   EXPECT_FALSE(IsControllable()); | 
|   638   EXPECT_TRUE(IsSuspended()); |   637   EXPECT_TRUE(IsSuspended()); | 
|   639 } |   638 } | 
|   640  |   639  | 
|   641 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { |   640 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) { | 
|   642   EXPECT_CALL(*mock_web_contents_observer(), |   641   EXPECT_CALL(*mock_media_session_observer(), | 
|   643               MediaSessionStateChanged(true, false)); |   642               MediaSessionStateChanged(true, false)); | 
|   644  |   643  | 
|   645   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   644   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   646       new MockMediaSessionPlayerObserver); |   645       new MockMediaSessionPlayerObserver); | 
|   647  |   646  | 
|   648   StartNewPlayer(player_observer.get(), |   647   StartNewPlayer(player_observer.get(), | 
|   649                  media::MediaContentType::Persistent); |   648                  media::MediaContentType::Persistent); | 
|   650  |   649  | 
|   651   // Transient player join the session without affecting the controls. |   650   // Transient player join the session without affecting the controls. | 
|   652   StartNewPlayer(player_observer.get(), |   651   StartNewPlayer(player_observer.get(), | 
|   653                  media::MediaContentType::Transient); |   652                  media::MediaContentType::Transient); | 
|   654  |   653  | 
|   655   EXPECT_TRUE(IsControllable()); |   654   EXPECT_TRUE(IsControllable()); | 
|   656   EXPECT_FALSE(IsSuspended()); |   655   EXPECT_FALSE(IsSuspended()); | 
|   657 } |   656 } | 
|   658  |   657  | 
|   659 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   658 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   660                        ControlsShownAfterContentAdded) { |   659                        ControlsShownAfterContentAdded) { | 
|   661   Expectation dontShowControls = EXPECT_CALL( |   660   Expectation dontShowControls = EXPECT_CALL( | 
|   662       *mock_web_contents_observer(), MediaSessionStateChanged(false, false)); |   661       *mock_media_session_observer(), MediaSessionStateChanged(false, false)); | 
|   663   EXPECT_CALL(*mock_web_contents_observer(), |   662   EXPECT_CALL(*mock_media_session_observer(), | 
|   664               MediaSessionStateChanged(true, false)) |   663               MediaSessionStateChanged(true, false)) | 
|   665       .After(dontShowControls); |   664       .After(dontShowControls); | 
|   666  |   665  | 
|   667   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   666   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   668       new MockMediaSessionPlayerObserver); |   667       new MockMediaSessionPlayerObserver); | 
|   669  |   668  | 
|   670   StartNewPlayer(player_observer.get(), |   669   StartNewPlayer(player_observer.get(), | 
|   671                  media::MediaContentType::Transient); |   670                  media::MediaContentType::Transient); | 
|   672  |   671  | 
|   673   // The controls are shown when the content player is added. |   672   // The controls are shown when the content player is added. | 
|   674   StartNewPlayer(player_observer.get(), |   673   StartNewPlayer(player_observer.get(), | 
|   675                  media::MediaContentType::Persistent); |   674                  media::MediaContentType::Persistent); | 
|   676  |   675  | 
|   677   EXPECT_TRUE(IsControllable()); |   676   EXPECT_TRUE(IsControllable()); | 
|   678   EXPECT_FALSE(IsSuspended()); |   677   EXPECT_FALSE(IsSuspended()); | 
|   679 } |   678 } | 
|   680  |   679  | 
|   681 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   680 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   682                        ControlsStayIfOnlyOnePlayerHasBeenPaused) { |   681                        ControlsStayIfOnlyOnePlayerHasBeenPaused) { | 
|   683   EXPECT_CALL(*mock_web_contents_observer(), |   682   EXPECT_CALL(*mock_media_session_observer(), | 
|   684               MediaSessionStateChanged(true, false)); |   683               MediaSessionStateChanged(true, false)); | 
|   685  |   684  | 
|   686   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   685   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   687       new MockMediaSessionPlayerObserver); |   686       new MockMediaSessionPlayerObserver); | 
|   688  |   687  | 
|   689   StartNewPlayer(player_observer.get(), |   688   StartNewPlayer(player_observer.get(), | 
|   690                  media::MediaContentType::Persistent); |   689                  media::MediaContentType::Persistent); | 
|   691   StartNewPlayer(player_observer.get(), |   690   StartNewPlayer(player_observer.get(), | 
|   692                  media::MediaContentType::Transient); |   691                  media::MediaContentType::Transient); | 
|   693  |   692  | 
|   694   // Removing only content player doesn't hide the controls since the session |   693   // Removing only content player doesn't hide the controls since the session | 
|   695   // is still active. |   694   // is still active. | 
|   696   RemovePlayer(player_observer.get(), 0); |   695   RemovePlayer(player_observer.get(), 0); | 
|   697  |   696  | 
|   698   EXPECT_TRUE(IsControllable()); |   697   EXPECT_TRUE(IsControllable()); | 
|   699   EXPECT_FALSE(IsSuspended()); |   698   EXPECT_FALSE(IsSuspended()); | 
|   700 } |   699 } | 
|   701  |   700  | 
|   702 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   701 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   703                        ControlsHideWhenTheLastPlayerIsRemoved) { |   702                        ControlsHideWhenTheLastPlayerIsRemoved) { | 
|   704   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   703   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   705                                          MediaSessionStateChanged(true, false)); |   704                                          MediaSessionStateChanged(true, false)); | 
|   706   EXPECT_CALL(*mock_web_contents_observer(), |   705   EXPECT_CALL(*mock_media_session_observer(), | 
|   707               MediaSessionStateChanged(false, true)) |   706               MediaSessionStateChanged(false, true)) | 
|   708       .After(showControls); |   707       .After(showControls); | 
|   709   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   708   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   710       new MockMediaSessionPlayerObserver); |   709       new MockMediaSessionPlayerObserver); | 
|   711  |   710  | 
|   712   StartNewPlayer(player_observer.get(), |   711   StartNewPlayer(player_observer.get(), | 
|   713                  media::MediaContentType::Persistent); |   712                  media::MediaContentType::Persistent); | 
|   714   StartNewPlayer(player_observer.get(), |   713   StartNewPlayer(player_observer.get(), | 
|   715                  media::MediaContentType::Persistent); |   714                  media::MediaContentType::Persistent); | 
|   716  |   715  | 
|   717   RemovePlayer(player_observer.get(), 0); |   716   RemovePlayer(player_observer.get(), 0); | 
|   718  |   717  | 
|   719   EXPECT_TRUE(IsControllable()); |   718   EXPECT_TRUE(IsControllable()); | 
|   720   EXPECT_FALSE(IsSuspended()); |   719   EXPECT_FALSE(IsSuspended()); | 
|   721  |   720  | 
|   722   RemovePlayer(player_observer.get(), 1); |   721   RemovePlayer(player_observer.get(), 1); | 
|   723  |   722  | 
|   724   EXPECT_FALSE(IsControllable()); |   723   EXPECT_FALSE(IsControllable()); | 
|   725   EXPECT_TRUE(IsSuspended()); |   724   EXPECT_TRUE(IsSuspended()); | 
|   726 } |   725 } | 
|   727  |   726  | 
|   728 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   727 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   729                        ControlsHideWhenAllThePlayersAreRemoved) { |   728                        ControlsHideWhenAllThePlayersAreRemoved) { | 
|   730   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   729   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   731                                          MediaSessionStateChanged(true, false)); |   730                                          MediaSessionStateChanged(true, false)); | 
|   732   EXPECT_CALL(*mock_web_contents_observer(), |   731   EXPECT_CALL(*mock_media_session_observer(), | 
|   733               MediaSessionStateChanged(false, true)) |   732               MediaSessionStateChanged(false, true)) | 
|   734       .After(showControls); |   733       .After(showControls); | 
|   735  |   734  | 
|   736   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   735   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   737       new MockMediaSessionPlayerObserver); |   736       new MockMediaSessionPlayerObserver); | 
|   738  |   737  | 
|   739   StartNewPlayer(player_observer.get(), |   738   StartNewPlayer(player_observer.get(), | 
|   740                  media::MediaContentType::Persistent); |   739                  media::MediaContentType::Persistent); | 
|   741   StartNewPlayer(player_observer.get(), |   740   StartNewPlayer(player_observer.get(), | 
|   742                  media::MediaContentType::Persistent); |   741                  media::MediaContentType::Persistent); | 
|   743  |   742  | 
|   744   RemovePlayers(player_observer.get()); |   743   RemovePlayers(player_observer.get()); | 
|   745  |   744  | 
|   746   EXPECT_FALSE(IsControllable()); |   745   EXPECT_FALSE(IsControllable()); | 
|   747   EXPECT_TRUE(IsSuspended()); |   746   EXPECT_TRUE(IsSuspended()); | 
|   748 } |   747 } | 
|   749  |   748  | 
|   750 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   749 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   751                        ControlsNotHideWhenTheLastPlayerIsPaused) { |   750                        ControlsNotHideWhenTheLastPlayerIsPaused) { | 
|   752   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   751   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   753                                          MediaSessionStateChanged(true, false)); |   752                                          MediaSessionStateChanged(true, false)); | 
|   754   EXPECT_CALL(*mock_web_contents_observer(), |   753   EXPECT_CALL(*mock_media_session_observer(), | 
|   755               MediaSessionStateChanged(true, true)) |   754               MediaSessionStateChanged(true, true)) | 
|   756       .After(showControls); |   755       .After(showControls); | 
|   757  |   756  | 
|   758   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   757   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   759       new MockMediaSessionPlayerObserver); |   758       new MockMediaSessionPlayerObserver); | 
|   760  |   759  | 
|   761   StartNewPlayer(player_observer.get(), |   760   StartNewPlayer(player_observer.get(), | 
|   762                  media::MediaContentType::Persistent); |   761                  media::MediaContentType::Persistent); | 
|   763   StartNewPlayer(player_observer.get(), |   762   StartNewPlayer(player_observer.get(), | 
|   764                  media::MediaContentType::Persistent); |   763                  media::MediaContentType::Persistent); | 
|   765  |   764  | 
|   766   OnPlayerPaused(player_observer.get(), 0); |   765   OnPlayerPaused(player_observer.get(), 0); | 
|   767  |   766  | 
|   768   EXPECT_TRUE(IsControllable()); |   767   EXPECT_TRUE(IsControllable()); | 
|   769   EXPECT_FALSE(IsSuspended()); |   768   EXPECT_FALSE(IsSuspended()); | 
|   770  |   769  | 
|   771   OnPlayerPaused(player_observer.get(), 1); |   770   OnPlayerPaused(player_observer.get(), 1); | 
|   772  |   771  | 
|   773   EXPECT_TRUE(IsControllable()); |   772   EXPECT_TRUE(IsControllable()); | 
|   774   EXPECT_TRUE(IsSuspended()); |   773   EXPECT_TRUE(IsSuspended()); | 
|   775 } |   774 } | 
|   776  |   775  | 
|   777 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   776 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   778                        SuspendTemporaryUpdatesControls) { |   777                        SuspendTemporaryUpdatesControls) { | 
|   779   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   778   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   780                                          MediaSessionStateChanged(true, false)); |   779                                          MediaSessionStateChanged(true, false)); | 
|   781   EXPECT_CALL(*mock_web_contents_observer(), |   780   EXPECT_CALL(*mock_media_session_observer(), | 
|   782               MediaSessionStateChanged(true, true)) |   781               MediaSessionStateChanged(true, true)) | 
|   783       .After(showControls); |   782       .After(showControls); | 
|   784  |   783  | 
|   785   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   784   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   786       new MockMediaSessionPlayerObserver); |   785       new MockMediaSessionPlayerObserver); | 
|   787  |   786  | 
|   788   StartNewPlayer(player_observer.get(), |   787   StartNewPlayer(player_observer.get(), | 
|   789                  media::MediaContentType::Persistent); |   788                  media::MediaContentType::Persistent); | 
|   790  |   789  | 
|   791   SystemSuspend(true); |   790   SystemSuspend(true); | 
|   792  |   791  | 
|   793   EXPECT_TRUE(IsControllable()); |   792   EXPECT_TRUE(IsControllable()); | 
|   794   EXPECT_TRUE(IsSuspended()); |   793   EXPECT_TRUE(IsSuspended()); | 
|   795 } |   794 } | 
|   796  |   795  | 
|   797 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { |   796 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) { | 
|   798   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   797   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   799                                          MediaSessionStateChanged(true, false)); |   798                                          MediaSessionStateChanged(true, false)); | 
|   800   Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |   799   Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   801                                           MediaSessionStateChanged(true, true)) |   800                                           MediaSessionStateChanged(true, true)) | 
|   802                                   .After(showControls); |   801                                   .After(showControls); | 
|   803   EXPECT_CALL(*mock_web_contents_observer(), |   802   EXPECT_CALL(*mock_media_session_observer(), | 
|   804               MediaSessionStateChanged(true, false)) |   803               MediaSessionStateChanged(true, false)) | 
|   805       .After(pauseControls); |   804       .After(pauseControls); | 
|   806  |   805  | 
|   807   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   806   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   808       new MockMediaSessionPlayerObserver); |   807       new MockMediaSessionPlayerObserver); | 
|   809  |   808  | 
|   810   StartNewPlayer(player_observer.get(), |   809   StartNewPlayer(player_observer.get(), | 
|   811                  media::MediaContentType::Persistent); |   810                  media::MediaContentType::Persistent); | 
|   812   SystemSuspend(true); |   811   SystemSuspend(true); | 
|   813   SystemResume(); |   812   SystemResume(); | 
|   814  |   813  | 
|   815   EXPECT_TRUE(IsControllable()); |   814   EXPECT_TRUE(IsControllable()); | 
|   816   EXPECT_FALSE(IsSuspended()); |   815   EXPECT_FALSE(IsSuspended()); | 
|   817 } |   816 } | 
|   818  |   817  | 
|   819 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   818 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   820                        ControlsHideWhenSessionSuspendedPermanently) { |   819                        ControlsHideWhenSessionSuspendedPermanently) { | 
|   821   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   820   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   822                                          MediaSessionStateChanged(true, false)); |   821                                          MediaSessionStateChanged(true, false)); | 
|   823   EXPECT_CALL(*mock_web_contents_observer(), |   822   EXPECT_CALL(*mock_media_session_observer(), | 
|   824               MediaSessionStateChanged(false, true)) |   823               MediaSessionStateChanged(false, true)) | 
|   825       .After(showControls); |   824       .After(showControls); | 
|   826  |   825  | 
|   827   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   826   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   828       new MockMediaSessionPlayerObserver); |   827       new MockMediaSessionPlayerObserver); | 
|   829  |   828  | 
|   830   StartNewPlayer(player_observer.get(), |   829   StartNewPlayer(player_observer.get(), | 
|   831                  media::MediaContentType::Persistent); |   830                  media::MediaContentType::Persistent); | 
|   832  |   831  | 
|   833   SystemSuspend(false); |   832   SystemSuspend(false); | 
|   834  |   833  | 
|   835   EXPECT_FALSE(IsControllable()); |   834   EXPECT_FALSE(IsControllable()); | 
|   836   EXPECT_TRUE(IsSuspended()); |   835   EXPECT_TRUE(IsSuspended()); | 
|   837 } |   836 } | 
|   838  |   837  | 
|   839 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   838 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   840                        ConstrolsHideWhenSessionStops) { |   839                        ConstrolsHideWhenSessionStops) { | 
|   841   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   840   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   842                                          MediaSessionStateChanged(true, false)); |   841                                          MediaSessionStateChanged(true, false)); | 
|   843   Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |   842   Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   844                                           MediaSessionStateChanged(true, true)) |   843                                           MediaSessionStateChanged(true, true)) | 
|   845                                   .After(showControls); |   844                                   .After(showControls); | 
|   846   EXPECT_CALL(*mock_web_contents_observer(), |   845   EXPECT_CALL(*mock_media_session_observer(), | 
|   847               MediaSessionStateChanged(false, true)) |   846               MediaSessionStateChanged(false, true)) | 
|   848       .After(pauseControls); |   847       .After(pauseControls); | 
|   849  |   848  | 
|   850   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   849   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   851       new MockMediaSessionPlayerObserver); |   850       new MockMediaSessionPlayerObserver); | 
|   852  |   851  | 
|   853   StartNewPlayer(player_observer.get(), |   852   StartNewPlayer(player_observer.get(), | 
|   854                  media::MediaContentType::Persistent); |   853                  media::MediaContentType::Persistent); | 
|   855  |   854  | 
|   856   media_session_->Stop(MediaSession::SuspendType::UI); |   855   media_session_->Stop(MediaSession::SuspendType::UI); | 
|   857  |   856  | 
|   858   EXPECT_FALSE(IsControllable()); |   857   EXPECT_FALSE(IsControllable()); | 
|   859   EXPECT_TRUE(IsSuspended()); |   858   EXPECT_TRUE(IsSuspended()); | 
|   860 } |   859 } | 
|   861  |   860  | 
|   862 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   861 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   863                        ControlsHideWhenSessionChangesFromContentToTransient) { |   862                        ControlsHideWhenSessionChangesFromContentToTransient) { | 
|   864   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   863   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   865                                          MediaSessionStateChanged(true, false)); |   864                                          MediaSessionStateChanged(true, false)); | 
|   866   Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |   865   Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   867                                           MediaSessionStateChanged(true, true)) |   866                                           MediaSessionStateChanged(true, true)) | 
|   868                                   .After(showControls); |   867                                   .After(showControls); | 
|   869   EXPECT_CALL(*mock_web_contents_observer(), |   868   EXPECT_CALL(*mock_media_session_observer(), | 
|   870               MediaSessionStateChanged(false, false)) |   869               MediaSessionStateChanged(false, false)) | 
|   871       .After(pauseControls); |   870       .After(pauseControls); | 
|   872  |   871  | 
|   873   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   872   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   874       new MockMediaSessionPlayerObserver); |   873       new MockMediaSessionPlayerObserver); | 
|   875  |   874  | 
|   876   StartNewPlayer(player_observer.get(), |   875   StartNewPlayer(player_observer.get(), | 
|   877                  media::MediaContentType::Persistent); |   876                  media::MediaContentType::Persistent); | 
|   878   SystemSuspend(true); |   877   SystemSuspend(true); | 
|   879  |   878  | 
|   880   // This should reset the session and change it to a transient, so |   879   // This should reset the session and change it to a transient, so | 
|   881   // hide the controls. |   880   // hide the controls. | 
|   882   StartNewPlayer(player_observer.get(), |   881   StartNewPlayer(player_observer.get(), | 
|   883                  media::MediaContentType::Transient); |   882                  media::MediaContentType::Transient); | 
|   884  |   883  | 
|   885   EXPECT_FALSE(IsControllable()); |   884   EXPECT_FALSE(IsControllable()); | 
|   886   EXPECT_FALSE(IsSuspended()); |   885   EXPECT_FALSE(IsSuspended()); | 
|   887 } |   886 } | 
|   888  |   887  | 
|   889 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   888 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   890                        ControlsUpdatedWhenNewPlayerResetsSession) { |   889                        ControlsUpdatedWhenNewPlayerResetsSession) { | 
|   891   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   890   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   892                                          MediaSessionStateChanged(true, false)); |   891                                          MediaSessionStateChanged(true, false)); | 
|   893   Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |   892   Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   894                                           MediaSessionStateChanged(true, true)) |   893                                           MediaSessionStateChanged(true, true)) | 
|   895                                   .After(showControls); |   894                                   .After(showControls); | 
|   896   EXPECT_CALL(*mock_web_contents_observer(), |   895   EXPECT_CALL(*mock_media_session_observer(), | 
|   897               MediaSessionStateChanged(true, false)) |   896               MediaSessionStateChanged(true, false)) | 
|   898       .After(pauseControls); |   897       .After(pauseControls); | 
|   899  |   898  | 
|   900   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   899   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   901       new MockMediaSessionPlayerObserver); |   900       new MockMediaSessionPlayerObserver); | 
|   902  |   901  | 
|   903   StartNewPlayer(player_observer.get(), |   902   StartNewPlayer(player_observer.get(), | 
|   904                  media::MediaContentType::Persistent); |   903                  media::MediaContentType::Persistent); | 
|   905   SystemSuspend(true); |   904   SystemSuspend(true); | 
|   906  |   905  | 
|   907   // This should reset the session and update the controls. |   906   // This should reset the session and update the controls. | 
|   908   StartNewPlayer(player_observer.get(), |   907   StartNewPlayer(player_observer.get(), | 
|   909                  media::MediaContentType::Persistent); |   908                  media::MediaContentType::Persistent); | 
|   910  |   909  | 
|   911   EXPECT_TRUE(IsControllable()); |   910   EXPECT_TRUE(IsControllable()); | 
|   912   EXPECT_FALSE(IsSuspended()); |   911   EXPECT_FALSE(IsSuspended()); | 
|   913 } |   912 } | 
|   914  |   913  | 
|   915 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   914 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   916                        ControlsResumedWhenPlayerIsResumed) { |   915                        ControlsResumedWhenPlayerIsResumed) { | 
|   917   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   916   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   918                                          MediaSessionStateChanged(true, false)); |   917                                          MediaSessionStateChanged(true, false)); | 
|   919   Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |   918   Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   920                                           MediaSessionStateChanged(true, true)) |   919                                           MediaSessionStateChanged(true, true)) | 
|   921                                   .After(showControls); |   920                                   .After(showControls); | 
|   922   EXPECT_CALL(*mock_web_contents_observer(), |   921   EXPECT_CALL(*mock_media_session_observer(), | 
|   923               MediaSessionStateChanged(true, false)) |   922               MediaSessionStateChanged(true, false)) | 
|   924       .After(pauseControls); |   923       .After(pauseControls); | 
|   925  |   924  | 
|   926   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   925   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   927       new MockMediaSessionPlayerObserver); |   926       new MockMediaSessionPlayerObserver); | 
|   928  |   927  | 
|   929   StartNewPlayer(player_observer.get(), |   928   StartNewPlayer(player_observer.get(), | 
|   930                  media::MediaContentType::Persistent); |   929                  media::MediaContentType::Persistent); | 
|   931   SystemSuspend(true); |   930   SystemSuspend(true); | 
|   932  |   931  | 
|   933   // This should resume the session and update the controls. |   932   // This should resume the session and update the controls. | 
|   934   AddPlayer(player_observer.get(), 0, |   933   AddPlayer(player_observer.get(), 0, | 
|   935             media::MediaContentType::Persistent); |   934             media::MediaContentType::Persistent); | 
|   936  |   935  | 
|   937   EXPECT_TRUE(IsControllable()); |   936   EXPECT_TRUE(IsControllable()); | 
|   938   EXPECT_FALSE(IsSuspended()); |   937   EXPECT_FALSE(IsSuspended()); | 
|   939 } |   938 } | 
|   940  |   939  | 
|   941 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   940 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   942                        ControlsUpdatedDueToResumeSessionAction) { |   941                        ControlsUpdatedDueToResumeSessionAction) { | 
|   943   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   942   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   944                                          MediaSessionStateChanged(true, false)); |   943                                          MediaSessionStateChanged(true, false)); | 
|   945   EXPECT_CALL(*mock_web_contents_observer(), |   944   EXPECT_CALL(*mock_media_session_observer(), | 
|   946               MediaSessionStateChanged(true, true)) |   945               MediaSessionStateChanged(true, true)) | 
|   947       .After(showControls); |   946       .After(showControls); | 
|   948  |   947  | 
|   949   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   948   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   950       new MockMediaSessionPlayerObserver); |   949       new MockMediaSessionPlayerObserver); | 
|   951  |   950  | 
|   952   StartNewPlayer(player_observer.get(), |   951   StartNewPlayer(player_observer.get(), | 
|   953                  media::MediaContentType::Persistent); |   952                  media::MediaContentType::Persistent); | 
|   954   UISuspend(); |   953   UISuspend(); | 
|   955  |   954  | 
|   956   EXPECT_TRUE(IsControllable()); |   955   EXPECT_TRUE(IsControllable()); | 
|   957   EXPECT_TRUE(IsSuspended()); |   956   EXPECT_TRUE(IsSuspended()); | 
|   958 } |   957 } | 
|   959  |   958  | 
|   960 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |   959 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 
|   961                        ControlsUpdatedDueToSuspendSessionAction) { |   960                        ControlsUpdatedDueToSuspendSessionAction) { | 
|   962   Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |   961   Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   963                                          MediaSessionStateChanged(true, false)); |   962                                          MediaSessionStateChanged(true, false)); | 
|   964   Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |   963   Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 
|   965                                           MediaSessionStateChanged(true, true)) |   964                                           MediaSessionStateChanged(true, true)) | 
|   966                                   .After(showControls); |   965                                   .After(showControls); | 
|   967   EXPECT_CALL(*mock_web_contents_observer(), |   966   EXPECT_CALL(*mock_media_session_observer(), | 
|   968               MediaSessionStateChanged(true, false)) |   967               MediaSessionStateChanged(true, false)) | 
|   969       .After(pauseControls); |   968       .After(pauseControls); | 
|   970  |   969  | 
|   971   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( |   970   std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 
|   972       new MockMediaSessionPlayerObserver); |   971       new MockMediaSessionPlayerObserver); | 
|   973  |   972  | 
|   974   StartNewPlayer(player_observer.get(), |   973   StartNewPlayer(player_observer.get(), | 
|   975                  media::MediaContentType::Persistent); |   974                  media::MediaContentType::Persistent); | 
|   976   UISuspend(); |   975   UISuspend(); | 
|   977   UIResume(); |   976   UIResume(); | 
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1347                  media::MediaContentType::Persistent); |  1346                  media::MediaContentType::Persistent); | 
|  1348   clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |  1347   clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 
|  1349   media_session_->Stop(MediaSession::SuspendType::UI); |  1348   media_session_->Stop(MediaSession::SuspendType::UI); | 
|  1350  |  1349  | 
|  1351   std::unique_ptr<base::HistogramSamples> samples( |  1350   std::unique_ptr<base::HistogramSamples> samples( | 
|  1352       tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |  1351       tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 
|  1353   EXPECT_EQ(2, samples->TotalCount()); |  1352   EXPECT_EQ(2, samples->TotalCount()); | 
|  1354   EXPECT_EQ(1, samples->GetCount(1000)); |  1353   EXPECT_EQ(1, samples->GetCount(1000)); | 
|  1355   EXPECT_EQ(1, samples->GetCount(10000)); |  1354   EXPECT_EQ(1, samples->GetCount(10000)); | 
|  1356 } |  1355 } | 
| OLD | NEW |