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 |