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 |