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

Side by Side Diff: media/remoting/remoting_renderer_controller_unittest.cc

Issue 2587613002: Media Remoting: Switch to remoting only when media is playing. (Closed)
Patch Set: Addressed comments. Created 3 years, 12 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
« no previous file with comments | « media/remoting/remoting_renderer_controller.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "media/remoting/remoting_renderer_controller.h" 5 #include "media/remoting/remoting_renderer_controller.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "media/base/audio_decoder_config.h" 10 #include "media/base/audio_decoder_config.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 RunUntilIdle(); 83 RunUntilIdle();
84 EXPECT_FALSE(is_rendering_remotely_); 84 EXPECT_FALSE(is_rendering_remotely_);
85 remoting_renderer_controller_->OnEnteredFullscreen(); 85 remoting_renderer_controller_->OnEnteredFullscreen();
86 RunUntilIdle(); 86 RunUntilIdle();
87 EXPECT_FALSE(is_rendering_remotely_); 87 EXPECT_FALSE(is_rendering_remotely_);
88 remoting_renderer_controller_->OnMetadataChanged(DefaultMetadata()); 88 remoting_renderer_controller_->OnMetadataChanged(DefaultMetadata());
89 RunUntilIdle(); 89 RunUntilIdle();
90 EXPECT_FALSE(is_rendering_remotely_); 90 EXPECT_FALSE(is_rendering_remotely_);
91 remoting_renderer_controller_->OnRemotePlaybackDisabled(false); 91 remoting_renderer_controller_->OnRemotePlaybackDisabled(false);
92 RunUntilIdle(); 92 RunUntilIdle();
93 EXPECT_FALSE(is_rendering_remotely_);
94 remoting_renderer_controller_->OnPlaying();
95 RunUntilIdle();
93 EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied. 96 EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied.
94 97
95 // Leaving fullscreen should shut down remoting. 98 // Leaving fullscreen should shut down remoting.
96 remoting_renderer_controller_->OnExitedFullscreen(); 99 remoting_renderer_controller_->OnExitedFullscreen();
97 RunUntilIdle(); 100 RunUntilIdle();
98 EXPECT_FALSE(is_rendering_remotely_); 101 EXPECT_FALSE(is_rendering_remotely_);
99 } 102 }
100 103
101 TEST_F(RemotingRendererControllerTest, ToggleRendererOnSinkCapabilities) { 104 TEST_F(RemotingRendererControllerTest, ToggleRendererOnSinkCapabilities) {
102 EXPECT_FALSE(is_rendering_remotely_); 105 EXPECT_FALSE(is_rendering_remotely_);
103 scoped_refptr<RemotingSourceImpl> remoting_source_impl = 106 scoped_refptr<RemotingSourceImpl> remoting_source_impl =
104 CreateRemotingSourceImpl(false); 107 CreateRemotingSourceImpl(false);
105 remoting_renderer_controller_ = 108 remoting_renderer_controller_ =
106 base::MakeUnique<RemotingRendererController>(remoting_source_impl); 109 base::MakeUnique<RemotingRendererController>(remoting_source_impl);
107 remoting_renderer_controller_->SetSwitchRendererCallback(base::Bind( 110 remoting_renderer_controller_->SetSwitchRendererCallback(base::Bind(
108 &RemotingRendererControllerTest::ToggleRenderer, base::Unretained(this))); 111 &RemotingRendererControllerTest::ToggleRenderer, base::Unretained(this)));
109 RunUntilIdle(); 112 RunUntilIdle();
110 EXPECT_FALSE(is_rendering_remotely_); 113 EXPECT_FALSE(is_rendering_remotely_);
111 remoting_renderer_controller_->OnMetadataChanged(DefaultMetadata()); 114 remoting_renderer_controller_->OnMetadataChanged(DefaultMetadata());
112 RunUntilIdle(); 115 RunUntilIdle();
113 EXPECT_FALSE(is_rendering_remotely_); 116 EXPECT_FALSE(is_rendering_remotely_);
114 remoting_renderer_controller_->OnRemotePlaybackDisabled(false); 117 remoting_renderer_controller_->OnRemotePlaybackDisabled(false);
115 RunUntilIdle(); 118 RunUntilIdle();
116 EXPECT_FALSE(is_rendering_remotely_); 119 EXPECT_FALSE(is_rendering_remotely_);
120 remoting_renderer_controller_->OnPlaying();
121 RunUntilIdle();
122 EXPECT_FALSE(is_rendering_remotely_);
117 remoting_renderer_controller_->OnEnteredFullscreen(); 123 remoting_renderer_controller_->OnEnteredFullscreen();
118 RunUntilIdle(); 124 RunUntilIdle();
119 EXPECT_FALSE(is_rendering_remotely_); 125 EXPECT_FALSE(is_rendering_remotely_);
120 // An available sink that does not support remote rendering should not cause 126 // An available sink that does not support remote rendering should not cause
121 // the controller to toggle remote rendering on. 127 // the controller to toggle remote rendering on.
122 remoting_source_impl->OnSinkAvailable(mojom::RemotingSinkCapabilities::NONE); 128 remoting_source_impl->OnSinkAvailable(mojom::RemotingSinkCapabilities::NONE);
123 RunUntilIdle(); 129 RunUntilIdle();
124 EXPECT_FALSE(is_rendering_remotely_); 130 EXPECT_FALSE(is_rendering_remotely_);
125 remoting_source_impl->OnSinkGone(); // Bye-bye useless sink! 131 remoting_source_impl->OnSinkGone(); // Bye-bye useless sink!
126 RunUntilIdle(); 132 RunUntilIdle();
(...skipping 25 matching lines...) Expand all
152 RunUntilIdle(); 158 RunUntilIdle();
153 EXPECT_FALSE(is_rendering_remotely_); 159 EXPECT_FALSE(is_rendering_remotely_);
154 remoting_renderer_controller_->OnMetadataChanged(DefaultMetadata()); 160 remoting_renderer_controller_->OnMetadataChanged(DefaultMetadata());
155 RunUntilIdle(); 161 RunUntilIdle();
156 EXPECT_FALSE(is_rendering_remotely_); 162 EXPECT_FALSE(is_rendering_remotely_);
157 remoting_renderer_controller_->OnEnteredFullscreen(); 163 remoting_renderer_controller_->OnEnteredFullscreen();
158 RunUntilIdle(); 164 RunUntilIdle();
159 EXPECT_FALSE(is_rendering_remotely_); 165 EXPECT_FALSE(is_rendering_remotely_);
160 remoting_renderer_controller_->OnRemotePlaybackDisabled(false); 166 remoting_renderer_controller_->OnRemotePlaybackDisabled(false);
161 RunUntilIdle(); 167 RunUntilIdle();
168 EXPECT_FALSE(is_rendering_remotely_);
169 remoting_renderer_controller_->OnPlaying();
170 RunUntilIdle();
162 EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied. 171 EXPECT_TRUE(is_rendering_remotely_); // All requirements now satisfied.
163 172
164 // If the page disables remote playback (e.g., by setting the 173 // If the page disables remote playback (e.g., by setting the
165 // disableRemotePlayback attribute), this should shut down remoting. 174 // disableRemotePlayback attribute), this should shut down remoting.
166 remoting_renderer_controller_->OnRemotePlaybackDisabled(true); 175 remoting_renderer_controller_->OnRemotePlaybackDisabled(true);
167 RunUntilIdle(); 176 RunUntilIdle();
168 EXPECT_FALSE(is_rendering_remotely_); 177 EXPECT_FALSE(is_rendering_remotely_);
169 } 178 }
170 179
171 TEST_F(RemotingRendererControllerTest, StartFailed) { 180 TEST_F(RemotingRendererControllerTest, StartFailed) {
(...skipping 11 matching lines...) Expand all
183 EXPECT_FALSE(is_rendering_remotely_); 192 EXPECT_FALSE(is_rendering_remotely_);
184 remoting_renderer_controller_->OnEnteredFullscreen(); 193 remoting_renderer_controller_->OnEnteredFullscreen();
185 RunUntilIdle(); 194 RunUntilIdle();
186 EXPECT_FALSE(is_rendering_remotely_); 195 EXPECT_FALSE(is_rendering_remotely_);
187 remoting_renderer_controller_->OnMetadataChanged(DefaultMetadata()); 196 remoting_renderer_controller_->OnMetadataChanged(DefaultMetadata());
188 RunUntilIdle(); 197 RunUntilIdle();
189 EXPECT_FALSE(is_rendering_remotely_); 198 EXPECT_FALSE(is_rendering_remotely_);
190 remoting_renderer_controller_->OnRemotePlaybackDisabled(false); 199 remoting_renderer_controller_->OnRemotePlaybackDisabled(false);
191 RunUntilIdle(); 200 RunUntilIdle();
192 EXPECT_FALSE(is_rendering_remotely_); 201 EXPECT_FALSE(is_rendering_remotely_);
202 remoting_renderer_controller_->OnPlaying();
203 RunUntilIdle();
204 EXPECT_FALSE(is_rendering_remotely_);
193 } 205 }
194 206
195 TEST_F(RemotingRendererControllerTest, EncryptedWithRemotingCdm) { 207 TEST_F(RemotingRendererControllerTest, EncryptedWithRemotingCdm) {
196 EXPECT_FALSE(is_rendering_remotely_); 208 EXPECT_FALSE(is_rendering_remotely_);
197 remoting_renderer_controller_ = base::MakeUnique<RemotingRendererController>( 209 remoting_renderer_controller_ = base::MakeUnique<RemotingRendererController>(
198 CreateRemotingSourceImpl(false)); 210 CreateRemotingSourceImpl(false));
199 remoting_renderer_controller_->SetSwitchRendererCallback(base::Bind( 211 remoting_renderer_controller_->SetSwitchRendererCallback(base::Bind(
200 &RemotingRendererControllerTest::ToggleRenderer, base::Unretained(this))); 212 &RemotingRendererControllerTest::ToggleRenderer, base::Unretained(this)));
201 RunUntilIdle(); 213 RunUntilIdle();
202 EXPECT_FALSE(is_rendering_remotely_); 214 EXPECT_FALSE(is_rendering_remotely_);
203 remoting_renderer_controller_->OnMetadataChanged(EncryptedMetadata()); 215 remoting_renderer_controller_->OnMetadataChanged(EncryptedMetadata());
204 remoting_renderer_controller_->OnRemotePlaybackDisabled(false); 216 remoting_renderer_controller_->OnRemotePlaybackDisabled(false);
217 remoting_renderer_controller_->OnPlaying();
205 RunUntilIdle(); 218 RunUntilIdle();
206 EXPECT_FALSE(is_rendering_remotely_); 219 EXPECT_FALSE(is_rendering_remotely_);
207 scoped_refptr<RemotingSourceImpl> cdm_remoting_source_impl = 220 scoped_refptr<RemotingSourceImpl> cdm_remoting_source_impl =
208 CreateRemotingSourceImpl(false); 221 CreateRemotingSourceImpl(false);
209 std::unique_ptr<RemotingCdmController> remoting_cdm_controller = 222 std::unique_ptr<RemotingCdmController> remoting_cdm_controller =
210 base::MakeUnique<RemotingCdmController>(cdm_remoting_source_impl); 223 base::MakeUnique<RemotingCdmController>(cdm_remoting_source_impl);
211 cdm_remoting_source_impl->OnSinkAvailable(kAllCapabilities); 224 cdm_remoting_source_impl->OnSinkAvailable(kAllCapabilities);
212 remoting_cdm_controller->ShouldCreateRemotingCdm(base::Bind( 225 remoting_cdm_controller->ShouldCreateRemotingCdm(base::Bind(
213 &RemotingRendererControllerTest::CreateCdm, base::Unretained(this))); 226 &RemotingRendererControllerTest::CreateCdm, base::Unretained(this)));
214 RunUntilIdle(); 227 RunUntilIdle();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 EXPECT_FALSE(is_rendering_remotely_); 273 EXPECT_FALSE(is_rendering_remotely_);
261 remoting_renderer_controller_->OnEnteredFullscreen(); 274 remoting_renderer_controller_->OnEnteredFullscreen();
262 RunUntilIdle(); 275 RunUntilIdle();
263 EXPECT_FALSE(is_rendering_remotely_); 276 EXPECT_FALSE(is_rendering_remotely_);
264 remoting_renderer_controller_->OnMetadataChanged(EncryptedMetadata()); 277 remoting_renderer_controller_->OnMetadataChanged(EncryptedMetadata());
265 RunUntilIdle(); 278 RunUntilIdle();
266 EXPECT_FALSE(is_rendering_remotely_); 279 EXPECT_FALSE(is_rendering_remotely_);
267 remoting_renderer_controller_->OnRemotePlaybackDisabled(false); 280 remoting_renderer_controller_->OnRemotePlaybackDisabled(false);
268 RunUntilIdle(); 281 RunUntilIdle();
269 EXPECT_FALSE(is_rendering_remotely_); 282 EXPECT_FALSE(is_rendering_remotely_);
283 remoting_renderer_controller_->OnPlaying();
284 RunUntilIdle();
285 EXPECT_FALSE(is_rendering_remotely_);
270 286
271 scoped_refptr<RemotingSourceImpl> cdm_remoting_source_impl = 287 scoped_refptr<RemotingSourceImpl> cdm_remoting_source_impl =
272 CreateRemotingSourceImpl(true); 288 CreateRemotingSourceImpl(true);
273 std::unique_ptr<RemotingCdmController> remoting_cdm_controller = 289 std::unique_ptr<RemotingCdmController> remoting_cdm_controller =
274 base::MakeUnique<RemotingCdmController>(cdm_remoting_source_impl); 290 base::MakeUnique<RemotingCdmController>(cdm_remoting_source_impl);
275 cdm_remoting_source_impl->OnSinkAvailable(kAllCapabilities); 291 cdm_remoting_source_impl->OnSinkAvailable(kAllCapabilities);
276 remoting_cdm_controller->ShouldCreateRemotingCdm(base::Bind( 292 remoting_cdm_controller->ShouldCreateRemotingCdm(base::Bind(
277 &RemotingRendererControllerTest::CreateCdm, base::Unretained(this))); 293 &RemotingRendererControllerTest::CreateCdm, base::Unretained(this)));
278 RunUntilIdle(); 294 RunUntilIdle();
279 EXPECT_FALSE(is_rendering_remotely_); 295 EXPECT_FALSE(is_rendering_remotely_);
(...skipping 10 matching lines...) Expand all
290 EXPECT_FALSE(is_rendering_remotely_); 306 EXPECT_FALSE(is_rendering_remotely_);
291 remoting_renderer_controller_->OnEnteredFullscreen(); 307 remoting_renderer_controller_->OnEnteredFullscreen();
292 RunUntilIdle(); 308 RunUntilIdle();
293 EXPECT_FALSE(is_rendering_remotely_); 309 EXPECT_FALSE(is_rendering_remotely_);
294 remoting_renderer_controller_->OnMetadataChanged(EncryptedMetadata()); 310 remoting_renderer_controller_->OnMetadataChanged(EncryptedMetadata());
295 RunUntilIdle(); 311 RunUntilIdle();
296 EXPECT_FALSE(is_rendering_remotely_); 312 EXPECT_FALSE(is_rendering_remotely_);
297 remoting_renderer_controller_->OnRemotePlaybackDisabled(false); 313 remoting_renderer_controller_->OnRemotePlaybackDisabled(false);
298 RunUntilIdle(); 314 RunUntilIdle();
299 EXPECT_FALSE(is_rendering_remotely_); 315 EXPECT_FALSE(is_rendering_remotely_);
316 remoting_renderer_controller_->OnPlaying();
317 RunUntilIdle();
318 EXPECT_FALSE(is_rendering_remotely_);
300 319
301 scoped_refptr<RemotingSourceImpl> cdm_remoting_source_impl = 320 scoped_refptr<RemotingSourceImpl> cdm_remoting_source_impl =
302 CreateRemotingSourceImpl(false); 321 CreateRemotingSourceImpl(false);
303 std::unique_ptr<RemotingCdmController> remoting_cdm_controller = 322 std::unique_ptr<RemotingCdmController> remoting_cdm_controller =
304 base::MakeUnique<RemotingCdmController>(cdm_remoting_source_impl); 323 base::MakeUnique<RemotingCdmController>(cdm_remoting_source_impl);
305 cdm_remoting_source_impl->OnSinkAvailable(kAllCapabilities); 324 cdm_remoting_source_impl->OnSinkAvailable(kAllCapabilities);
306 remoting_cdm_controller->ShouldCreateRemotingCdm(base::Bind( 325 remoting_cdm_controller->ShouldCreateRemotingCdm(base::Bind(
307 &RemotingRendererControllerTest::CreateCdm, base::Unretained(this))); 326 &RemotingRendererControllerTest::CreateCdm, base::Unretained(this)));
308 RunUntilIdle(); 327 RunUntilIdle();
309 EXPECT_FALSE(is_rendering_remotely_); 328 EXPECT_FALSE(is_rendering_remotely_);
(...skipping 14 matching lines...) Expand all
324 remoting_renderer_controller_->OnSetCdm(remoting_cdm_context.get()); 343 remoting_renderer_controller_->OnSetCdm(remoting_cdm_context.get());
325 RunUntilIdle(); 344 RunUntilIdle();
326 // Switch to using the remoting renderer, even when the remoting CDM session 345 // Switch to using the remoting renderer, even when the remoting CDM session
327 // was already terminated, to show the failure interstitial. 346 // was already terminated, to show the failure interstitial.
328 EXPECT_TRUE(is_rendering_remotely_); 347 EXPECT_TRUE(is_rendering_remotely_);
329 EXPECT_EQ(RemotingSessionState::SESSION_PERMANENTLY_STOPPED, 348 EXPECT_EQ(RemotingSessionState::SESSION_PERMANENTLY_STOPPED,
330 remoting_renderer_controller_->remoting_source()->state()); 349 remoting_renderer_controller_->remoting_source()->state());
331 } 350 }
332 351
333 } // namespace media 352 } // namespace media
OLDNEW
« no previous file with comments | « media/remoting/remoting_renderer_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698