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/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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |