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

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

Issue 2758773003: Clean up MediaSessionImpl state interfaces (Closed)
Patch Set: fixed build Created 3 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 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_controller.h" 8 #include "content/browser/media/session/media_session_controller.h"
9 #include "content/browser/media/session/media_session_impl.h" 9 #include "content/browser/media/session/media_session_impl.h"
10 #include "content/common/media/media_player_delegate_messages.h" 10 #include "content/common/media/media_player_delegate_messages.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 return expected_multiplier == std::get<1>(result); 88 return expected_multiplier == std::get<1>(result);
89 } 89 }
90 90
91 WebContentsObserver::MediaPlayerId id_; 91 WebContentsObserver::MediaPlayerId id_;
92 std::unique_ptr<MediaSessionController> controller_; 92 std::unique_ptr<MediaSessionController> controller_;
93 }; 93 };
94 94
95 TEST_F(MediaSessionControllerTest, NoAudioNoSession) { 95 TEST_F(MediaSessionControllerTest, NoAudioNoSession) {
96 ASSERT_TRUE(controller_->Initialize(false, false, 96 ASSERT_TRUE(controller_->Initialize(false, false,
97 media::MediaContentType::Persistent)); 97 media::MediaContentType::Persistent));
98 EXPECT_TRUE(media_session()->IsSuspended()); 98 EXPECT_FALSE(media_session()->IsActive());
99 EXPECT_FALSE(media_session()->IsControllable()); 99 EXPECT_FALSE(media_session()->IsControllable());
100 } 100 }
101 101
102 TEST_F(MediaSessionControllerTest, IsRemoteNoSession) { 102 TEST_F(MediaSessionControllerTest, IsRemoteNoSession) {
103 ASSERT_TRUE( 103 ASSERT_TRUE(
104 controller_->Initialize(true, true, media::MediaContentType::Persistent)); 104 controller_->Initialize(true, true, media::MediaContentType::Persistent));
105 EXPECT_TRUE(media_session()->IsSuspended()); 105 EXPECT_FALSE(media_session()->IsActive());
106 EXPECT_FALSE(media_session()->IsControllable()); 106 EXPECT_FALSE(media_session()->IsControllable());
107 } 107 }
108 108
109 TEST_F(MediaSessionControllerTest, TransientNoControllableSession) { 109 TEST_F(MediaSessionControllerTest, TransientNoControllableSession) {
110 ASSERT_TRUE( 110 ASSERT_TRUE(
111 controller_->Initialize(true, false, media::MediaContentType::Transient)); 111 controller_->Initialize(true, false, media::MediaContentType::Transient));
112 EXPECT_FALSE(media_session()->IsSuspended()); 112 EXPECT_TRUE(media_session()->IsActive());
113 EXPECT_FALSE(media_session()->IsControllable()); 113 EXPECT_FALSE(media_session()->IsControllable());
114 } 114 }
115 115
116 TEST_F(MediaSessionControllerTest, BasicControls) { 116 TEST_F(MediaSessionControllerTest, BasicControls) {
117 ASSERT_TRUE(controller_->Initialize(true, false, 117 ASSERT_TRUE(controller_->Initialize(true, false,
118 media::MediaContentType::Persistent)); 118 media::MediaContentType::Persistent));
119 EXPECT_FALSE(media_session()->IsSuspended()); 119 EXPECT_TRUE(media_session()->IsActive());
120 EXPECT_TRUE(media_session()->IsControllable()); 120 EXPECT_TRUE(media_session()->IsControllable());
121 121
122 // Verify suspend notifies the renderer and maintains its session. 122 // Verify suspend notifies the renderer and maintains its session.
123 Suspend(); 123 Suspend();
124 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Pause>()); 124 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Pause>());
125 125
126 // Likewise verify the resume behavior. 126 // Likewise verify the resume behavior.
127 Resume(); 127 Resume();
128 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Play>()); 128 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Play>());
129 129
130 // Verify destruction of the controller removes its session. 130 // Verify destruction of the controller removes its session.
131 controller_.reset(); 131 controller_.reset();
132 EXPECT_TRUE(media_session()->IsSuspended()); 132 EXPECT_FALSE(media_session()->IsActive());
133 EXPECT_FALSE(media_session()->IsControllable()); 133 EXPECT_FALSE(media_session()->IsControllable());
134 } 134 }
135 135
136 TEST_F(MediaSessionControllerTest, VolumeMultiplier) { 136 TEST_F(MediaSessionControllerTest, VolumeMultiplier) {
137 ASSERT_TRUE(controller_->Initialize(true, false, 137 ASSERT_TRUE(controller_->Initialize(true, false,
138 media::MediaContentType::Persistent)); 138 media::MediaContentType::Persistent));
139 EXPECT_FALSE(media_session()->IsSuspended()); 139 EXPECT_TRUE(media_session()->IsActive());
140 EXPECT_TRUE(media_session()->IsControllable()); 140 EXPECT_TRUE(media_session()->IsControllable());
141 141
142 // Upon creation of the MediaSession the default multiplier will be sent. 142 // Upon creation of the MediaSession the default multiplier will be sent.
143 EXPECT_TRUE(ReceivedMessageVolumeMultiplierUpdate< 143 EXPECT_TRUE(ReceivedMessageVolumeMultiplierUpdate<
144 MediaPlayerDelegateMsg_UpdateVolumeMultiplier>(1.0)); 144 MediaPlayerDelegateMsg_UpdateVolumeMultiplier>(1.0));
145 145
146 // Verify a different volume multiplier is sent. 146 // Verify a different volume multiplier is sent.
147 const double kTestMultiplier = 0.5; 147 const double kTestMultiplier = 0.5;
148 SetVolumeMultiplier(kTestMultiplier); 148 SetVolumeMultiplier(kTestMultiplier);
149 EXPECT_TRUE(ReceivedMessageVolumeMultiplierUpdate< 149 EXPECT_TRUE(ReceivedMessageVolumeMultiplierUpdate<
150 MediaPlayerDelegateMsg_UpdateVolumeMultiplier>(kTestMultiplier)); 150 MediaPlayerDelegateMsg_UpdateVolumeMultiplier>(kTestMultiplier));
151 } 151 }
152 152
153 TEST_F(MediaSessionControllerTest, ControllerSidePause) { 153 TEST_F(MediaSessionControllerTest, ControllerSidePause) {
154 ASSERT_TRUE(controller_->Initialize(true, false, 154 ASSERT_TRUE(controller_->Initialize(true, false,
155 media::MediaContentType::Persistent)); 155 media::MediaContentType::Persistent));
156 EXPECT_FALSE(media_session()->IsSuspended()); 156 EXPECT_TRUE(media_session()->IsActive());
157 EXPECT_TRUE(media_session()->IsControllable()); 157 EXPECT_TRUE(media_session()->IsControllable());
158 158
159 // Verify pause behavior. 159 // Verify pause behavior.
160 controller_->OnPlaybackPaused(); 160 controller_->OnPlaybackPaused();
161 EXPECT_TRUE(media_session()->IsSuspended()); 161 EXPECT_FALSE(media_session()->IsActive());
162 EXPECT_TRUE(media_session()->IsControllable()); 162 EXPECT_TRUE(media_session()->IsControllable());
163 163
164 // Verify the next Initialize() call restores the session. 164 // Verify the next Initialize() call restores the session.
165 ASSERT_TRUE(controller_->Initialize(true, false, 165 ASSERT_TRUE(controller_->Initialize(true, false,
166 media::MediaContentType::Persistent)); 166 media::MediaContentType::Persistent));
167 EXPECT_FALSE(media_session()->IsSuspended()); 167 EXPECT_TRUE(media_session()->IsActive());
168 EXPECT_TRUE(media_session()->IsControllable()); 168 EXPECT_TRUE(media_session()->IsControllable());
169 } 169 }
170 170
171 TEST_F(MediaSessionControllerTest, Reinitialize) { 171 TEST_F(MediaSessionControllerTest, Reinitialize) {
172 ASSERT_TRUE(controller_->Initialize(false, false, 172 ASSERT_TRUE(controller_->Initialize(false, false,
173 media::MediaContentType::Persistent)); 173 media::MediaContentType::Persistent));
174 EXPECT_TRUE(media_session()->IsSuspended()); 174 EXPECT_FALSE(media_session()->IsActive());
175 EXPECT_FALSE(media_session()->IsControllable()); 175 EXPECT_FALSE(media_session()->IsControllable());
176 176
177 // Create a transient type session. 177 // Create a transient type session.
178 ASSERT_TRUE( 178 ASSERT_TRUE(
179 controller_->Initialize(true, false, media::MediaContentType::Transient)); 179 controller_->Initialize(true, false, media::MediaContentType::Transient));
180 EXPECT_FALSE(media_session()->IsSuspended()); 180 EXPECT_TRUE(media_session()->IsActive());
181 EXPECT_FALSE(media_session()->IsControllable()); 181 EXPECT_FALSE(media_session()->IsControllable());
182 const int current_player_id = controller_->get_player_id_for_testing(); 182 const int current_player_id = controller_->get_player_id_for_testing();
183 183
184 // Reinitialize the session as a content type. 184 // Reinitialize the session as a content type.
185 ASSERT_TRUE(controller_->Initialize(true, false, 185 ASSERT_TRUE(controller_->Initialize(true, false,
186 media::MediaContentType::Persistent)); 186 media::MediaContentType::Persistent));
187 EXPECT_FALSE(media_session()->IsSuspended()); 187 EXPECT_TRUE(media_session()->IsActive());
188 EXPECT_TRUE(media_session()->IsControllable()); 188 EXPECT_TRUE(media_session()->IsControllable());
189 // Player id should not change when there's an active session. 189 // Player id should not change when there's an active session.
190 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing()); 190 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing());
191 191
192 // Verify suspend notifies the renderer and maintains its session. 192 // Verify suspend notifies the renderer and maintains its session.
193 Suspend(); 193 Suspend();
194 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Pause>()); 194 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Pause>());
195 195
196 // Likewise verify the resume behavior. 196 // Likewise verify the resume behavior.
197 Resume(); 197 Resume();
198 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Play>()); 198 EXPECT_TRUE(ReceivedMessagePlayPause<MediaPlayerDelegateMsg_Play>());
199 199
200 // Attempt to switch to no audio player, which should do nothing. 200 // 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 201 // TODO(dalecurtis): Delete this test once we're no longer using WMPA and
202 // the BrowserMediaPlayerManagers. Tracked by http://crbug.com/580626 202 // the BrowserMediaPlayerManagers. Tracked by http://crbug.com/580626
203 ASSERT_TRUE(controller_->Initialize(false, false, 203 ASSERT_TRUE(controller_->Initialize(false, false,
204 media::MediaContentType::Persistent)); 204 media::MediaContentType::Persistent));
205 EXPECT_FALSE(media_session()->IsSuspended()); 205 EXPECT_TRUE(media_session()->IsActive());
206 EXPECT_TRUE(media_session()->IsControllable()); 206 EXPECT_TRUE(media_session()->IsControllable());
207 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing()); 207 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing());
208 208
209 // Switch to a remote player, which should release the session. 209 // Switch to a remote player, which should release the session.
210 ASSERT_TRUE( 210 ASSERT_TRUE(
211 controller_->Initialize(true, true, media::MediaContentType::Persistent)); 211 controller_->Initialize(true, true, media::MediaContentType::Persistent));
212 EXPECT_TRUE(media_session()->IsSuspended()); 212 EXPECT_FALSE(media_session()->IsActive());
213 EXPECT_FALSE(media_session()->IsControllable()); 213 EXPECT_FALSE(media_session()->IsControllable());
214 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing()); 214 EXPECT_EQ(current_player_id, controller_->get_player_id_for_testing());
215 } 215 }
216 216
217 } // namespace content 217 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/session/media_session_controller.cc ('k') | content/browser/media/session/media_session_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698