| 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 "chrome/browser/media/media_capture_devices_dispatcher.h" | 5 #include "chrome/browser/media/media_capture_devices_dispatcher.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
| 10 #include "base/sha1.h" | 10 #include "base/sha1.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 } | 79 } |
| 80 | 80 |
| 81 } // namespace | 81 } // namespace |
| 82 | 82 |
| 83 MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() { | 83 MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() { |
| 84 return Singleton<MediaCaptureDevicesDispatcher>::get(); | 84 return Singleton<MediaCaptureDevicesDispatcher>::get(); |
| 85 } | 85 } |
| 86 | 86 |
| 87 MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher() | 87 MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher() |
| 88 : devices_enumerated_(false), | 88 : devices_enumerated_(false), |
| 89 is_device_enumeration_disabled_(false), |
| 89 media_stream_capture_indicator_(new MediaStreamCaptureIndicator()), | 90 media_stream_capture_indicator_(new MediaStreamCaptureIndicator()), |
| 90 audio_stream_indicator_(new AudioStreamIndicator()) {} | 91 audio_stream_indicator_(new AudioStreamIndicator()) {} |
| 91 | 92 |
| 92 MediaCaptureDevicesDispatcher::~MediaCaptureDevicesDispatcher() {} | 93 MediaCaptureDevicesDispatcher::~MediaCaptureDevicesDispatcher() {} |
| 93 | 94 |
| 94 void MediaCaptureDevicesDispatcher::RegisterUserPrefs( | 95 void MediaCaptureDevicesDispatcher::RegisterUserPrefs( |
| 95 user_prefs::PrefRegistrySyncable* registry) { | 96 user_prefs::PrefRegistrySyncable* registry) { |
| 96 registry->RegisterStringPref( | 97 registry->RegisterStringPref( |
| 97 prefs::kDefaultAudioCaptureDevice, | 98 prefs::kDefaultAudioCaptureDevice, |
| 98 std::string(), | 99 std::string(), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 110 } | 111 } |
| 111 | 112 |
| 112 void MediaCaptureDevicesDispatcher::RemoveObserver(Observer* observer) { | 113 void MediaCaptureDevicesDispatcher::RemoveObserver(Observer* observer) { |
| 113 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 114 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 114 observers_.RemoveObserver(observer); | 115 observers_.RemoveObserver(observer); |
| 115 } | 116 } |
| 116 | 117 |
| 117 const MediaStreamDevices& | 118 const MediaStreamDevices& |
| 118 MediaCaptureDevicesDispatcher::GetAudioCaptureDevices() { | 119 MediaCaptureDevicesDispatcher::GetAudioCaptureDevices() { |
| 119 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 120 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 120 if (!devices_enumerated_) { | 121 if (!is_device_enumeration_disabled_ && !devices_enumerated_) { |
| 121 BrowserThread::PostTask( | 122 BrowserThread::PostTask( |
| 122 BrowserThread::IO, FROM_HERE, | 123 BrowserThread::IO, FROM_HERE, |
| 123 base::Bind(&content::EnsureMonitorCaptureDevices)); | 124 base::Bind(&content::EnsureMonitorCaptureDevices)); |
| 124 devices_enumerated_ = true; | 125 devices_enumerated_ = true; |
| 125 } | 126 } |
| 126 return audio_devices_; | 127 return audio_devices_; |
| 127 } | 128 } |
| 128 | 129 |
| 129 const MediaStreamDevices& | 130 const MediaStreamDevices& |
| 130 MediaCaptureDevicesDispatcher::GetVideoCaptureDevices() { | 131 MediaCaptureDevicesDispatcher::GetVideoCaptureDevices() { |
| 131 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 132 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 132 if (!devices_enumerated_) { | 133 if (!is_device_enumeration_disabled_ && !devices_enumerated_) { |
| 133 BrowserThread::PostTask( | 134 BrowserThread::PostTask( |
| 134 BrowserThread::IO, FROM_HERE, | 135 BrowserThread::IO, FROM_HERE, |
| 135 base::Bind(&content::EnsureMonitorCaptureDevices)); | 136 base::Bind(&content::EnsureMonitorCaptureDevices)); |
| 136 devices_enumerated_ = true; | 137 devices_enumerated_ = true; |
| 137 } | 138 } |
| 138 return video_devices_; | 139 return video_devices_; |
| 139 } | 140 } |
| 140 | 141 |
| 141 void MediaCaptureDevicesDispatcher::ProcessMediaAccessRequest( | 142 void MediaCaptureDevicesDispatcher::ProcessMediaAccessRequest( |
| 142 content::WebContents* web_contents, | 143 content::WebContents* web_contents, |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 } | 298 } |
| 298 if (video) { | 299 if (video) { |
| 299 const content::MediaStreamDevices& video_devices = GetVideoCaptureDevices(); | 300 const content::MediaStreamDevices& video_devices = GetVideoCaptureDevices(); |
| 300 const content::MediaStreamDevice* const device = | 301 const content::MediaStreamDevice* const device = |
| 301 FindDefaultDeviceWithId(video_devices, requested_device_id); | 302 FindDefaultDeviceWithId(video_devices, requested_device_id); |
| 302 if (device) | 303 if (device) |
| 303 devices->push_back(*device); | 304 devices->push_back(*device); |
| 304 } | 305 } |
| 305 } | 306 } |
| 306 | 307 |
| 308 void MediaCaptureDevicesDispatcher::DisableDeviceEnumerationForTesting() { |
| 309 is_device_enumeration_disabled_ = true; |
| 310 } |
| 311 |
| 307 scoped_refptr<MediaStreamCaptureIndicator> | 312 scoped_refptr<MediaStreamCaptureIndicator> |
| 308 MediaCaptureDevicesDispatcher::GetMediaStreamCaptureIndicator() { | 313 MediaCaptureDevicesDispatcher::GetMediaStreamCaptureIndicator() { |
| 309 return media_stream_capture_indicator_; | 314 return media_stream_capture_indicator_; |
| 310 } | 315 } |
| 311 | 316 |
| 312 scoped_refptr<AudioStreamIndicator> | 317 scoped_refptr<AudioStreamIndicator> |
| 313 MediaCaptureDevicesDispatcher::GetAudioStreamIndicator() { | 318 MediaCaptureDevicesDispatcher::GetAudioStreamIndicator() { |
| 314 return audio_stream_indicator_; | 319 return audio_stream_indicator_; |
| 315 } | 320 } |
| 316 | 321 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 int render_process_id, | 383 int render_process_id, |
| 379 int render_view_id, | 384 int render_view_id, |
| 380 const content::MediaStreamDevice& device, | 385 const content::MediaStreamDevice& device, |
| 381 content::MediaRequestState state) { | 386 content::MediaRequestState state) { |
| 382 FOR_EACH_OBSERVER(Observer, observers_, | 387 FOR_EACH_OBSERVER(Observer, observers_, |
| 383 OnRequestUpdate(render_process_id, | 388 OnRequestUpdate(render_process_id, |
| 384 render_view_id, | 389 render_view_id, |
| 385 device, | 390 device, |
| 386 state)); | 391 state)); |
| 387 } | 392 } |
| OLD | NEW |