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

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: rebase Created 4 years, 9 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/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_clock.h" 15 #include "base/test/simple_test_clock.h"
16 #include "content/browser/media/android/media_session_observer.h" 16 #include "content/browser/media/session/media_session_delegate.h"
17 #include "content/browser/media/session/mock_media_session_observer.h"
17 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
18 #include "content/public/browser/web_contents_observer.h" 19 #include "content/public/browser/web_contents_observer.h"
19 #include "content/public/test/content_browser_test.h" 20 #include "content/public/test/content_browser_test.h"
20 #include "content/shell/browser/shell.h" 21 #include "content/shell/browser/shell.h"
21 #include "testing/gmock/include/gmock/gmock.h" 22 #include "testing/gmock/include/gmock/gmock.h"
22 23
23 using content::WebContents; 24 using content::WebContents;
24 using content::WebContentsObserver; 25 using content::WebContentsObserver;
25 using content::MediaSession; 26 using content::MediaSession;
27 using content::MediaSessionDelegate;
26 using content::MediaSessionObserver; 28 using content::MediaSessionObserver;
27 using content::MediaSessionUmaHelper; 29 using content::MediaSessionUmaHelper;
30 using content::MockMediaSessionObserver;
28 31
29 using ::testing::Expectation; 32 using ::testing::Expectation;
30 33
31 namespace { 34 namespace {
32 35
33 class MockMediaSessionObserver : public MediaSessionObserver { 36 class MockMediaSessionDelegate : public MediaSessionDelegate {
34 public: 37 public:
35 MockMediaSessionObserver() 38 bool RequestAudioFocus(MediaSession::Type) override {
36 : received_resume_calls_(0), 39 return true;
37 received_suspend_calls_(0) {
38 } 40 }
39 41
40 ~MockMediaSessionObserver() override = default; 42 void AbandonAudioFocus() override {
41
42 // Implements MediaSessionObserver.
43 void OnSuspend(int player_id) override {
44 EXPECT_GE(player_id, 0);
45 EXPECT_GT(players_.size(), static_cast<size_t>(player_id));
46
47 ++received_suspend_calls_;
48 players_[player_id].is_playing_ = false;
49 } 43 }
50
51 void OnResume(int player_id) override {
52 EXPECT_GE(player_id, 0);
53 EXPECT_GT(players_.size(), static_cast<size_t>(player_id));
54
55 ++received_resume_calls_;
56 players_[player_id].is_playing_ = true;
57 }
58
59 void OnSetVolumeMultiplier(int player_id, double volume_multiplier) override {
60 EXPECT_GE(player_id, 0);
61 EXPECT_GT(players_.size(), static_cast<size_t>(player_id));
62
63 EXPECT_GE(volume_multiplier, 0.0f);
64 EXPECT_LE(volume_multiplier, 1.0f);
65
66 players_[player_id].volume_multiplier_ = volume_multiplier;
67 }
68
69 int StartNewPlayer() {
70 players_.push_back(MockPlayer(true, 1.0f));
71 return players_.size() - 1;
72 }
73
74 bool IsPlaying(size_t player_id) {
75 EXPECT_GT(players_.size(), player_id);
76 return players_[player_id].is_playing_;
77 }
78
79 double GetVolumeMultiplier(size_t player_id) {
80 EXPECT_GT(players_.size(), player_id);
81 return players_[player_id].volume_multiplier_;
82 }
83
84 void SetPlaying(size_t player_id, bool playing) {
85 EXPECT_GT(players_.size(), player_id);
86 players_[player_id].is_playing_ = playing;
87 }
88
89 int received_suspend_calls() const {
90 return received_suspend_calls_;
91 }
92
93 int received_resume_calls() const {
94 return received_resume_calls_;
95 }
96
97 private:
98 struct MockPlayer {
99 public:
100 MockPlayer(bool is_playing = true, double volume_multiplier = 1.0f)
101 : is_playing_(is_playing),
102 volume_multiplier_(volume_multiplier) {}
103 bool is_playing_;
104 double volume_multiplier_;
105 };
106
107 // Basic representation of the players. The position in the vector is the
108 // player_id. The value of the vector is the playing status and volume.
109 std::vector<MockPlayer> players_;
110
111 int received_resume_calls_;
112 int received_suspend_calls_;
113 }; 44 };
114 45
115 class MockWebContentsObserver : public WebContentsObserver { 46 class MockWebContentsObserver : public WebContentsObserver {
116 public: 47 public:
117 MockWebContentsObserver(WebContents* web_contents) 48 MockWebContentsObserver(WebContents* web_contents)
118 : WebContentsObserver(web_contents) {} 49 : WebContentsObserver(web_contents) {}
119 50
120 MOCK_METHOD2(MediaSessionStateChanged, 51 MOCK_METHOD2(MediaSessionStateChanged,
121 void(bool is_controllable, bool is_suspended)); 52 void(bool is_controllable, bool is_suspended));
122 }; 53 };
123 54
124 } // namespace 55 } // namespace
125 56
126 class MediaSessionBrowserTest : public content::ContentBrowserTest { 57 class MediaSessionBrowserTest : public content::ContentBrowserTest {
127 protected: 58 protected:
128 MediaSessionBrowserTest() = default; 59 MediaSessionBrowserTest() = default;
129 60
130 void SetUpOnMainThread() override { 61 void SetUpOnMainThread() override {
131 ContentBrowserTest::SetUpOnMainThread(); 62 ContentBrowserTest::SetUpOnMainThread();
132 63
133 mock_web_contents_observer_.reset( 64 mock_web_contents_observer_.reset(
134 new MockWebContentsObserver(shell()->web_contents())); 65 new MockWebContentsObserver(shell()->web_contents()));
135 media_session_ = MediaSession::Get(shell()->web_contents()); 66 media_session_ = MediaSession::Get(shell()->web_contents());
136 media_session_->ResetJavaRefForTest(); 67 media_session_->SetDelegateForTests(
68 scoped_ptr<MediaSessionDelegate>(new MockMediaSessionDelegate()));
137 ASSERT_TRUE(media_session_); 69 ASSERT_TRUE(media_session_);
138 } 70 }
139 71
140 void TearDownOnMainThread() override { 72 void TearDownOnMainThread() override {
141 mock_web_contents_observer_.reset(); 73 mock_web_contents_observer_.reset();
142 74
143 media_session_->RemoveAllPlayersForTest(); 75 media_session_->RemoveAllPlayersForTest();
144 media_session_ = nullptr; 76 media_session_ = nullptr;
145 77
146 ContentBrowserTest::TearDownOnMainThread(); 78 ContentBrowserTest::TearDownOnMainThread();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 111
180 MediaSession::Type GetSessionType() { 112 MediaSession::Type GetSessionType() {
181 return media_session_->audio_focus_type_for_test(); 113 return media_session_->audio_focus_type_for_test();
182 } 114 }
183 115
184 bool IsControllable() { return media_session_->IsControllable(); } 116 bool IsControllable() { return media_session_->IsControllable(); }
185 117
186 bool IsSuspended() { return media_session_->IsSuspended(); } 118 bool IsSuspended() { return media_session_->IsSuspended(); }
187 119
188 void UIResume() { 120 void UIResume() {
189 media_session_->Resume(); 121 media_session_->Resume(MediaSession::SuspendType::UI);
190 } 122 }
191 123
192 void SystemResume() { 124 void SystemResume() {
193 media_session_->OnResume(nullptr, nullptr); 125 media_session_->OnResumeInternal(MediaSession::SuspendType::SYSTEM);
194 } 126 }
195 127
196 void UISuspend() { 128 void UISuspend() {
197 media_session_->Suspend(); 129 media_session_->Suspend(MediaSession::SuspendType::UI);
198 } 130 }
199 131
200 void SystemSuspend(bool temporary) { 132 void SystemSuspend(bool temporary) {
201 media_session_->OnSuspend(nullptr, nullptr, temporary); 133 media_session_->OnSuspendInternal(
134 MediaSession::SuspendType::SYSTEM,
135 temporary ? MediaSession::State::SUSPENDED
136 : MediaSession::State::INACTIVE);
202 } 137 }
203 138
204 void SystemSetVolumeMultiplier(double volume_multiplier) { 139 void SystemSetVolumeMultiplier(double volume_multiplier) {
205 media_session_->OnSetVolumeMultiplier( 140 media_session_->SetVolumeMultiplier(volume_multiplier);
206 nullptr, nullptr, volume_multiplier);
207 } 141 }
208 142
209 MockWebContentsObserver* mock_web_contents_observer() { 143 MockWebContentsObserver* mock_web_contents_observer() {
210 return mock_web_contents_observer_.get(); 144 return mock_web_contents_observer_.get();
211 } 145 }
212 146
213 scoped_ptr<MediaSession> CreateDummyMediaSession() { 147 scoped_ptr<MediaSession> CreateDummyMediaSession() {
214 return scoped_ptr<MediaSession>(new MediaSession(nullptr)); 148 return scoped_ptr<MediaSession>(new MediaSession(nullptr));
215 } 149 }
216 150
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 291
358 EXPECT_FALSE(HasAudioFocus()); 292 EXPECT_FALSE(HasAudioFocus());
359 } 293 }
360 294
361 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StopGivesAwayAudioFocus) { 295 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StopGivesAwayAudioFocus) {
362 scoped_ptr<MockMediaSessionObserver> media_session_observer( 296 scoped_ptr<MockMediaSessionObserver> media_session_observer(
363 new MockMediaSessionObserver); 297 new MockMediaSessionObserver);
364 298
365 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 299 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
366 300
367 media_session_->Stop(); 301 media_session_->Stop(MediaSession::SuspendType::UI);
368 302
369 EXPECT_FALSE(HasAudioFocus()); 303 EXPECT_FALSE(HasAudioFocus());
370 } 304 }
371 305
372 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeGivesBackAudioFocus) { 306 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeGivesBackAudioFocus) {
373 scoped_ptr<MockMediaSessionObserver> media_session_observer( 307 scoped_ptr<MockMediaSessionObserver> media_session_observer(
374 new MockMediaSessionObserver); 308 new MockMediaSessionObserver);
375 309
376 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 310 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
377 311
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 .After(showControls); 724 .After(showControls);
791 EXPECT_CALL(*mock_web_contents_observer(), 725 EXPECT_CALL(*mock_web_contents_observer(),
792 MediaSessionStateChanged(false, true)) 726 MediaSessionStateChanged(false, true))
793 .After(pauseControls); 727 .After(pauseControls);
794 728
795 scoped_ptr<MockMediaSessionObserver> media_session_observer( 729 scoped_ptr<MockMediaSessionObserver> media_session_observer(
796 new MockMediaSessionObserver); 730 new MockMediaSessionObserver);
797 731
798 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 732 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
799 733
800 media_session_->Stop(); 734 media_session_->Stop(MediaSession::SuspendType::UI);
801 735
802 EXPECT_FALSE(IsControllable()); 736 EXPECT_FALSE(IsControllable());
803 EXPECT_TRUE(IsSuspended()); 737 EXPECT_TRUE(IsSuspended());
804 } 738 }
805 739
806 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 740 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
807 ControlsHideWhenSessionChangesFromContentToTransient) { 741 ControlsHideWhenSessionChangesFromContentToTransient) {
808 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(), 742 Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
809 MediaSessionStateChanged(true, false)); 743 MediaSessionStateChanged(true, false));
810 Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(), 744 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 1007 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
1074 EXPECT_EQ(1, samples->GetCount(2)); // UI 1008 EXPECT_EQ(1, samples->GetCount(2)); // UI
1075 } 1009 }
1076 1010
1077 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Stop) { 1011 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Stop) {
1078 scoped_ptr<MockMediaSessionObserver> media_session_observer( 1012 scoped_ptr<MockMediaSessionObserver> media_session_observer(
1079 new MockMediaSessionObserver); 1013 new MockMediaSessionObserver);
1080 base::HistogramTester tester; 1014 base::HistogramTester tester;
1081 1015
1082 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 1016 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
1083 media_session_->Stop(); 1017 media_session_->Stop(MediaSession::SuspendType::UI);
1084 1018
1085 scoped_ptr<base::HistogramSamples> samples( 1019 scoped_ptr<base::HistogramSamples> samples(
1086 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); 1020 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
1087 EXPECT_EQ(1, samples->TotalCount()); 1021 EXPECT_EQ(1, samples->TotalCount());
1088 EXPECT_EQ(0, samples->GetCount(0)); // System Transient 1022 EXPECT_EQ(0, samples->GetCount(0)); // System Transient
1089 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent 1023 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
1090 EXPECT_EQ(1, samples->GetCount(2)); // UI 1024 EXPECT_EQ(1, samples->GetCount(2)); // UI
1091 } 1025 }
1092 1026
1093 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_ActiveTime_NoActivation) { 1027 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_ActiveTime_NoActivation) {
(...skipping 16 matching lines...) Expand all
1110 1044
1111 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1045 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1112 base::SimpleTestClock* clock = new base::SimpleTestClock(); 1046 base::SimpleTestClock* clock = new base::SimpleTestClock();
1113 clock->SetNow(base::Time::Now()); 1047 clock->SetNow(base::Time::Now());
1114 media_session_uma_helper->SetClockForTest( 1048 media_session_uma_helper->SetClockForTest(
1115 scoped_ptr<base::SimpleTestClock>(clock)); 1049 scoped_ptr<base::SimpleTestClock>(clock));
1116 1050
1117 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 1051 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
1118 1052
1119 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1053 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1120 media_session_->Stop(); 1054 media_session_->Stop(MediaSession::SuspendType::UI);
1121 1055
1122 scoped_ptr<base::HistogramSamples> samples( 1056 scoped_ptr<base::HistogramSamples> samples(
1123 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1057 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1124 EXPECT_EQ(1, samples->TotalCount()); 1058 EXPECT_EQ(1, samples->TotalCount());
1125 EXPECT_EQ(1, samples->GetCount(1000)); 1059 EXPECT_EQ(1, samples->GetCount(1000));
1126 } 1060 }
1127 1061
1128 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1062 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1129 UMA_ActiveTime_ActivationWithUISuspension) { 1063 UMA_ActiveTime_ActivationWithUISuspension) {
1130 scoped_ptr<MockMediaSessionObserver> media_session_observer( 1064 scoped_ptr<MockMediaSessionObserver> media_session_observer(
1131 new MockMediaSessionObserver); 1065 new MockMediaSessionObserver);
1132 base::HistogramTester tester; 1066 base::HistogramTester tester;
1133 1067
1134 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1068 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1135 base::SimpleTestClock* clock = new base::SimpleTestClock(); 1069 base::SimpleTestClock* clock = new base::SimpleTestClock();
1136 clock->SetNow(base::Time::Now()); 1070 clock->SetNow(base::Time::Now());
1137 media_session_uma_helper->SetClockForTest( 1071 media_session_uma_helper->SetClockForTest(
1138 scoped_ptr<base::SimpleTestClock>(clock)); 1072 scoped_ptr<base::SimpleTestClock>(clock));
1139 1073
1140 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 1074 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
1141 1075
1142 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1076 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1143 UISuspend(); 1077 UISuspend();
1144 1078
1145 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); 1079 clock->Advance(base::TimeDelta::FromMilliseconds(2000));
1146 UIResume(); 1080 UIResume();
1147 1081
1148 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1082 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1149 media_session_->Stop(); 1083 media_session_->Stop(MediaSession::SuspendType::UI);
1150 1084
1151 scoped_ptr<base::HistogramSamples> samples( 1085 scoped_ptr<base::HistogramSamples> samples(
1152 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1086 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1153 EXPECT_EQ(1, samples->TotalCount()); 1087 EXPECT_EQ(1, samples->TotalCount());
1154 EXPECT_EQ(1, samples->GetCount(2000)); 1088 EXPECT_EQ(1, samples->GetCount(2000));
1155 } 1089 }
1156 1090
1157 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1091 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1158 UMA_ActiveTime_ActivationWithSystemSuspension) { 1092 UMA_ActiveTime_ActivationWithSystemSuspension) {
1159 scoped_ptr<MockMediaSessionObserver> media_session_observer( 1093 scoped_ptr<MockMediaSessionObserver> media_session_observer(
1160 new MockMediaSessionObserver); 1094 new MockMediaSessionObserver);
1161 base::HistogramTester tester; 1095 base::HistogramTester tester;
1162 1096
1163 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1097 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1164 base::SimpleTestClock* clock = new base::SimpleTestClock(); 1098 base::SimpleTestClock* clock = new base::SimpleTestClock();
1165 clock->SetNow(base::Time::Now()); 1099 clock->SetNow(base::Time::Now());
1166 media_session_uma_helper->SetClockForTest( 1100 media_session_uma_helper->SetClockForTest(
1167 scoped_ptr<base::SimpleTestClock>(clock)); 1101 scoped_ptr<base::SimpleTestClock>(clock));
1168 1102
1169 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 1103 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
1170 1104
1171 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1105 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1172 SystemSuspend(true); 1106 SystemSuspend(true);
1173 1107
1174 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); 1108 clock->Advance(base::TimeDelta::FromMilliseconds(2000));
1175 SystemResume(); 1109 SystemResume();
1176 1110
1177 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1111 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1178 media_session_->Stop(); 1112 media_session_->Stop(MediaSession::SuspendType::UI);
1179 1113
1180 scoped_ptr<base::HistogramSamples> samples( 1114 scoped_ptr<base::HistogramSamples> samples(
1181 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1115 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1182 EXPECT_EQ(1, samples->TotalCount()); 1116 EXPECT_EQ(1, samples->TotalCount());
1183 EXPECT_EQ(1, samples->GetCount(2000)); 1117 EXPECT_EQ(1, samples->GetCount(2000));
1184 } 1118 }
1185 1119
1186 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1120 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1187 UMA_ActiveTime_ActivateSuspendedButNotStopped) { 1121 UMA_ActiveTime_ActivateSuspendedButNotStopped) {
1188 scoped_ptr<MockMediaSessionObserver> media_session_observer( 1122 scoped_ptr<MockMediaSessionObserver> media_session_observer(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 1158
1225 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1159 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1226 base::SimpleTestClock* clock = new base::SimpleTestClock(); 1160 base::SimpleTestClock* clock = new base::SimpleTestClock();
1227 clock->SetNow(base::Time::Now()); 1161 clock->SetNow(base::Time::Now());
1228 media_session_uma_helper->SetClockForTest( 1162 media_session_uma_helper->SetClockForTest(
1229 scoped_ptr<base::SimpleTestClock>(clock)); 1163 scoped_ptr<base::SimpleTestClock>(clock));
1230 1164
1231 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 1165 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
1232 clock->Advance(base::TimeDelta::FromMilliseconds(500)); 1166 clock->Advance(base::TimeDelta::FromMilliseconds(500));
1233 SystemSuspend(true); 1167 SystemSuspend(true);
1234 media_session_->Stop(); 1168 media_session_->Stop(MediaSession::SuspendType::UI);
1235 1169
1236 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 1170 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
1237 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); 1171 clock->Advance(base::TimeDelta::FromMilliseconds(5000));
1238 SystemResume(); 1172 SystemResume();
1239 media_session_->Stop(); 1173 media_session_->Stop(MediaSession::SuspendType::UI);
1240 1174
1241 scoped_ptr<base::HistogramSamples> samples( 1175 scoped_ptr<base::HistogramSamples> samples(
1242 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1176 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1243 EXPECT_EQ(2, samples->TotalCount()); 1177 EXPECT_EQ(2, samples->TotalCount());
1244 EXPECT_EQ(1, samples->GetCount(500)); 1178 EXPECT_EQ(1, samples->GetCount(500));
1245 EXPECT_EQ(1, samples->GetCount(5000)); 1179 EXPECT_EQ(1, samples->GetCount(5000));
1246 } 1180 }
1247 1181
1248 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, 1182 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
1249 UMA_ActiveTime_MultipleActivations) { 1183 UMA_ActiveTime_MultipleActivations) {
1250 scoped_ptr<MockMediaSessionObserver> media_session_observer( 1184 scoped_ptr<MockMediaSessionObserver> media_session_observer(
1251 new MockMediaSessionObserver); 1185 new MockMediaSessionObserver);
1252 base::HistogramTester tester; 1186 base::HistogramTester tester;
1253 1187
1254 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); 1188 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
1255 base::SimpleTestClock* clock = new base::SimpleTestClock(); 1189 base::SimpleTestClock* clock = new base::SimpleTestClock();
1256 clock->SetNow(base::Time::Now()); 1190 clock->SetNow(base::Time::Now());
1257 media_session_uma_helper->SetClockForTest( 1191 media_session_uma_helper->SetClockForTest(
1258 scoped_ptr<base::SimpleTestClock>(clock)); 1192 scoped_ptr<base::SimpleTestClock>(clock));
1259 1193
1260 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 1194 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
1261 clock->Advance(base::TimeDelta::FromMilliseconds(10000)); 1195 clock->Advance(base::TimeDelta::FromMilliseconds(10000));
1262 RemovePlayer(media_session_observer.get(), 0); 1196 RemovePlayer(media_session_observer.get(), 0);
1263 1197
1264 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); 1198 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
1265 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); 1199 clock->Advance(base::TimeDelta::FromMilliseconds(1000));
1266 media_session_->Stop(); 1200 media_session_->Stop(MediaSession::SuspendType::UI);
1267 1201
1268 scoped_ptr<base::HistogramSamples> samples( 1202 scoped_ptr<base::HistogramSamples> samples(
1269 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); 1203 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
1270 EXPECT_EQ(2, samples->TotalCount()); 1204 EXPECT_EQ(2, samples->TotalCount());
1271 EXPECT_EQ(1, samples->GetCount(1000)); 1205 EXPECT_EQ(1, samples->GetCount(1000));
1272 EXPECT_EQ(1, samples->GetCount(10000)); 1206 EXPECT_EQ(1, samples->GetCount(10000));
1273 } 1207 }
OLDNEW
« no previous file with comments | « content/browser/media/session/media_session.cc ('k') | content/browser/media/session/media_session_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698