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

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

Issue 1996043002: Split MediaContentType and AudioFocusType (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed nits Created 4 years, 3 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 <tuple> 5 #include <tuple>
6 6
7 #include "content/browser/media/media_web_contents_observer.h" 7 #include "content/browser/media/media_web_contents_observer.h"
8 #include "content/browser/media/session/media_session.h" 8 #include "content/browser/media/session/media_session.h"
9 #include "content/browser/media/session/media_session_controller.h" 9 #include "content/browser/media/session/media_session_controller.h"
10 #include "content/common/media/media_player_delegate_messages.h" 10 #include "content/common/media/media_player_delegate_messages.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 void Resume() { 46 void Resume() {
47 controller_->OnResume(controller_->get_player_id_for_testing()); 47 controller_->OnResume(controller_->get_player_id_for_testing());
48 } 48 }
49 49
50 void SetVolumeMultiplier(double multiplier) { 50 void SetVolumeMultiplier(double multiplier) {
51 controller_->OnSetVolumeMultiplier(controller_->get_player_id_for_testing(), 51 controller_->OnSetVolumeMultiplier(controller_->get_player_id_for_testing(),
52 multiplier); 52 multiplier);
53 } 53 }
54 54
55 // Returns a duration long enough for a media session instance to be created.
56 base::TimeDelta DurationJustRight() {
57 return base::TimeDelta::FromSeconds(
58 MediaSessionController::kMinimumDurationForContentSecs + 1);
59 }
60
61 // Returns a duration too short for a media session instance.
62 base::TimeDelta DurationTooShort() {
63 return base::TimeDelta::FromSeconds(
64 MediaSessionController::kMinimumDurationForContentSecs);
65 }
66
67 template <typename T> 55 template <typename T>
68 bool ReceivedMessagePlayPause() { 56 bool ReceivedMessagePlayPause() {
69 const IPC::Message* msg = test_sink().GetUniqueMessageMatching(T::ID); 57 const IPC::Message* msg = test_sink().GetUniqueMessageMatching(T::ID);
70 if (!msg) 58 if (!msg)
71 return false; 59 return false;
72 60
73 std::tuple<int> result; 61 std::tuple<int> result;
74 if (!T::Read(msg, &result)) 62 if (!T::Read(msg, &result))
75 return false; 63 return false;
76 64
(...skipping 19 matching lines...) Expand all
96 EXPECT_EQ(expected_multiplier, std::get<1>(result)); 84 EXPECT_EQ(expected_multiplier, std::get<1>(result));
97 test_sink().ClearMessages(); 85 test_sink().ClearMessages();
98 return expected_multiplier == std::get<1>(result); 86 return expected_multiplier == std::get<1>(result);
99 } 87 }
100 88
101 WebContentsObserver::MediaPlayerId id_; 89 WebContentsObserver::MediaPlayerId id_;
102 std::unique_ptr<MediaSessionController> controller_; 90 std::unique_ptr<MediaSessionController> controller_;
103 }; 91 };
104 92
105 TEST_F(MediaSessionControllerTest, NoAudioNoSession) { 93 TEST_F(MediaSessionControllerTest, NoAudioNoSession) {
106 ASSERT_TRUE(controller_->Initialize(false, false, DurationJustRight())); 94 ASSERT_TRUE(controller_->Initialize(false, false,
95 media::MediaContentType::Persistent));
107 EXPECT_TRUE(media_session()->IsSuspended()); 96 EXPECT_TRUE(media_session()->IsSuspended());
108 EXPECT_FALSE(media_session()->IsControllable()); 97 EXPECT_FALSE(media_session()->IsControllable());
109 } 98 }
110 99
111 TEST_F(MediaSessionControllerTest, IsRemoteNoSession) { 100 TEST_F(MediaSessionControllerTest, IsRemoteNoSession) {
112 ASSERT_TRUE(controller_->Initialize(true, true, DurationJustRight())); 101 ASSERT_TRUE(
102 controller_->Initialize(true, true, media::MediaContentType::Persistent));
113 EXPECT_TRUE(media_session()->IsSuspended()); 103 EXPECT_TRUE(media_session()->IsSuspended());
114 EXPECT_FALSE(media_session()->IsControllable()); 104 EXPECT_FALSE(media_session()->IsControllable());
115 } 105 }
116 106
117 TEST_F(MediaSessionControllerTest, TooShortNoControllableSession) { 107 TEST_F(MediaSessionControllerTest, TransientNoControllableSession) {
118 ASSERT_TRUE(controller_->Initialize(true, false, DurationTooShort())); 108 ASSERT_TRUE(
109 controller_->Initialize(true, false, media::MediaContentType::Transient));
119 EXPECT_FALSE(media_session()->IsSuspended()); 110 EXPECT_FALSE(media_session()->IsSuspended());
120 EXPECT_FALSE(media_session()->IsControllable()); 111 EXPECT_FALSE(media_session()->IsControllable());
121 } 112 }
122 113
123 TEST_F(MediaSessionControllerTest, BasicControls) { 114 TEST_F(MediaSessionControllerTest, BasicControls) {
124 ASSERT_TRUE(controller_->Initialize(true, false, DurationJustRight())); 115 ASSERT_TRUE(controller_->Initialize(true, false,
116 media::MediaContentType::Persistent));
125 EXPECT_FALSE(media_session()->IsSuspended()); 117 EXPECT_FALSE(media_session()->IsSuspended());
126 EXPECT_TRUE(media_session()->IsControllable()); 118 EXPECT_TRUE(media_session()->IsControllable());
127 119
128 // Verify suspend notifies the renderer and maintains its session. 120 // Verify suspend notifies the renderer and maintains its session.
129 Suspend(); 121 Suspend();
130 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Pause>()); 122 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Pause>());
131 123
132 // Likewise verify the resume behavior. 124 // Likewise verify the resume behavior.
133 Resume(); 125 Resume();
134 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Play>()); 126 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Play>());
135 127
136 // Verify destruction of the controller removes its session. 128 // Verify destruction of the controller removes its session.
137 controller_.reset(); 129 controller_.reset();
138 EXPECT_TRUE(media_session()->IsSuspended()); 130 EXPECT_TRUE(media_session()->IsSuspended());
139 EXPECT_FALSE(media_session()->IsControllable()); 131 EXPECT_FALSE(media_session()->IsControllable());
140 } 132 }
141 133
142 TEST_F(MediaSessionControllerTest, VolumeMultiplier) { 134 TEST_F(MediaSessionControllerTest, VolumeMultiplier) {
143 ASSERT_TRUE(controller_->Initialize(true, false, DurationJustRight())); 135 ASSERT_TRUE(controller_->Initialize(true, false,
136 media::MediaContentType::Persistent));
144 EXPECT_FALSE(media_session()->IsSuspended()); 137 EXPECT_FALSE(media_session()->IsSuspended());
145 EXPECT_TRUE(media_session()->IsControllable()); 138 EXPECT_TRUE(media_session()->IsControllable());
146 139
147 // Upon creation of the MediaSession the default multiplier will be sent. 140 // Upon creation of the MediaSession the default multiplier will be sent.
148 EXPECT_TRUE(ReceivedMessageVolumeMultiplierUpdate< 141 EXPECT_TRUE(ReceivedMessageVolumeMultiplierUpdate<
149 MediaPlayerDelegateMsg_UpdateVolumeMultiplier>(1.0)); 142 MediaPlayerDelegateMsg_UpdateVolumeMultiplier>(1.0));
150 143
151 // Verify a different volume multiplier is sent. 144 // Verify a different volume multiplier is sent.
152 const double kTestMultiplier = 0.5; 145 const double kTestMultiplier = 0.5;
153 SetVolumeMultiplier(kTestMultiplier); 146 SetVolumeMultiplier(kTestMultiplier);
154 EXPECT_TRUE(ReceivedMessageVolumeMultiplierUpdate< 147 EXPECT_TRUE(ReceivedMessageVolumeMultiplierUpdate<
155 MediaPlayerDelegateMsg_UpdateVolumeMultiplier>(kTestMultiplier)); 148 MediaPlayerDelegateMsg_UpdateVolumeMultiplier>(kTestMultiplier));
156 } 149 }
157 150
158 TEST_F(MediaSessionControllerTest, ControllerSidePause) { 151 TEST_F(MediaSessionControllerTest, ControllerSidePause) {
159 ASSERT_TRUE(controller_->Initialize(true, false, DurationJustRight())); 152 ASSERT_TRUE(controller_->Initialize(true, false,
153 media::MediaContentType::Persistent));
160 EXPECT_FALSE(media_session()->IsSuspended()); 154 EXPECT_FALSE(media_session()->IsSuspended());
161 EXPECT_TRUE(media_session()->IsControllable()); 155 EXPECT_TRUE(media_session()->IsControllable());
162 156
163 // Verify pause behavior. 157 // Verify pause behavior.
164 controller_->OnPlaybackPaused(); 158 controller_->OnPlaybackPaused();
165 EXPECT_TRUE(media_session()->IsSuspended()); 159 EXPECT_TRUE(media_session()->IsSuspended());
166 EXPECT_TRUE(media_session()->IsControllable()); 160 EXPECT_TRUE(media_session()->IsControllable());
167 161
168 // Verify the next Initialize() call restores the session. 162 // Verify the next Initialize() call restores the session.
169 ASSERT_TRUE(controller_->Initialize(true, false, DurationJustRight())); 163 ASSERT_TRUE(controller_->Initialize(true, false,
164 media::MediaContentType::Persistent));
170 EXPECT_FALSE(media_session()->IsSuspended()); 165 EXPECT_FALSE(media_session()->IsSuspended());
171 EXPECT_TRUE(media_session()->IsControllable()); 166 EXPECT_TRUE(media_session()->IsControllable());
172 } 167 }
173 168
174 TEST_F(MediaSessionControllerTest, Reinitialize) { 169 TEST_F(MediaSessionControllerTest, Reinitialize) {
175 ASSERT_TRUE(controller_->Initialize(false, false, DurationJustRight())); 170 ASSERT_TRUE(controller_->Initialize(false, false,
171 media::MediaContentType::Persistent));
176 EXPECT_TRUE(media_session()->IsSuspended()); 172 EXPECT_TRUE(media_session()->IsSuspended());
177 EXPECT_FALSE(media_session()->IsControllable()); 173 EXPECT_FALSE(media_session()->IsControllable());
178 174
179 // Create a transient type session. 175 // Create a transient type session.
180 ASSERT_TRUE(controller_->Initialize(true, false, DurationTooShort())); 176 ASSERT_TRUE(
177 controller_->Initialize(true, false, media::MediaContentType::Transient));
181 EXPECT_FALSE(media_session()->IsSuspended()); 178 EXPECT_FALSE(media_session()->IsSuspended());
182 EXPECT_FALSE(media_session()->IsControllable()); 179 EXPECT_FALSE(media_session()->IsControllable());
183 const int current_player_id = controller_->get_player_id_for_testing(); 180 const int current_player_id = controller_->get_player_id_for_testing();
184 181
185 // Reinitialize the session as a content type. 182 // Reinitialize the session as a content type.
186 ASSERT_TRUE(controller_->Initialize(true, false, DurationJustRight())); 183 ASSERT_TRUE(controller_->Initialize(true, false,
184 media::MediaContentType::Persistent));
187 EXPECT_FALSE(media_session()->IsSuspended()); 185 EXPECT_FALSE(media_session()->IsSuspended());
188 EXPECT_TRUE(media_session()->IsControllable()); 186 EXPECT_TRUE(media_session()->IsControllable());
189 // Player id should not change when there's an active session. 187 // Player id should not change when there's an active session.
190 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing()); 188 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing());
191 189
192 // Verify suspend notifies the renderer and maintains its session. 190 // Verify suspend notifies the renderer and maintains its session.
193 Suspend(); 191 Suspend();
194 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Pause>()); 192 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Pause>());
195 193
196 // Likewise verify the resume behavior. 194 // Likewise verify the resume behavior.
197 Resume(); 195 Resume();
198 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Play>()); 196 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Play>());
199 197
200 // Attempt to switch to no audio player, which should do nothing. 198 // Attempt to switch to no audio player, which should do nothing.
201 // TODO(dalecurtis): Delete this test once we're no longer using WMPA and 199 // TODO(dalecurtis): Delete this test once we're no longer using WMPA and
202 // the BrowserMediaPlayerManagers. Tracked by http://crbug.com/580626 200 // the BrowserMediaPlayerManagers. Tracked by http://crbug.com/580626
203 ASSERT_TRUE(controller_->Initialize(false, false, DurationJustRight())); 201 ASSERT_TRUE(controller_->Initialize(false, false,
202 media::MediaContentType::Persistent));
204 EXPECT_FALSE(media_session()->IsSuspended()); 203 EXPECT_FALSE(media_session()->IsSuspended());
205 EXPECT_TRUE(media_session()->IsControllable()); 204 EXPECT_TRUE(media_session()->IsControllable());
206 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing()); 205 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing());
207 206
208 // Switch to a remote player, which should release the session. 207 // Switch to a remote player, which should release the session.
209 ASSERT_TRUE(controller_->Initialize(true, true, DurationJustRight())); 208 ASSERT_TRUE(
209 controller_->Initialize(true, true, media::MediaContentType::Persistent));
210 EXPECT_TRUE(media_session()->IsSuspended()); 210 EXPECT_TRUE(media_session()->IsSuspended());
211 EXPECT_FALSE(media_session()->IsControllable()); 211 EXPECT_FALSE(media_session()->IsControllable());
212 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing()); 212 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing());
213 } 213 }
214 214
215 } // namespace content 215 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698