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

Side by Side Diff: content/renderer/media/user_media_client_impl_unittest.cc

Issue 2623443002: Fix getUserMedia so that failure is reported for invalid audio sources. (Closed)
Patch Set: Address comments Created 3 years, 11 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer/media/user_media_client_impl.h" 5 #include "content/renderer/media/user_media_client_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 blink::WebMediaDevicesRequest* request, 199 blink::WebMediaDevicesRequest* request,
200 blink::WebVector<blink::WebMediaDeviceInfo>& devices) override { 200 blink::WebVector<blink::WebMediaDeviceInfo>& devices) override {
201 state_ = REQUEST_SUCCEEDED; 201 state_ = REQUEST_SUCCEEDED;
202 last_devices_ = devices; 202 last_devices_ = devices;
203 } 203 }
204 204
205 void SetCreateSourceThatFails(bool should_fail) { 205 void SetCreateSourceThatFails(bool should_fail) {
206 create_source_that_fails_ = should_fail; 206 create_source_that_fails_ = should_fail;
207 } 207 }
208 208
209 static void SignalSourceReady(
210 const MediaStreamSource::ConstraintsCallback& source_ready,
211 MediaStreamSource* source) {
212 source_ready.Run(source, MEDIA_DEVICE_OK, "");
213 }
214
209 MediaStreamAudioSource* CreateAudioSource( 215 MediaStreamAudioSource* CreateAudioSource(
210 const StreamDeviceInfo& device, 216 const StreamDeviceInfo& device,
211 const blink::WebMediaConstraints& constraints) override { 217 const blink::WebMediaConstraints& constraints,
218 const MediaStreamSource::ConstraintsCallback& source_ready) override {
212 MediaStreamAudioSource* source; 219 MediaStreamAudioSource* source;
213 if (create_source_that_fails_) { 220 if (create_source_that_fails_) {
214 class FailedAtLifeAudioSource : public MediaStreamAudioSource { 221 class FailedAtLifeAudioSource : public MediaStreamAudioSource {
215 public: 222 public:
216 FailedAtLifeAudioSource() : MediaStreamAudioSource(true) {} 223 FailedAtLifeAudioSource() : MediaStreamAudioSource(true) {}
217 ~FailedAtLifeAudioSource() override {} 224 ~FailedAtLifeAudioSource() override {}
218 protected: 225 protected:
219 bool EnsureSourceIsStarted() override { 226 bool EnsureSourceIsStarted() override {
220 return false; 227 return false;
221 } 228 }
222 }; 229 };
223 source = new FailedAtLifeAudioSource(); 230 source = new FailedAtLifeAudioSource();
224 } else { 231 } else {
225 source = new MediaStreamAudioSource(true); 232 source = new MediaStreamAudioSource(true);
226 } 233 }
227 source->SetDeviceInfo(device); 234 source->SetDeviceInfo(device);
235
236 if (!create_source_that_fails_) {
237 // RunUntilIdle is required for this task to complete.
238 base::ThreadTaskRunnerHandle::Get()->PostTask(
239 FROM_HERE,
240 base::Bind(&UserMediaClientImplUnderTest::SignalSourceReady,
241 source_ready, source));
242 }
243
228 return source; 244 return source;
229 } 245 }
230 246
231 MediaStreamVideoSource* CreateVideoSource( 247 MediaStreamVideoSource* CreateVideoSource(
232 const StreamDeviceInfo& device, 248 const StreamDeviceInfo& device,
233 const MediaStreamSource::SourceStoppedCallback& stop_callback) override { 249 const MediaStreamSource::SourceStoppedCallback& stop_callback) override {
234 video_source_ = new MockMediaStreamVideoCapturerSource(device, 250 video_source_ = new MockMediaStreamVideoCapturerSource(device,
235 stop_callback, 251 stop_callback,
236 factory_); 252 factory_);
237 return video_source_; 253 return video_source_;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 EXPECT_NE(audio_tracks[0].id(), video_tracks[0].id()); 355 EXPECT_NE(audio_tracks[0].id(), video_tracks[0].id());
340 return desc; 356 return desc;
341 } 357 }
342 358
343 void FakeMediaStreamDispatcherRequestUserMediaComplete() { 359 void FakeMediaStreamDispatcherRequestUserMediaComplete() {
344 // Audio request ID is used as the shared request ID. 360 // Audio request ID is used as the shared request ID.
345 user_media_client_impl_->OnStreamGenerated( 361 user_media_client_impl_->OnStreamGenerated(
346 ms_dispatcher_->audio_input_request_id(), 362 ms_dispatcher_->audio_input_request_id(),
347 ms_dispatcher_->stream_label(), ms_dispatcher_->audio_input_array(), 363 ms_dispatcher_->stream_label(), ms_dispatcher_->audio_input_array(),
348 ms_dispatcher_->video_array()); 364 ms_dispatcher_->video_array());
365 base::RunLoop().RunUntilIdle();
349 } 366 }
350 367
351 void StartMockedVideoSource() { 368 void StartMockedVideoSource() {
352 MockMediaStreamVideoCapturerSource* video_source = 369 MockMediaStreamVideoCapturerSource* video_source =
353 user_media_client_impl_->last_created_video_source(); 370 user_media_client_impl_->last_created_video_source();
354 if (video_source->SourceHasAttemptedToStart()) 371 if (video_source->SourceHasAttemptedToStart())
355 video_source->StartMockedSource(); 372 video_source->StartMockedSource();
356 } 373 }
357 374
358 void FailToStartMockedVideoSource() { 375 void FailToStartMockedVideoSource() {
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 blink::WebMediaConstraints audio_constraints = CreateDeviceConstraints( 890 blink::WebMediaConstraints audio_constraints = CreateDeviceConstraints(
874 nullptr, kInvalidDeviceId, kInvalidDeviceId, kFakeAudioInputDeviceId1); 891 nullptr, kInvalidDeviceId, kInvalidDeviceId, kFakeAudioInputDeviceId1);
875 blink::WebMediaConstraints video_constraints = CreateDeviceConstraints( 892 blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
876 nullptr, kInvalidDeviceId, kInvalidDeviceId, kFakeVideoInputDeviceId1); 893 nullptr, kInvalidDeviceId, kInvalidDeviceId, kFakeVideoInputDeviceId1);
877 TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints, 894 TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
878 kFakeAudioInputDeviceId1, 895 kFakeAudioInputDeviceId1,
879 kFakeVideoInputDeviceId1); 896 kFakeVideoInputDeviceId1);
880 } 897 }
881 898
882 } // namespace content 899 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/user_media_client_impl.cc ('k') | content/renderer/media/webrtc/processed_local_audio_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698