| OLD | NEW |
| 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 <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 // doesn't have an associated output device, we use the input device's own id. | 472 // doesn't have an associated output device, we use the input device's own id. |
| 473 // We don't support group id for video devices, that's left empty. | 473 // We don't support group id for video devices, that's left empty. |
| 474 blink::WebVector<blink::WebMediaDeviceInfo> | 474 blink::WebVector<blink::WebMediaDeviceInfo> |
| 475 devices(request->audio_input_devices.size() + | 475 devices(request->audio_input_devices.size() + |
| 476 request->video_input_devices.size() + | 476 request->video_input_devices.size() + |
| 477 request->audio_output_devices.size()); | 477 request->audio_output_devices.size()); |
| 478 for (size_t i = 0; i < request->audio_input_devices.size(); ++i) { | 478 for (size_t i = 0; i < request->audio_input_devices.size(); ++i) { |
| 479 const MediaStreamDevice& device = request->audio_input_devices[i].device; | 479 const MediaStreamDevice& device = request->audio_input_devices[i].device; |
| 480 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_CAPTURE); | 480 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_CAPTURE); |
| 481 | 481 |
| 482 // We add an arbitrary character to the device ID in order to avoid the same | 482 devices[i].initialize(blink::WebString::fromUTF8(device.id), |
| 483 // group ID for the input and output devices that share the same ID but are | 483 blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput, |
| 484 // not in the same physical device. This may happen with the default and | 484 blink::WebString::fromUTF8(device.name), |
| 485 // communication devices. | 485 blink::WebString::fromUTF8(device.group_id)); |
| 486 std::string group_id = base::UintToString(base::Hash( | |
| 487 device.matched_output_device_id.empty() ? | |
| 488 device.id + "i" : | |
| 489 device.matched_output_device_id)); | |
| 490 devices[i].initialize( | |
| 491 blink::WebString::fromUTF8(device.id), | |
| 492 blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput, | |
| 493 blink::WebString::fromUTF8(device.name), | |
| 494 blink::WebString::fromUTF8(group_id)); | |
| 495 } | 486 } |
| 496 size_t offset = request->audio_input_devices.size(); | 487 size_t offset = request->audio_input_devices.size(); |
| 497 for (size_t i = 0; i < request->video_input_devices.size(); ++i) { | 488 for (size_t i = 0; i < request->video_input_devices.size(); ++i) { |
| 498 const MediaStreamDevice& device = request->video_input_devices[i].device; | 489 const MediaStreamDevice& device = request->video_input_devices[i].device; |
| 499 DCHECK_EQ(device.type, MEDIA_DEVICE_VIDEO_CAPTURE); | 490 DCHECK_EQ(device.type, MEDIA_DEVICE_VIDEO_CAPTURE); |
| 500 devices[offset + i].initialize( | 491 devices[offset + i].initialize( |
| 501 blink::WebString::fromUTF8(device.id), | 492 blink::WebString::fromUTF8(device.id), |
| 502 blink::WebMediaDeviceInfo::MediaDeviceKindVideoInput, | 493 blink::WebMediaDeviceInfo::MediaDeviceKindVideoInput, |
| 503 blink::WebString::fromUTF8(device.name), | 494 blink::WebString::fromUTF8(device.name), |
| 504 blink::WebString()); | 495 blink::WebString()); |
| 505 } | 496 } |
| 506 offset += request->video_input_devices.size(); | 497 offset += request->video_input_devices.size(); |
| 507 for (size_t i = 0; i < request->audio_output_devices.size(); ++i) { | 498 for (size_t i = 0; i < request->audio_output_devices.size(); ++i) { |
| 508 const MediaStreamDevice& device = request->audio_output_devices[i].device; | 499 const MediaStreamDevice& device = request->audio_output_devices[i].device; |
| 509 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_OUTPUT); | 500 DCHECK_EQ(device.type, MEDIA_DEVICE_AUDIO_OUTPUT); |
| 510 devices[offset + i].initialize( | 501 devices[offset + i].initialize( |
| 511 blink::WebString::fromUTF8(device.id), | 502 blink::WebString::fromUTF8(device.id), |
| 512 blink::WebMediaDeviceInfo::MediaDeviceKindAudioOutput, | 503 blink::WebMediaDeviceInfo::MediaDeviceKindAudioOutput, |
| 513 blink::WebString::fromUTF8(device.name), | 504 blink::WebString::fromUTF8(device.name), |
| 514 blink::WebString::fromUTF8(base::UintToString(base::Hash(device.id)))); | 505 blink::WebString::fromUTF8(device.group_id)); |
| 515 } | 506 } |
| 516 | 507 |
| 517 EnumerateDevicesSucceded(&request->media_devices_request, devices); | 508 EnumerateDevicesSucceded(&request->media_devices_request, devices); |
| 518 } | 509 } |
| 519 | 510 |
| 520 void UserMediaClientImpl::FinalizeEnumerateSources( | 511 void UserMediaClientImpl::FinalizeEnumerateSources( |
| 521 MediaDevicesRequestInfo* request) { | 512 MediaDevicesRequestInfo* request) { |
| 522 blink::WebVector<blink::WebSourceInfo> | 513 blink::WebVector<blink::WebSourceInfo> |
| 523 sources(request->audio_input_devices.size() + | 514 sources(request->audio_input_devices.size() + |
| 524 request->video_input_devices.size()); | 515 request->video_input_devices.size()); |
| (...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1199 | 1190 |
| 1200 bool UserMediaClientImpl::UserMediaRequestInfo::HasPendingSources() const { | 1191 bool UserMediaClientImpl::UserMediaRequestInfo::HasPendingSources() const { |
| 1201 return !sources_waiting_for_callback_.empty(); | 1192 return !sources_waiting_for_callback_.empty(); |
| 1202 } | 1193 } |
| 1203 | 1194 |
| 1204 void UserMediaClientImpl::OnDestruct() { | 1195 void UserMediaClientImpl::OnDestruct() { |
| 1205 delete this; | 1196 delete this; |
| 1206 } | 1197 } |
| 1207 | 1198 |
| 1208 } // namespace content | 1199 } // namespace content |
| OLD | NEW |