Chromium Code Reviews| Index: chrome/browser/media/media_capture_devices_dispatcher.cc |
| diff --git a/chrome/browser/media/media_capture_devices_dispatcher.cc b/chrome/browser/media/media_capture_devices_dispatcher.cc |
| index 690bd1b143f9fcb136cfd170a09e933ce3f69b91..7bc172845120dcd970fd852a09e202f18b42e767 100644 |
| --- a/chrome/browser/media/media_capture_devices_dispatcher.cc |
| +++ b/chrome/browser/media/media_capture_devices_dispatcher.cc |
| @@ -26,7 +26,7 @@ |
| #include "components/user_prefs/pref_registry_syncable.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/desktop_media_id.h" |
| -#include "content/public/browser/media_devices_monitor.h" |
| +#include "content/public/browser/media_capture_devices.h" |
| #include "content/public/browser/notification_service.h" |
| #include "content/public/browser/notification_source.h" |
| #include "content/public/browser/notification_types.h" |
| @@ -43,6 +43,7 @@ |
| #endif // defined(OS_CHROMEOS) |
| using content::BrowserThread; |
| +using content::MediaCaptureDevices; |
| using content::MediaStreamDevices; |
| namespace { |
| @@ -194,8 +195,7 @@ MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() { |
| } |
| MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher() |
| - : devices_enumerated_(false), |
| - is_device_enumeration_disabled_(false), |
| + : is_device_enumeration_disabled_(false), |
| media_stream_capture_indicator_(new MediaStreamCaptureIndicator()), |
| audio_stream_indicator_(new AudioStreamIndicator()) { |
| // MediaCaptureDevicesDispatcher is a singleton. It should be created on |
| @@ -236,21 +236,19 @@ void MediaCaptureDevicesDispatcher::RemoveObserver(Observer* observer) { |
| const MediaStreamDevices& |
| MediaCaptureDevicesDispatcher::GetAudioCaptureDevices() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - if (!is_device_enumeration_disabled_ && !devices_enumerated_) { |
| - content::EnsureMonitorCaptureDevices(); |
| - devices_enumerated_ = true; |
| - } |
| - return audio_devices_; |
| + if (is_device_enumeration_disabled_) |
| + return test_audio_devices_; |
| + |
| + return MediaCaptureDevices::GetInstance()->GetAudioCaptureDevices(); |
| } |
| const MediaStreamDevices& |
| MediaCaptureDevicesDispatcher::GetVideoCaptureDevices() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - if (!is_device_enumeration_disabled_ && !devices_enumerated_) { |
| - content::EnsureMonitorCaptureDevices(); |
| - devices_enumerated_ = true; |
| - } |
| - return video_devices_; |
| + if (is_device_enumeration_disabled_) |
| + return test_video_devices_; |
| + |
| + return MediaCaptureDevices::GetInstance()->GetVideoCaptureDevices(); |
| } |
| void MediaCaptureDevicesDispatcher::Observe( |
| @@ -677,22 +675,22 @@ MediaCaptureDevicesDispatcher::GetDesktopStreamsRegistry() { |
| return desktop_streams_registry_.get(); |
| } |
| -void MediaCaptureDevicesDispatcher::OnAudioCaptureDevicesChanged( |
| - const content::MediaStreamDevices& devices) { |
| +void MediaCaptureDevicesDispatcher::OnAudioCaptureDevicesChanged() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| BrowserThread::PostTask( |
| BrowserThread::UI, FROM_HERE, |
| - base::Bind(&MediaCaptureDevicesDispatcher::UpdateAudioDevicesOnUIThread, |
| - base::Unretained(this), devices)); |
| + base::Bind( |
| + &MediaCaptureDevicesDispatcher::NotifyAudioDevicesChangedOnUIThread, |
| + base::Unretained(this))); |
| } |
| -void MediaCaptureDevicesDispatcher::OnVideoCaptureDevicesChanged( |
| - const content::MediaStreamDevices& devices) { |
| +void MediaCaptureDevicesDispatcher::OnVideoCaptureDevicesChanged() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| BrowserThread::PostTask( |
| BrowserThread::UI, FROM_HERE, |
| - base::Bind(&MediaCaptureDevicesDispatcher::UpdateVideoDevicesOnUIThread, |
| - base::Unretained(this), devices)); |
| + base::Bind( |
| + &MediaCaptureDevicesDispatcher::NotifyVideoDevicesChangedOnUIThread, |
| + base::Unretained(this))); |
| } |
| void MediaCaptureDevicesDispatcher::OnMediaRequestStateChanged( |
| @@ -730,22 +728,14 @@ void MediaCaptureDevicesDispatcher::OnCreatingAudioStream( |
| base::Unretained(this), render_process_id, render_frame_id)); |
| } |
| -void MediaCaptureDevicesDispatcher::UpdateAudioDevicesOnUIThread( |
| - const content::MediaStreamDevices& devices) { |
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - devices_enumerated_ = true; |
| - audio_devices_ = devices; |
| +void MediaCaptureDevicesDispatcher::NotifyAudioDevicesChangedOnUIThread() { |
| FOR_EACH_OBSERVER(Observer, observers_, |
| - OnUpdateAudioDevices(audio_devices_)); |
| + OnUpdateAudioDevices(GetAudioCaptureDevices())); |
|
jiayl
2014/03/05 22:48:27
The result can be cached to avoid calling it once
michaelbai
2014/03/06 05:24:52
Done.
|
| } |
| -void MediaCaptureDevicesDispatcher::UpdateVideoDevicesOnUIThread( |
| - const content::MediaStreamDevices& devices) { |
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - devices_enumerated_ = true; |
| - video_devices_ = devices; |
| +void MediaCaptureDevicesDispatcher::NotifyVideoDevicesChangedOnUIThread() { |
| FOR_EACH_OBSERVER(Observer, observers_, |
| - OnUpdateVideoDevices(video_devices_)); |
| + OnUpdateVideoDevices(GetVideoCaptureDevices())); |
|
jiayl
2014/03/05 22:48:27
dito.
michaelbai
2014/03/06 05:24:52
Done.
|
| } |
| void MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread( |
| @@ -829,3 +819,14 @@ bool MediaCaptureDevicesDispatcher::IsDesktopCaptureInProgress() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| return desktop_capture_sessions_.size() > 0; |
| } |
| + |
| + |
| +void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( |
| + const MediaStreamDevices& devices) { |
| + test_audio_devices_ = devices; |
| +} |
| + |
| +void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices( |
| + const MediaStreamDevices& devices) { |
| + test_video_devices_ = devices; |
| +} |