Chromium Code Reviews| 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/android/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/command_line.h" | |
| 12 #include "base/macros.h" | 13 #include "base/macros.h" |
| 13 #include "base/metrics/histogram_samples.h" | 14 #include "base/metrics/histogram_samples.h" |
| 14 #include "base/test/histogram_tester.h" | 15 #include "base/test/histogram_tester.h" |
| 15 #include "base/test/simple_test_clock.h" | 16 #include "base/test/simple_test_clock.h" |
| 16 #include "content/browser/media/android/media_session_observer.h" | 17 #include "content/browser/media/session/media_session_delegate.h" |
| 18 #include "content/browser/media/session/media_session_observer.h" | |
| 17 #include "content/public/browser/web_contents.h" | 19 #include "content/public/browser/web_contents.h" |
| 18 #include "content/public/browser/web_contents_observer.h" | 20 #include "content/public/browser/web_contents_observer.h" |
| 19 #include "content/public/test/content_browser_test.h" | 21 #include "content/public/test/content_browser_test.h" |
| 20 #include "content/shell/browser/shell.h" | 22 #include "content/shell/browser/shell.h" |
| 23 #include "media/base/media_switches.h" | |
| 21 #include "testing/gmock/include/gmock/gmock.h" | 24 #include "testing/gmock/include/gmock/gmock.h" |
| 22 | 25 |
| 23 using content::WebContents; | 26 using content::WebContents; |
| 24 using content::WebContentsObserver; | 27 using content::WebContentsObserver; |
| 25 using content::MediaSession; | 28 using content::MediaSession; |
| 29 using content::MediaSessionDelegate; | |
| 26 using content::MediaSessionObserver; | 30 using content::MediaSessionObserver; |
| 27 using content::MediaSessionUmaHelper; | 31 using content::MediaSessionUmaHelper; |
| 28 | 32 |
| 29 using ::testing::Expectation; | 33 using ::testing::Expectation; |
| 30 | 34 |
| 31 namespace { | 35 namespace { |
| 32 | 36 |
| 37 class MockMediaSessionDelegate : public MediaSessionDelegate { | |
| 38 public: | |
| 39 bool RequestAudioFocus(MediaSession::Type) override { | |
| 40 return true; | |
| 41 } | |
| 42 | |
| 43 void AbandonAudioFocus() override { | |
| 44 } | |
| 45 }; | |
| 46 | |
| 33 class MockMediaSessionObserver : public MediaSessionObserver { | 47 class MockMediaSessionObserver : public MediaSessionObserver { |
| 34 public: | 48 public: |
| 35 MockMediaSessionObserver() | 49 MockMediaSessionObserver() |
| 36 : received_resume_calls_(0), | 50 : received_resume_calls_(0), |
| 37 received_suspend_calls_(0) { | 51 received_suspend_calls_(0) { |
| 38 } | 52 } |
| 39 | 53 |
| 40 ~MockMediaSessionObserver() override = default; | 54 ~MockMediaSessionObserver() override = default; |
| 41 | 55 |
| 42 // Implements MediaSessionObserver. | 56 // Implements MediaSessionObserver. |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 126 class MediaSessionBrowserTest : public content::ContentBrowserTest { | 140 class MediaSessionBrowserTest : public content::ContentBrowserTest { |
| 127 protected: | 141 protected: |
| 128 MediaSessionBrowserTest() = default; | 142 MediaSessionBrowserTest() = default; |
| 129 | 143 |
| 130 void SetUpOnMainThread() override { | 144 void SetUpOnMainThread() override { |
| 131 ContentBrowserTest::SetUpOnMainThread(); | 145 ContentBrowserTest::SetUpOnMainThread(); |
| 132 | 146 |
| 133 mock_web_contents_observer_.reset( | 147 mock_web_contents_observer_.reset( |
| 134 new MockWebContentsObserver(shell()->web_contents())); | 148 new MockWebContentsObserver(shell()->web_contents())); |
| 135 media_session_ = MediaSession::Get(shell()->web_contents()); | 149 media_session_ = MediaSession::Get(shell()->web_contents()); |
| 136 media_session_->ResetJavaRefForTest(); | 150 media_session_->SetDelegateForTest( |
| 151 scoped_ptr<MediaSessionDelegate>(new MockMediaSessionDelegate())); | |
| 137 ASSERT_TRUE(media_session_); | 152 ASSERT_TRUE(media_session_); |
| 138 } | 153 } |
| 139 | 154 |
| 155 void SetUpCommandLine(base::CommandLine* command_line) override { | |
| 156 command_line->AppendSwitch(switches::kEnableDefaultMediaSession); | |
| 157 } | |
| 158 | |
| 140 void TearDownOnMainThread() override { | 159 void TearDownOnMainThread() override { |
| 141 mock_web_contents_observer_.reset(); | 160 mock_web_contents_observer_.reset(); |
| 142 | 161 |
| 143 media_session_->RemoveAllPlayersForTest(); | 162 media_session_->RemoveAllPlayersForTest(); |
| 144 media_session_ = nullptr; | 163 media_session_ = nullptr; |
| 145 | 164 |
| 146 ContentBrowserTest::TearDownOnMainThread(); | 165 ContentBrowserTest::TearDownOnMainThread(); |
| 147 } | 166 } |
| 148 | 167 |
| 149 void StartNewPlayer(MockMediaSessionObserver* media_session_observer, | 168 void StartNewPlayer(MockMediaSessionObserver* media_session_observer, |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 179 | 198 |
| 180 MediaSession::Type GetSessionType() { | 199 MediaSession::Type GetSessionType() { |
| 181 return media_session_->audio_focus_type_for_test(); | 200 return media_session_->audio_focus_type_for_test(); |
| 182 } | 201 } |
| 183 | 202 |
| 184 bool IsControllable() { return media_session_->IsControllable(); } | 203 bool IsControllable() { return media_session_->IsControllable(); } |
| 185 | 204 |
| 186 bool IsSuspended() { return media_session_->IsSuspended(); } | 205 bool IsSuspended() { return media_session_->IsSuspended(); } |
| 187 | 206 |
| 188 void UIResume() { | 207 void UIResume() { |
| 189 media_session_->Resume(); | 208 media_session_->Resume(MediaSession::SuspendType::UI); |
| 190 } | 209 } |
| 191 | 210 |
| 192 void SystemResume() { | 211 void SystemResume() { |
| 193 media_session_->OnResume(nullptr, nullptr); | 212 media_session_->OnResumeInternal(MediaSession::SuspendType::SYSTEM); |
| 194 } | 213 } |
| 195 | 214 |
| 196 void UISuspend() { | 215 void UISuspend() { |
| 197 media_session_->Suspend(); | 216 media_session_->Suspend(MediaSession::SuspendType::UI); |
| 198 } | 217 } |
| 199 | 218 |
| 200 void SystemSuspend(bool temporary) { | 219 void SystemSuspend(bool temporary) { |
| 201 media_session_->OnSuspend(nullptr, nullptr, temporary); | 220 media_session_->OnSuspendInternal( |
| 221 MediaSession::SuspendType::SYSTEM, | |
| 222 temporary ? MediaSession::State::SUSPENDED | |
| 223 : MediaSession::State::INACTIVE); | |
| 202 } | 224 } |
| 203 | 225 |
| 204 void SystemSetVolumeMultiplier(double volume_multiplier) { | 226 void SystemSetVolumeMultiplier(double volume_multiplier) { |
| 205 media_session_->OnSetVolumeMultiplier( | 227 media_session_->SetVolumeMultiplier(volume_multiplier); |
| 206 nullptr, nullptr, volume_multiplier); | |
| 207 } | 228 } |
| 208 | 229 |
| 209 MockWebContentsObserver* mock_web_contents_observer() { | 230 MockWebContentsObserver* mock_web_contents_observer() { |
| 210 return mock_web_contents_observer_.get(); | 231 return mock_web_contents_observer_.get(); |
| 211 } | 232 } |
| 212 | 233 |
| 213 scoped_ptr<MediaSession> CreateDummyMediaSession() { | 234 scoped_ptr<MediaSession> CreateDummyMediaSession() { |
| 214 return scoped_ptr<MediaSession>(new MediaSession(nullptr)); | 235 return scoped_ptr<MediaSession>(new MediaSession(nullptr)); |
| 215 } | 236 } |
| 216 | 237 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 357 | 378 |
| 358 EXPECT_FALSE(HasAudioFocus()); | 379 EXPECT_FALSE(HasAudioFocus()); |
| 359 } | 380 } |
| 360 | 381 |
| 361 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StopGivesAwayAudioFocus) { | 382 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StopGivesAwayAudioFocus) { |
| 362 scoped_ptr<MockMediaSessionObserver> media_session_observer( | 383 scoped_ptr<MockMediaSessionObserver> media_session_observer( |
| 363 new MockMediaSessionObserver); | 384 new MockMediaSessionObserver); |
| 364 | 385 |
| 365 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 386 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 366 | 387 |
| 367 media_session_->Stop(); | 388 media_session_->Stop(MediaSession::SuspendType::UI); |
| 368 | 389 |
| 369 EXPECT_FALSE(HasAudioFocus()); | 390 EXPECT_FALSE(HasAudioFocus()); |
| 370 } | 391 } |
| 371 | 392 |
| 372 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeGivesBackAudioFocus) { | 393 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeGivesBackAudioFocus) { |
| 373 scoped_ptr<MockMediaSessionObserver> media_session_observer( | 394 scoped_ptr<MockMediaSessionObserver> media_session_observer( |
| 374 new MockMediaSessionObserver); | 395 new MockMediaSessionObserver); |
| 375 | 396 |
| 376 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 397 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 377 | 398 |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 790 .After(showControls); | 811 .After(showControls); |
| 791 EXPECT_CALL(*mock_web_contents_observer(), | 812 EXPECT_CALL(*mock_web_contents_observer(), |
| 792 MediaSessionStateChanged(false, true)) | 813 MediaSessionStateChanged(false, true)) |
| 793 .After(pauseControls); | 814 .After(pauseControls); |
| 794 | 815 |
| 795 scoped_ptr<MockMediaSessionObserver> media_session_observer( | 816 scoped_ptr<MockMediaSessionObserver> media_session_observer( |
| 796 new MockMediaSessionObserver); | 817 new MockMediaSessionObserver); |
| 797 | 818 |
| 798 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 819 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 799 | 820 |
| 800 media_session_->Stop(); | 821 media_session_->Stop(MediaSession::SuspendType::UI); |
| 801 | 822 |
| 802 EXPECT_FALSE(IsControllable()); | 823 EXPECT_FALSE(IsControllable()); |
| 803 EXPECT_TRUE(IsSuspended()); | 824 EXPECT_TRUE(IsSuspended()); |
| 804 } | 825 } |
| 805 | 826 |
| 806 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 827 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 807 ControlsHideWhenSessionChangesFromContentToTransient) { | 828 ControlsHideWhenSessionChangesFromContentToTransient) { |
| 808 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), | 829 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), |
| 809 MediaSessionStateChanged(true, false)); | 830 MediaSessionStateChanged(true, false)); |
| 810 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), | 831 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1073 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent | 1094 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent |
| 1074 EXPECT_EQ(1, samples->GetCount(2)); // UI | 1095 EXPECT_EQ(1, samples->GetCount(2)); // UI |
| 1075 } | 1096 } |
| 1076 | 1097 |
| 1077 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Stop) { | 1098 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Stop) { |
| 1078 scoped_ptr<MockMediaSessionObserver> media_session_observer( | 1099 scoped_ptr<MockMediaSessionObserver> media_session_observer( |
| 1079 new MockMediaSessionObserver); | 1100 new MockMediaSessionObserver); |
| 1080 base::HistogramTester tester; | 1101 base::HistogramTester tester; |
| 1081 | 1102 |
| 1082 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1103 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1083 media_session_->Stop(); | 1104 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1084 | 1105 |
| 1085 scoped_ptr<base::HistogramSamples> samples( | 1106 scoped_ptr<base::HistogramSamples> samples( |
| 1086 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); | 1107 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); |
| 1087 EXPECT_EQ(1, samples->TotalCount()); | 1108 EXPECT_EQ(1, samples->TotalCount()); |
| 1088 EXPECT_EQ(0, samples->GetCount(0)); // System Transient | 1109 EXPECT_EQ(0, samples->GetCount(0)); // System Transient |
| 1089 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent | 1110 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent |
| 1090 EXPECT_EQ(1, samples->GetCount(2)); // UI | 1111 EXPECT_EQ(1, samples->GetCount(2)); // UI |
| 1091 } | 1112 } |
| 1092 | 1113 |
| 1093 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_ActiveTime_NoActivation) { | 1114 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_ActiveTime_NoActivation) { |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 1110 | 1131 |
| 1111 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1132 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1112 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1133 base::SimpleTestClock* clock = new base::SimpleTestClock(); |
| 1113 clock->SetNow(base::Time::Now()); | 1134 clock->SetNow(base::Time::Now()); |
| 1114 media_session_uma_helper->SetClockForTest( | 1135 media_session_uma_helper->SetClockForTest( |
| 1115 scoped_ptr<base::SimpleTestClock>(clock)); | 1136 scoped_ptr<base::SimpleTestClock>(clock)); |
| 1116 | 1137 |
| 1117 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1138 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1118 | 1139 |
| 1119 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1140 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1120 media_session_->Stop(); | 1141 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1121 | 1142 |
| 1122 scoped_ptr<base::HistogramSamples> samples( | 1143 scoped_ptr<base::HistogramSamples> samples( |
| 1123 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1144 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1124 EXPECT_EQ(1, samples->TotalCount()); | 1145 EXPECT_EQ(1, samples->TotalCount()); |
| 1125 EXPECT_EQ(1, samples->GetCount(1000)); | 1146 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1126 } | 1147 } |
| 1127 | 1148 |
| 1128 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1149 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1129 UMA_ActiveTime_ActivationWithUISuspension) { | 1150 UMA_ActiveTime_ActivationWithUISuspension) { |
| 1130 scoped_ptr<MockMediaSessionObserver> media_session_observer( | 1151 scoped_ptr<MockMediaSessionObserver> media_session_observer( |
| 1131 new MockMediaSessionObserver); | 1152 new MockMediaSessionObserver); |
| 1132 base::HistogramTester tester; | 1153 base::HistogramTester tester; |
| 1133 | 1154 |
| 1134 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1155 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1135 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1156 base::SimpleTestClock* clock = new base::SimpleTestClock(); |
| 1136 clock->SetNow(base::Time::Now()); | 1157 clock->SetNow(base::Time::Now()); |
| 1137 media_session_uma_helper->SetClockForTest( | 1158 media_session_uma_helper->SetClockForTest( |
| 1138 scoped_ptr<base::SimpleTestClock>(clock)); | 1159 scoped_ptr<base::SimpleTestClock>(clock)); |
| 1139 | 1160 |
| 1140 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1161 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1141 | 1162 |
| 1142 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1163 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1143 UISuspend(); | 1164 UISuspend(); |
| 1144 | 1165 |
| 1145 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); | 1166 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); |
| 1146 UIResume(); | 1167 UIResume(); |
| 1147 | 1168 |
| 1148 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1169 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1149 media_session_->Stop(); | 1170 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1150 | 1171 |
| 1151 scoped_ptr<base::HistogramSamples> samples( | 1172 scoped_ptr<base::HistogramSamples> samples( |
| 1152 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1173 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1153 EXPECT_EQ(1, samples->TotalCount()); | 1174 EXPECT_EQ(1, samples->TotalCount()); |
| 1154 EXPECT_EQ(1, samples->GetCount(2000)); | 1175 EXPECT_EQ(1, samples->GetCount(2000)); |
| 1155 } | 1176 } |
| 1156 | 1177 |
| 1157 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1178 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1158 UMA_ActiveTime_ActivationWithSystemSuspension) { | 1179 UMA_ActiveTime_ActivationWithSystemSuspension) { |
| 1159 scoped_ptr<MockMediaSessionObserver> media_session_observer( | 1180 scoped_ptr<MockMediaSessionObserver> media_session_observer( |
| 1160 new MockMediaSessionObserver); | 1181 new MockMediaSessionObserver); |
| 1161 base::HistogramTester tester; | 1182 base::HistogramTester tester; |
| 1162 | 1183 |
| 1163 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1184 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1164 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1185 base::SimpleTestClock* clock = new base::SimpleTestClock(); |
| 1165 clock->SetNow(base::Time::Now()); | 1186 clock->SetNow(base::Time::Now()); |
| 1166 media_session_uma_helper->SetClockForTest( | 1187 media_session_uma_helper->SetClockForTest( |
| 1167 scoped_ptr<base::SimpleTestClock>(clock)); | 1188 scoped_ptr<base::SimpleTestClock>(clock)); |
| 1168 | 1189 |
| 1169 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1190 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1170 | 1191 |
| 1171 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1192 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1172 SystemSuspend(true); | 1193 SystemSuspend(true); |
| 1173 | 1194 |
| 1174 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); | 1195 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); |
| 1175 SystemResume(); | 1196 SystemResume(); |
| 1176 | 1197 |
| 1177 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1198 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1178 media_session_->Stop(); | 1199 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1179 | 1200 |
| 1180 scoped_ptr<base::HistogramSamples> samples( | 1201 scoped_ptr<base::HistogramSamples> samples( |
| 1181 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1202 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1182 EXPECT_EQ(1, samples->TotalCount()); | 1203 EXPECT_EQ(1, samples->TotalCount()); |
| 1183 EXPECT_EQ(1, samples->GetCount(2000)); | 1204 EXPECT_EQ(1, samples->GetCount(2000)); |
| 1184 } | 1205 } |
| 1185 | 1206 |
| 1186 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1207 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1187 UMA_ActiveTime_ActivateSuspendedButNotStopped) { | 1208 UMA_ActiveTime_ActivateSuspendedButNotStopped) { |
| 1188 scoped_ptr<MockMediaSessionObserver> media_session_observer( | 1209 scoped_ptr<MockMediaSessionObserver> media_session_observer( |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1224 | 1245 |
| 1225 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1246 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1226 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1247 base::SimpleTestClock* clock = new base::SimpleTestClock(); |
| 1227 clock->SetNow(base::Time::Now()); | 1248 clock->SetNow(base::Time::Now()); |
| 1228 media_session_uma_helper->SetClockForTest( | 1249 media_session_uma_helper->SetClockForTest( |
| 1229 scoped_ptr<base::SimpleTestClock>(clock)); | 1250 scoped_ptr<base::SimpleTestClock>(clock)); |
| 1230 | 1251 |
| 1231 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1252 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1232 clock->Advance(base::TimeDelta::FromMilliseconds(500)); | 1253 clock->Advance(base::TimeDelta::FromMilliseconds(500)); |
| 1233 SystemSuspend(true); | 1254 SystemSuspend(true); |
| 1234 media_session_->Stop(); | 1255 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1235 | 1256 |
| 1236 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1257 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1237 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); | 1258 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); |
| 1238 SystemResume(); | 1259 SystemResume(); |
| 1239 media_session_->Stop(); | 1260 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1240 | 1261 |
| 1241 scoped_ptr<base::HistogramSamples> samples( | 1262 scoped_ptr<base::HistogramSamples> samples( |
| 1242 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1263 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1243 EXPECT_EQ(2, samples->TotalCount()); | 1264 EXPECT_EQ(2, samples->TotalCount()); |
| 1244 EXPECT_EQ(1, samples->GetCount(500)); | 1265 EXPECT_EQ(1, samples->GetCount(500)); |
| 1245 EXPECT_EQ(1, samples->GetCount(5000)); | 1266 EXPECT_EQ(1, samples->GetCount(5000)); |
| 1246 } | 1267 } |
| 1247 | 1268 |
| 1248 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1269 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1249 UMA_ActiveTime_MultipleActivations) { | 1270 UMA_ActiveTime_MultipleActivations) { |
| 1250 scoped_ptr<MockMediaSessionObserver> media_session_observer( | 1271 scoped_ptr<MockMediaSessionObserver> media_session_observer( |
| 1251 new MockMediaSessionObserver); | 1272 new MockMediaSessionObserver); |
| 1252 base::HistogramTester tester; | 1273 base::HistogramTester tester; |
| 1253 | 1274 |
| 1254 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1275 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1255 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1276 base::SimpleTestClock* clock = new base::SimpleTestClock(); |
| 1256 clock->SetNow(base::Time::Now()); | 1277 clock->SetNow(base::Time::Now()); |
| 1257 media_session_uma_helper->SetClockForTest( | 1278 media_session_uma_helper->SetClockForTest( |
| 1258 scoped_ptr<base::SimpleTestClock>(clock)); | 1279 scoped_ptr<base::SimpleTestClock>(clock)); |
| 1259 | 1280 |
| 1260 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1281 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1261 clock->Advance(base::TimeDelta::FromMilliseconds(10000)); | 1282 clock->Advance(base::TimeDelta::FromMilliseconds(10000)); |
| 1262 RemovePlayer(media_session_observer.get(), 0); | 1283 RemovePlayer(media_session_observer.get(), 0); |
| 1263 | 1284 |
| 1264 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1285 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1265 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1286 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1266 media_session_->Stop(); | 1287 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1267 | 1288 |
| 1268 scoped_ptr<base::HistogramSamples> samples( | 1289 scoped_ptr<base::HistogramSamples> samples( |
| 1269 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1290 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1270 EXPECT_EQ(2, samples->TotalCount()); | 1291 EXPECT_EQ(2, samples->TotalCount()); |
| 1271 EXPECT_EQ(1, samples->GetCount(1000)); | 1292 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1272 EXPECT_EQ(1, samples->GetCount(10000)); | 1293 EXPECT_EQ(1, samples->GetCount(10000)); |
| 1273 } | 1294 } |
| 1295 | |
| 1296 #if !defined(OS_ANDROID) | |
| 1297 class DefaultMediaSessionBrowserTest : public content::ContentBrowserTest { | |
|
mlamouri (slow - plz ping)
2016/02/17 19:30:12
I'm going to move this test to media_session_deleg
mlamouri (slow - plz ping)
2016/02/23 20:27:55
Done.
| |
| 1298 protected: | |
| 1299 void SetUpCommandLine(base::CommandLine* command_line) override { | |
| 1300 command_line->AppendSwitch(switches::kEnableDefaultMediaSession); | |
| 1301 } | |
| 1302 }; | |
| 1303 | |
| 1304 IN_PROC_BROWSER_TEST_F(DefaultMediaSessionBrowserTest, | |
| 1305 ActiveWebContentsPauseOthers) { | |
| 1306 scoped_ptr<MockMediaSessionObserver> media_session_observer( | |
| 1307 new MockMediaSessionObserver); | |
| 1308 | |
| 1309 MediaSession* media_session = MediaSession::Get(shell()->web_contents()); | |
| 1310 ASSERT_TRUE(media_session); | |
| 1311 | |
| 1312 WebContents* other_web_contents = CreateBrowser()->web_contents(); | |
| 1313 MediaSession* other_media_session = MediaSession::Get(other_web_contents); | |
| 1314 ASSERT_TRUE(other_media_session); | |
| 1315 | |
| 1316 media_session_observer->StartNewPlayer(); | |
| 1317 media_session->AddPlayer( | |
| 1318 media_session_observer.get(), 0, MediaSession::Type::Content); | |
| 1319 EXPECT_TRUE(media_session->IsActive()); | |
| 1320 EXPECT_FALSE(other_media_session->IsActive()); | |
| 1321 | |
| 1322 media_session_observer->StartNewPlayer(); | |
| 1323 other_media_session->AddPlayer( | |
| 1324 media_session_observer.get(), 1, MediaSession::Type::Content); | |
| 1325 EXPECT_FALSE(media_session->IsActive()); | |
| 1326 EXPECT_TRUE(other_media_session->IsActive()); | |
| 1327 | |
| 1328 media_session->Stop(MediaSession::SuspendType::UI); | |
| 1329 other_media_session->Stop(MediaSession::SuspendType::UI); | |
| 1330 } | |
| 1331 | |
| 1332 #endif // !OS_ANDROID | |
| OLD | NEW |