Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: content/browser/media/session/media_session_browsertest.cc

Issue 1698933004: Make MediaSession a runtime-enabled feature on Desktop. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: with flag Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698