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

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

Issue 562643003: Implement WebUserMediaClient::requestSources (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleaning. Created 6 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
« no previous file with comments | « content/renderer/media/user_media_client_impl.h ('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 (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 <utility> 7 #include <utility>
8 8
9 #include "base/hash.h" 9 #include "base/hash.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
13 #include "base/strings/stringprintf.h" 13 #include "base/strings/stringprintf.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "content/public/renderer/render_frame.h" 15 #include "content/public/renderer/render_frame.h"
16 #include "content/renderer/media/media_stream.h" 16 #include "content/renderer/media/media_stream.h"
17 #include "content/renderer/media/media_stream_audio_source.h" 17 #include "content/renderer/media/media_stream_audio_source.h"
18 #include "content/renderer/media/media_stream_dispatcher.h" 18 #include "content/renderer/media/media_stream_dispatcher.h"
19 #include "content/renderer/media/media_stream_video_capturer_source.h" 19 #include "content/renderer/media/media_stream_video_capturer_source.h"
20 #include "content/renderer/media/media_stream_video_track.h" 20 #include "content/renderer/media/media_stream_video_track.h"
21 #include "content/renderer/media/peer_connection_tracker.h" 21 #include "content/renderer/media/peer_connection_tracker.h"
22 #include "content/renderer/media/webrtc/webrtc_video_capturer_adapter.h" 22 #include "content/renderer/media/webrtc/webrtc_video_capturer_adapter.h"
23 #include "content/renderer/media/webrtc_audio_capturer.h" 23 #include "content/renderer/media/webrtc_audio_capturer.h"
24 #include "content/renderer/media/webrtc_logging.h" 24 #include "content/renderer/media/webrtc_logging.h"
25 #include "content/renderer/media/webrtc_uma_histograms.h" 25 #include "content/renderer/media/webrtc_uma_histograms.h"
26 #include "content/renderer/render_thread_impl.h" 26 #include "content/renderer/render_thread_impl.h"
27 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" 27 #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
28 #include "third_party/WebKit/public/platform/WebMediaDeviceInfo.h" 28 #include "third_party/WebKit/public/platform/WebMediaDeviceInfo.h"
29 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 29 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
30 #include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h "
30 #include "third_party/WebKit/public/web/WebDocument.h" 31 #include "third_party/WebKit/public/web/WebDocument.h"
31 #include "third_party/WebKit/public/web/WebLocalFrame.h" 32 #include "third_party/WebKit/public/web/WebLocalFrame.h"
32 33
33 namespace content { 34 namespace content {
34 namespace { 35 namespace {
35 36
36 void CopyStreamConstraints(const blink::WebMediaConstraints& constraints, 37 void CopyStreamConstraints(const blink::WebMediaConstraints& constraints,
37 StreamOptions::Constraints* mandatory, 38 StreamOptions::Constraints* mandatory,
38 StreamOptions::Constraints* optional) { 39 StreamOptions::Constraints* optional) {
39 blink::WebVector<blink::WebMediaConstraint> mandatory_constraints; 40 blink::WebVector<blink::WebMediaConstraint> mandatory_constraints;
(...skipping 15 matching lines...) Expand all
55 56
56 static int g_next_request_id = 0; 57 static int g_next_request_id = 0;
57 58
58 } // namespace 59 } // namespace
59 60
60 struct UserMediaClientImpl::MediaDevicesRequestInfo { 61 struct UserMediaClientImpl::MediaDevicesRequestInfo {
61 MediaDevicesRequestInfo(const blink::WebMediaDevicesRequest& request, 62 MediaDevicesRequestInfo(const blink::WebMediaDevicesRequest& request,
62 int audio_input_request_id, 63 int audio_input_request_id,
63 int video_input_request_id, 64 int video_input_request_id,
64 int audio_output_request_id) 65 int audio_output_request_id)
65 : request(request), 66 : media_devices_request(request),
66 audio_input_request_id(audio_input_request_id), 67 audio_input_request_id(audio_input_request_id),
67 video_input_request_id(video_input_request_id), 68 video_input_request_id(video_input_request_id),
68 audio_output_request_id(audio_output_request_id), 69 audio_output_request_id(audio_output_request_id),
69 has_audio_input_returned(false), 70 has_audio_input_returned(false),
70 has_video_input_returned(false), 71 has_video_input_returned(false),
71 has_audio_output_returned(false) {} 72 has_audio_output_returned(false) {}
72 73
73 blink::WebMediaDevicesRequest request; 74 MediaDevicesRequestInfo(
75 const blink::WebMediaStreamTrackSourcesRequest& request,
76 int audio_input_request_id,
77 int video_input_request_id)
78 : sources_request(request),
79 audio_input_request_id(audio_input_request_id),
80 video_input_request_id(video_input_request_id),
81 audio_output_request_id(-1),
82 has_audio_input_returned(false),
83 has_video_input_returned(false),
84 has_audio_output_returned(false) {}
85
86 blink::WebMediaDevicesRequest media_devices_request;
87 blink::WebMediaStreamTrackSourcesRequest sources_request;
74 int audio_input_request_id; 88 int audio_input_request_id;
75 int video_input_request_id; 89 int video_input_request_id;
76 int audio_output_request_id; 90 int audio_output_request_id;
77 bool has_audio_input_returned; 91 bool has_audio_input_returned;
78 bool has_video_input_returned; 92 bool has_video_input_returned;
79 bool has_audio_output_returned; 93 bool has_audio_output_returned;
80 StreamDeviceInfoArray audio_input_devices; 94 StreamDeviceInfoArray audio_input_devices;
81 StreamDeviceInfoArray video_input_devices; 95 StreamDeviceInfoArray video_input_devices;
82 StreamDeviceInfoArray audio_output_devices; 96 StreamDeviceInfoArray audio_output_devices;
83 }; 97 };
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 void UserMediaClientImpl::cancelMediaDevicesRequest( 267 void UserMediaClientImpl::cancelMediaDevicesRequest(
254 const blink::WebMediaDevicesRequest& media_devices_request) { 268 const blink::WebMediaDevicesRequest& media_devices_request) {
255 DCHECK(CalledOnValidThread()); 269 DCHECK(CalledOnValidThread());
256 MediaDevicesRequestInfo* request = 270 MediaDevicesRequestInfo* request =
257 FindMediaDevicesRequestInfo(media_devices_request); 271 FindMediaDevicesRequestInfo(media_devices_request);
258 if (!request) 272 if (!request)
259 return; 273 return;
260 CancelAndDeleteMediaDevicesRequest(request); 274 CancelAndDeleteMediaDevicesRequest(request);
261 } 275 }
262 276
277 void UserMediaClientImpl::requestSources(
278 const blink::WebMediaStreamTrackSourcesRequest& sources_request) {
279 // TODO
perkj_chrome 2014/09/10 15:17:39 need name name and fix indentation. Is this intent
Henrik Grunell 2014/09/12 10:58:25 Removed, it's counted in blink.
280 // UpdateWebRTCMethodCount(WEBKIT_GET_MEDIA_DEVICES);
281 DCHECK(CalledOnValidThread());
282
283 int audio_input_request_id = g_next_request_id++;
284 int video_input_request_id = g_next_request_id++;
285
286 // |sources_request| can't be mocked, so in tests it will be empty (the
287 // underlying pointer is null). In order to use this function in a test we
288 // need to check if it isNull.
289 GURL security_origin;
290 if (!sources_request.isNull())
291 security_origin = GURL(sources_request.origin().utf8());
292
293 DVLOG(1) << "UserMediaClientImpl::requestSources("
294 << audio_input_request_id
295 << ", " << video_input_request_id
296 << ", " << security_origin.spec() << ")";
297
298 media_devices_requests_.push_back(new MediaDevicesRequestInfo(
299 sources_request,
300 audio_input_request_id,
301 video_input_request_id));
302
303 media_stream_dispatcher_->EnumerateDevices(
304 audio_input_request_id,
305 weak_factory_.GetWeakPtr(),
306 MEDIA_DEVICE_AUDIO_CAPTURE,
307 security_origin);
308
309 media_stream_dispatcher_->EnumerateDevices(
310 video_input_request_id,
311 weak_factory_.GetWeakPtr(),
312 MEDIA_DEVICE_VIDEO_CAPTURE,
313 security_origin);
314 }
315
263 // Callback from MediaStreamDispatcher. 316 // Callback from MediaStreamDispatcher.
264 // The requested stream have been generated by the MediaStreamDispatcher. 317 // The requested stream have been generated by the MediaStreamDispatcher.
265 void UserMediaClientImpl::OnStreamGenerated( 318 void UserMediaClientImpl::OnStreamGenerated(
266 int request_id, 319 int request_id,
267 const std::string& label, 320 const std::string& label,
268 const StreamDeviceInfoArray& audio_array, 321 const StreamDeviceInfoArray& audio_array,
269 const StreamDeviceInfoArray& video_array) { 322 const StreamDeviceInfoArray& video_array) {
270 DCHECK(CalledOnValidThread()); 323 DCHECK(CalledOnValidThread());
271 DVLOG(1) << "UserMediaClientImpl::OnStreamGenerated stream:" << label; 324 DVLOG(1) << "UserMediaClientImpl::OnStreamGenerated stream:" << label;
272 325
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 media_stream_dispatcher_->StopStreamDevice(*device_it); 382 media_stream_dispatcher_->StopStreamDevice(*device_it);
330 } 383 }
331 384
332 for (StreamDeviceInfoArray::const_iterator device_it = video_array.begin(); 385 for (StreamDeviceInfoArray::const_iterator device_it = video_array.begin();
333 device_it != video_array.end(); ++device_it) { 386 device_it != video_array.end(); ++device_it) {
334 if (!FindLocalSource(*device_it)) 387 if (!FindLocalSource(*device_it))
335 media_stream_dispatcher_->StopStreamDevice(*device_it); 388 media_stream_dispatcher_->StopStreamDevice(*device_it);
336 } 389 }
337 } 390 }
338 391
392 void UserMediaClientImpl::FinalizeEnumerateDevices(
393 MediaDevicesRequestInfo* request) {
394 // All devices are ready for copying. We use a hashed audio output device id
395 // as the group id for input and output audio devices. If an input device
396 // doesn't have an associated output device, we use the input device's own id.
397 // We don't support group id for video devices, that's left empty.
398 blink::WebVector<blink::WebMediaDeviceInfo>
399 devices(request->audio_input_devices.size() +
400 request->video_input_devices.size() +
401 request->audio_output_devices.size());
402 for (size_t i = 0; i < request->audio_input_devices.size(); ++i) {
403 const MediaStreamDevice& device = request->audio_input_devices[i].device;
404 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_CAPTURE);
405 std::string group_id = base::UintToString(base::Hash(
406 !device.matched_output_device_id.empty() ?
407 device.matched_output_device_id :
408 device.id));
409 devices[i].initialize(
410 blink::WebString::fromUTF8(device.id),
411 blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput,
412 blink::WebString::fromUTF8(device.name),
413 blink::WebString::fromUTF8(group_id));
414 }
415 size_t offset = request->audio_input_devices.size();
416 for (size_t i = 0; i < request->video_input_devices.size(); ++i) {
417 const MediaStreamDevice& device = request->video_input_devices[i].device;
418 DCHECK_EQ(device.type, MEDIA_DEVICE_VIDEO_CAPTURE);
419 devices[offset + i].initialize(
420 blink::WebString::fromUTF8(device.id),
421 blink::WebMediaDeviceInfo::MediaDeviceKindVideoInput,
422 blink::WebString::fromUTF8(device.name),
423 blink::WebString());
424 }
425 offset += request->video_input_devices.size();
426 for (size_t i = 0; i < request->audio_output_devices.size(); ++i) {
427 const MediaStreamDevice& device = request->audio_output_devices[i].device;
428 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_OUTPUT);
429 devices[offset + i].initialize(
430 blink::WebString::fromUTF8(device.id),
431 blink::WebMediaDeviceInfo::MediaDeviceKindAudioOutput,
432 blink::WebString::fromUTF8(device.name),
433 blink::WebString::fromUTF8(base::UintToString(base::Hash(device.id))));
434 }
435
436 EnumerateDevicesSucceded(&request->media_devices_request, devices);
437 CancelAndDeleteMediaDevicesRequest(request);
perkj_chrome 2014/09/10 15:17:39 code duplication. Can you move line 437 and 479 to
Henrik Grunell 2014/09/12 10:58:25 Well, it's not really duplicated. Above sets up a
perkj_chrome 2014/09/12 12:35:33 CancelAndDeleteMediaDevicesRequest is duplicated a
Henrik Grunell 2014/09/12 12:59:31 Done.
438 }
439
440 void UserMediaClientImpl::FinalizeEnumerateSources(
441 MediaDevicesRequestInfo* request) {
442 blink::WebVector<blink::WebSourceInfo>
443 sources(request->audio_input_devices.size() +
444 request->video_input_devices.size());
445 for (size_t i = 0; i < request->audio_input_devices.size(); ++i) {
446 const MediaStreamDevice& device = request->audio_input_devices[i].device;
447 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_CAPTURE);
448 std::string group_id = base::UintToString(base::Hash(
449 !device.matched_output_device_id.empty() ?
450 device.matched_output_device_id :
451 device.id));
452 sources[i].initialize(blink::WebString::fromUTF8(device.id),
453 blink::WebSourceInfo::SourceKindAudio,
454 blink::WebString::fromUTF8(device.name),
455 blink::WebSourceInfo::VideoFacingModeNone);
456 }
457 size_t offset = request->audio_input_devices.size();
458 for (size_t i = 0; i < request->video_input_devices.size(); ++i) {
459 const MediaStreamDevice& device = request->video_input_devices[i].device;
460 DCHECK_EQ(device.type, MEDIA_DEVICE_VIDEO_CAPTURE);
461 blink::WebSourceInfo::VideoFacingMode video_facing;
462 switch (device.video_facing) {
463 case MEDIA_VIDEO_FACING_USER:
464 video_facing = blink::WebSourceInfo::VideoFacingModeUser;
465 break;
466 case MEDIA_VIDEO_FACING_ENVIRONMENT:
467 video_facing = blink::WebSourceInfo::VideoFacingModeEnvironment;
468 break;
469 default:
470 video_facing = blink::WebSourceInfo::VideoFacingModeNone;
471 }
472 sources[offset + i].initialize(blink::WebString::fromUTF8(device.id),
473 blink::WebSourceInfo::SourceKindVideo,
474 blink::WebString::fromUTF8(device.name),
475 video_facing);
476 }
477
478 EnumerateSourcesSucceded(&request->sources_request, sources);
479 CancelAndDeleteMediaDevicesRequest(request);
480 }
481
339 // Callback from MediaStreamDispatcher. 482 // Callback from MediaStreamDispatcher.
340 // The requested stream failed to be generated. 483 // The requested stream failed to be generated.
341 void UserMediaClientImpl::OnStreamGenerationFailed( 484 void UserMediaClientImpl::OnStreamGenerationFailed(
342 int request_id, 485 int request_id,
343 MediaStreamRequestResult result) { 486 MediaStreamRequestResult result) {
344 DCHECK(CalledOnValidThread()); 487 DCHECK(CalledOnValidThread());
345 DVLOG(1) << "UserMediaClientImpl::OnStreamGenerationFailed(" 488 DVLOG(1) << "UserMediaClientImpl::OnStreamGenerationFailed("
346 << request_id << ")"; 489 << request_id << ")";
347 UserMediaRequestInfo* request_info = FindUserMediaRequestInfo(request_id); 490 UserMediaRequestInfo* request_info = FindUserMediaRequestInfo(request_id);
348 if (!request_info) { 491 if (!request_info) {
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 DCHECK(request->video_input_devices.empty()); 673 DCHECK(request->video_input_devices.empty());
531 request->video_input_devices = device_array; 674 request->video_input_devices = device_array;
532 } else { 675 } else {
533 DCHECK_EQ(request->audio_output_request_id, request_id); 676 DCHECK_EQ(request->audio_output_request_id, request_id);
534 request->has_audio_output_returned = true; 677 request->has_audio_output_returned = true;
535 DCHECK(request->audio_output_devices.empty()); 678 DCHECK(request->audio_output_devices.empty());
536 request->audio_output_devices = device_array; 679 request->audio_output_devices = device_array;
537 } 680 }
538 681
539 if (!request->has_audio_input_returned || 682 if (!request->has_audio_input_returned ||
540 !request->has_video_input_returned || 683 !request->has_video_input_returned) {
541 !request->has_audio_output_returned) {
542 // Wait for the rest of the devices to complete. 684 // Wait for the rest of the devices to complete.
543 return; 685 return;
544 } 686 }
545 687
546 // All devices are ready for copying. We use a hashed audio output device id 688 bool audio_output_devices_requested = request->audio_output_request_id != -1;
547 // as the group id for input and output audio devices. If an input device 689
548 // doesn't have an associated output device, we use the input device's own id. 690 if (audio_output_devices_requested && !request->has_audio_output_returned) {
549 // We don't support group id for video devices, that's left empty. 691 // Wait for the rest of the audio output devices to complete.
550 blink::WebVector<blink::WebMediaDeviceInfo> 692 return;
551 devices(request->audio_input_devices.size() +
552 request->video_input_devices.size() +
553 request->audio_output_devices.size());
554 for (size_t i = 0; i < request->audio_input_devices.size(); ++i) {
555 const MediaStreamDevice& device = request->audio_input_devices[i].device;
556 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_CAPTURE);
557 std::string group_id = base::UintToString(base::Hash(
558 !device.matched_output_device_id.empty() ?
559 device.matched_output_device_id :
560 device.id));
561 devices[i].initialize(
562 blink::WebString::fromUTF8(device.id),
563 blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput,
564 blink::WebString::fromUTF8(device.name),
565 blink::WebString::fromUTF8(group_id));
566 }
567 size_t offset = request->audio_input_devices.size();
568 for (size_t i = 0; i < request->video_input_devices.size(); ++i) {
569 const MediaStreamDevice& device = request->video_input_devices[i].device;
570 DCHECK_EQ(device.type, MEDIA_DEVICE_VIDEO_CAPTURE);
571 devices[offset + i].initialize(
572 blink::WebString::fromUTF8(device.id),
573 blink::WebMediaDeviceInfo::MediaDeviceKindVideoInput,
574 blink::WebString::fromUTF8(device.name),
575 blink::WebString());
576 }
577 offset += request->video_input_devices.size();
578 for (size_t i = 0; i < request->audio_output_devices.size(); ++i) {
579 const MediaStreamDevice& device = request->audio_output_devices[i].device;
580 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_OUTPUT);
581 devices[offset + i].initialize(
582 blink::WebString::fromUTF8(device.id),
583 blink::WebMediaDeviceInfo::MediaDeviceKindAudioOutput,
584 blink::WebString::fromUTF8(device.name),
585 blink::WebString::fromUTF8(base::UintToString(base::Hash(device.id))));
586 } 693 }
587 694
588 EnumerateDevicesSucceded(&request->request, devices); 695 if (audio_output_devices_requested)
perkj_chrome 2014/09/10 15:17:39 why not check what type of request this is by look
Henrik Grunell 2014/09/12 10:58:25 Yes, that's better. Done.
589 CancelAndDeleteMediaDevicesRequest(request); 696 FinalizeEnumerateDevices(request);
697 else
698 FinalizeEnumerateSources(request);
590 } 699 }
591 700
592 void UserMediaClientImpl::OnDeviceOpened( 701 void UserMediaClientImpl::OnDeviceOpened(
593 int request_id, 702 int request_id,
594 const std::string& label, 703 const std::string& label,
595 const StreamDeviceInfo& video_device) { 704 const StreamDeviceInfo& video_device) {
596 DVLOG(1) << "UserMediaClientImpl::OnDeviceOpened(" 705 DVLOG(1) << "UserMediaClientImpl::OnDeviceOpened("
597 << request_id << ", " << label << ")"; 706 << request_id << ", " << label << ")";
598 NOTIMPLEMENTED(); 707 NOTIMPLEMENTED();
599 } 708 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 break; 777 break;
669 } 778 }
670 } 779 }
671 780
672 void UserMediaClientImpl::EnumerateDevicesSucceded( 781 void UserMediaClientImpl::EnumerateDevicesSucceded(
673 blink::WebMediaDevicesRequest* request, 782 blink::WebMediaDevicesRequest* request,
674 blink::WebVector<blink::WebMediaDeviceInfo>& devices) { 783 blink::WebVector<blink::WebMediaDeviceInfo>& devices) {
675 request->requestSucceeded(devices); 784 request->requestSucceeded(devices);
676 } 785 }
677 786
787 void UserMediaClientImpl::EnumerateSourcesSucceded(
788 blink::WebMediaStreamTrackSourcesRequest* request,
789 blink::WebVector<blink::WebSourceInfo>& sources) {
790 request->requestSucceeded(sources);
791 }
792
678 const blink::WebMediaStreamSource* UserMediaClientImpl::FindLocalSource( 793 const blink::WebMediaStreamSource* UserMediaClientImpl::FindLocalSource(
679 const StreamDeviceInfo& device) const { 794 const StreamDeviceInfo& device) const {
680 for (LocalStreamSources::const_iterator it = local_sources_.begin(); 795 for (LocalStreamSources::const_iterator it = local_sources_.begin();
681 it != local_sources_.end(); ++it) { 796 it != local_sources_.end(); ++it) {
682 MediaStreamSource* const source = 797 MediaStreamSource* const source =
683 static_cast<MediaStreamSource*>(it->extraData()); 798 static_cast<MediaStreamSource*>(it->extraData());
684 const StreamDeviceInfo& active_device = source->device_info(); 799 const StreamDeviceInfo& active_device = source->device_info();
685 if (active_device.device.id == device.device.id && 800 if (active_device.device.id == device.device.id &&
686 active_device.device.type == device.device.type && 801 active_device.device.type == device.device.type &&
687 active_device.session_id == device.session_id) { 802 active_device.session_id == device.session_id) {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 } 875 }
761 } 876 }
762 return NULL; 877 return NULL;
763 } 878 }
764 879
765 UserMediaClientImpl::MediaDevicesRequestInfo* 880 UserMediaClientImpl::MediaDevicesRequestInfo*
766 UserMediaClientImpl::FindMediaDevicesRequestInfo( 881 UserMediaClientImpl::FindMediaDevicesRequestInfo(
767 const blink::WebMediaDevicesRequest& request) { 882 const blink::WebMediaDevicesRequest& request) {
768 MediaDevicesRequests::iterator it = media_devices_requests_.begin(); 883 MediaDevicesRequests::iterator it = media_devices_requests_.begin();
769 for (; it != media_devices_requests_.end(); ++it) { 884 for (; it != media_devices_requests_.end(); ++it) {
770 if ((*it)->request == request) 885 if ((*it)->media_devices_request == request)
771 return (*it); 886 return (*it);
772 } 887 }
773 return NULL; 888 return NULL;
774 } 889 }
775 890
776 void UserMediaClientImpl::CancelAndDeleteMediaDevicesRequest( 891 void UserMediaClientImpl::CancelAndDeleteMediaDevicesRequest(
777 MediaDevicesRequestInfo* request) { 892 MediaDevicesRequestInfo* request) {
778 MediaDevicesRequests::iterator it = media_devices_requests_.begin(); 893 MediaDevicesRequests::iterator it = media_devices_requests_.begin();
779 for (; it != media_devices_requests_.end(); ++it) { 894 for (; it != media_devices_requests_.end(); ++it) {
780 if ((*it) == request) { 895 if ((*it) == request) {
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 return; 1061 return;
947 } 1062 }
948 } 1063 }
949 } 1064 }
950 1065
951 bool UserMediaClientImpl::UserMediaRequestInfo::HasPendingSources() const { 1066 bool UserMediaClientImpl::UserMediaRequestInfo::HasPendingSources() const {
952 return !sources_waiting_for_callback_.empty(); 1067 return !sources_waiting_for_callback_.empty();
953 } 1068 }
954 1069
955 } // namespace content 1070 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/user_media_client_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698