diff options
author | michaelbai@chromium.org <michaelbai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 21:09:37 +0000 |
---|---|---|
committer | michaelbai@chromium.org <michaelbai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 21:09:37 +0000 |
commit | 060ffdbd222874de5208580d4a1e33e021a34375 (patch) | |
tree | 02a3431ec33936b956f19de149740d70fd4b04ef | |
parent | 29957af3773acac8b16aa37d33d4bde727a32a21 (diff) | |
download | chromium_src-060ffdbd222874de5208580d4a1e33e021a34375.zip chromium_src-060ffdbd222874de5208580d4a1e33e021a34375.tar.gz chromium_src-060ffdbd222874de5208580d4a1e33e021a34375.tar.bz2 |
Implement MediaCaptureDevices.
- Added MediaCaptureDevices to cache the MediaCaptureDevice in content layer.
- Removed the correspoding methods in MediaObserver.
- Removed the MediaDevicesMonitor APIs.
BUG=348867
TBR=mnissler
Review URL: https://codereview.chromium.org/183743021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257198 0039d316-1c4b-4281-b951-d872f2087c98
12 files changed, 244 insertions, 111 deletions
diff --git a/chrome/browser/media/media_capture_devices_dispatcher.cc b/chrome/browser/media/media_capture_devices_dispatcher.cc index 6030ab2..0da0a4c 100644 --- a/chrome/browser/media/media_capture_devices_dispatcher.cc +++ b/chrome/browser/media/media_capture_devices_dispatcher.cc @@ -25,7 +25,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" @@ -51,6 +51,7 @@ #endif // !defined(OS_ANDROID) && !defined(OS_IOS) using content::BrowserThread; +using content::MediaCaptureDevices; using content::MediaStreamDevices; namespace { @@ -247,8 +248,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()) { // MediaCaptureDevicesDispatcher is a singleton. It should be created on // UI thread. Otherwise, it will not receive @@ -288,21 +288,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_ || !test_audio_devices_.empty()) + 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_ || !test_video_devices_.empty()) + return test_video_devices_; + + return MediaCaptureDevices::GetInstance()->GetVideoCaptureDevices(); } void MediaCaptureDevicesDispatcher::Observe( @@ -743,22 +741,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( @@ -822,22 +820,16 @@ 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() { + MediaStreamDevices devices = GetAudioCaptureDevices(); FOR_EACH_OBSERVER(Observer, observers_, - OnUpdateAudioDevices(audio_devices_)); + OnUpdateAudioDevices(devices)); } -void MediaCaptureDevicesDispatcher::UpdateVideoDevicesOnUIThread( - const content::MediaStreamDevices& devices) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - devices_enumerated_ = true; - video_devices_ = devices; +void MediaCaptureDevicesDispatcher::NotifyVideoDevicesChangedOnUIThread() { + MediaStreamDevices devices = GetVideoCaptureDevices(); FOR_EACH_OBSERVER(Observer, observers_, - OnUpdateVideoDevices(video_devices_)); + OnUpdateVideoDevices(devices)); } void MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread( @@ -931,3 +923,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; +} diff --git a/chrome/browser/media/media_capture_devices_dispatcher.h b/chrome/browser/media/media_capture_devices_dispatcher.h index 129c0ed1f..0c16f3b 100644 --- a/chrome/browser/media/media_capture_devices_dispatcher.h +++ b/chrome/browser/media/media_capture_devices_dispatcher.h @@ -112,10 +112,8 @@ class MediaCaptureDevicesDispatcher : public content::MediaObserver, void DisableDeviceEnumerationForTesting(); // Overridden from content::MediaObserver: - virtual void OnAudioCaptureDevicesChanged( - const content::MediaStreamDevices& devices) OVERRIDE; - virtual void OnVideoCaptureDevicesChanged( - const content::MediaStreamDevices& devices) OVERRIDE; + virtual void OnAudioCaptureDevicesChanged() OVERRIDE; + virtual void OnVideoCaptureDevicesChanged() OVERRIDE; virtual void OnMediaRequestStateChanged( int render_process_id, int render_view_id, @@ -141,6 +139,10 @@ class MediaCaptureDevicesDispatcher : public content::MediaObserver, bool IsDesktopCaptureInProgress(); + // Only for testing. + void SetTestAudioCaptureDevices(const content::MediaStreamDevices& devices); + void SetTestVideoCaptureDevices(const content::MediaStreamDevices& devices); + private: friend struct DefaultSingletonTraits<MediaCaptureDevicesDispatcher>; @@ -197,8 +199,8 @@ class MediaCaptureDevicesDispatcher : public content::MediaObserver, scoped_ptr<content::MediaStreamUI> ui); // Called by the MediaObserver() functions, executed on UI thread. - void UpdateAudioDevicesOnUIThread(const content::MediaStreamDevices& devices); - void UpdateVideoDevicesOnUIThread(const content::MediaStreamDevices& devices); + void NotifyAudioDevicesChangedOnUIThread(); + void NotifyVideoDevicesChangedOnUIThread(); void UpdateMediaRequestStateOnUIThread( int render_process_id, int render_view_id, @@ -209,19 +211,15 @@ class MediaCaptureDevicesDispatcher : public content::MediaObserver, void OnCreatingAudioStreamOnUIThread(int render_process_id, int render_frame_id); - // A list of cached audio capture devices. - content::MediaStreamDevices audio_devices_; + // Only for testing, a list of cached audio capture devices. + content::MediaStreamDevices test_audio_devices_; - // A list of cached video capture devices. - content::MediaStreamDevices video_devices_; + // Only for testing, a list of cached video capture devices. + content::MediaStreamDevices test_video_devices_; // A list of observers for the device update notifications. ObserverList<Observer> observers_; - // Flag to indicate if device enumeration has been done/doing. - // Only accessed on UI thread. - bool devices_enumerated_; - // Flag used by unittests to disable device enumeration. bool is_device_enumeration_disabled_; diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc index 5271130..9c3ee31 100644 --- a/chrome/browser/policy/policy_browsertest.cc +++ b/chrome/browser/policy/policy_browsertest.cc @@ -2795,7 +2795,7 @@ IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerBrowserTest, content::BrowserThread::PostTaskAndReply( content::BrowserThread::IO, FROM_HERE, - base::Bind(&MediaCaptureDevicesDispatcher::OnAudioCaptureDevicesChanged, + base::Bind(&MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices, base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()), audio_devices), base::Bind(&MediaStreamDevicesControllerBrowserTest::FinishAudioTest, @@ -2828,7 +2828,7 @@ IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerBrowserTest, content::BrowserThread::PostTaskAndReply( content::BrowserThread::IO, FROM_HERE, base::Bind( - &MediaCaptureDevicesDispatcher::OnAudioCaptureDevicesChanged, + &MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices, base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()), audio_devices), base::Bind( @@ -2852,7 +2852,7 @@ IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerBrowserTest, content::BrowserThread::PostTaskAndReply( content::BrowserThread::IO, FROM_HERE, - base::Bind(&MediaCaptureDevicesDispatcher::OnVideoCaptureDevicesChanged, + base::Bind(&MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices, base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()), video_devices), base::Bind(&MediaStreamDevicesControllerBrowserTest::FinishVideoTest, @@ -2884,8 +2884,7 @@ IN_PROC_BROWSER_TEST_P(MediaStreamDevicesControllerBrowserTest, content::BrowserThread::PostTaskAndReply( content::BrowserThread::IO, FROM_HERE, - base::Bind( - &MediaCaptureDevicesDispatcher::OnVideoCaptureDevicesChanged, + base::Bind(&MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices, base::Unretained(MediaCaptureDevicesDispatcher::GetInstance()), video_devices), base::Bind( diff --git a/content/browser/media/media_devices_monitor.cc b/content/browser/media/media_devices_monitor.cc deleted file mode 100644 index 9f2c183..0000000 --- a/content/browser/media/media_devices_monitor.cc +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/public/browser/media_devices_monitor.h" - -#include "content/browser/browser_main_loop.h" -#include "content/browser/renderer_host/media/media_stream_manager.h" -#include "content/public/browser/browser_thread.h" - -namespace content { -namespace { -void EnsureMonitorCaptureDevicesInternal( - MediaStreamManager* media_stream_manager) { - media_stream_manager->EnsureDeviceMonitorStarted(); -} -} - -void EnsureMonitorCaptureDevices() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&EnsureMonitorCaptureDevicesInternal, - BrowserMainLoop::GetInstance()->media_stream_manager())); -} - -} // namespace content diff --git a/content/browser/renderer_host/media/media_capture_devices_impl.cc b/content/browser/renderer_host/media/media_capture_devices_impl.cc new file mode 100644 index 0000000..f4e13ab --- /dev/null +++ b/content/browser/renderer_host/media/media_capture_devices_impl.cc @@ -0,0 +1,99 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/renderer_host/media/media_capture_devices_impl.h" + +#include "content/browser/browser_main_loop.h" +#include "content/browser/renderer_host/media/media_stream_manager.h" +#include "content/public/browser/browser_thread.h" + +namespace content { + +namespace { + +void EnsureMonitorCaptureDevices() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::Bind(&MediaStreamManager::EnsureDeviceMonitorStarted, + base::Unretained( + BrowserMainLoop::GetInstance()->media_stream_manager()))); +} + +} // namespace + +MediaCaptureDevices* MediaCaptureDevices::GetInstance() { + return MediaCaptureDevicesImpl::GetInstance(); +} + +MediaCaptureDevicesImpl* MediaCaptureDevicesImpl::GetInstance() { + return Singleton<MediaCaptureDevicesImpl>::get(); +} + +const MediaStreamDevices& +MediaCaptureDevicesImpl::GetAudioCaptureDevices() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + if (!devices_enumerated_) { + EnsureMonitorCaptureDevices(); + devices_enumerated_ = true; + } + return audio_devices_; +} + +const MediaStreamDevices& +MediaCaptureDevicesImpl::GetVideoCaptureDevices() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + if (!devices_enumerated_) { + EnsureMonitorCaptureDevices(); + devices_enumerated_ = true; + } + return video_devices_; +} + +void MediaCaptureDevicesImpl::OnAudioCaptureDevicesChanged( + const MediaStreamDevices& devices) { + if (BrowserThread::CurrentlyOn(BrowserThread::UI)) { + UpdateAudioDevicesOnUIThread(devices); + } else { + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::Bind(&MediaCaptureDevicesImpl::UpdateAudioDevicesOnUIThread, + base::Unretained(this), devices)); + } +} + +void MediaCaptureDevicesImpl::OnVideoCaptureDevicesChanged( + const MediaStreamDevices& devices) { + if (BrowserThread::CurrentlyOn(BrowserThread::UI)) { + UpdateVideoDevicesOnUIThread(devices); + } else { + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::Bind(&MediaCaptureDevicesImpl::UpdateVideoDevicesOnUIThread, + base::Unretained(this), devices)); + } +} + +MediaCaptureDevicesImpl::MediaCaptureDevicesImpl() + : devices_enumerated_(false) { +} + +MediaCaptureDevicesImpl::~MediaCaptureDevicesImpl() { +} + +void MediaCaptureDevicesImpl::UpdateAudioDevicesOnUIThread( + const MediaStreamDevices& devices) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + devices_enumerated_ = true; + audio_devices_ = devices; +} + +void MediaCaptureDevicesImpl::UpdateVideoDevicesOnUIThread( + const MediaStreamDevices& devices) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + devices_enumerated_ = true; + video_devices_ = devices; +} + +} // namespace content diff --git a/content/browser/renderer_host/media/media_capture_devices_impl.h b/content/browser/renderer_host/media/media_capture_devices_impl.h new file mode 100644 index 0000000..078f659 --- /dev/null +++ b/content/browser/renderer_host/media/media_capture_devices_impl.h @@ -0,0 +1,49 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_CAPTURE_DEVICES_H +#define CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_CAPTURE_DEVICES_H + +#include "base/memory/singleton.h" +#include "content/public/browser/media_capture_devices.h" + +namespace content { + +class MediaCaptureDevicesImpl : public MediaCaptureDevices { + public: + static MediaCaptureDevicesImpl* GetInstance(); + + // Overriden from MediaCaptureDevices + virtual const MediaStreamDevices& GetAudioCaptureDevices() OVERRIDE; + virtual const MediaStreamDevices& GetVideoCaptureDevices() OVERRIDE; + + // Called by MediaStreamManager to notify the change of media capture + // devices, these 2 methods are called in IO thread. + void OnAudioCaptureDevicesChanged(const MediaStreamDevices& devices); + void OnVideoCaptureDevicesChanged(const MediaStreamDevices& devices); + + private: + friend struct DefaultSingletonTraits<MediaCaptureDevicesImpl>; + MediaCaptureDevicesImpl(); + virtual ~MediaCaptureDevicesImpl(); + + void UpdateAudioDevicesOnUIThread(const content::MediaStreamDevices& devices); + void UpdateVideoDevicesOnUIThread(const content::MediaStreamDevices& devices); + + // Flag to indicate if device enumeration has been done/doing. + // Only accessed on UI thread. + bool devices_enumerated_; + + // A list of cached audio capture devices. + MediaStreamDevices audio_devices_; + + // A list of cached video capture devices. + MediaStreamDevices video_devices_; + + DISALLOW_COPY_AND_ASSIGN(MediaCaptureDevicesImpl); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_CAPTURE_DEVICES_H diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc index e07c2da..c533891 100644 --- a/content/browser/renderer_host/media/media_stream_manager.cc +++ b/content/browser/renderer_host/media/media_stream_manager.cc @@ -19,6 +19,7 @@ #include "content/browser/media/capture/web_contents_capture_util.h" #include "content/browser/renderer_host/media/audio_input_device_manager.h" #include "content/browser/renderer_host/media/device_request_message_filter.h" +#include "content/browser/renderer_host/media/media_capture_devices_impl.h" #include "content/browser/renderer_host/media/media_stream_requester.h" #include "content/browser/renderer_host/media/media_stream_ui_proxy.h" #include "content/browser/renderer_host/media/video_capture_manager.h" @@ -1791,9 +1792,13 @@ void MediaStreamManager::NotifyDevicesChanged( } if (IsAudioMediaType(stream_type)) { - media_observer->OnAudioCaptureDevicesChanged(new_devices); + MediaCaptureDevicesImpl::GetInstance()->OnAudioCaptureDevicesChanged( + new_devices); + media_observer->OnAudioCaptureDevicesChanged(); } else if (IsVideoMediaType(stream_type)) { - media_observer->OnVideoCaptureDevicesChanged(new_devices); + MediaCaptureDevicesImpl::GetInstance()->OnVideoCaptureDevicesChanged( + new_devices); + media_observer->OnVideoCaptureDevicesChanged(); } else { NOTREACHED(); } diff --git a/content/browser/renderer_host/media/mock_media_observer.h b/content/browser/renderer_host/media/mock_media_observer.h index 24f0b24..04678c9 100644 --- a/content/browser/renderer_host/media/mock_media_observer.h +++ b/content/browser/renderer_host/media/mock_media_observer.h @@ -20,10 +20,6 @@ class MockMediaObserver : public MediaObserver { MockMediaObserver(); virtual ~MockMediaObserver(); - MOCK_METHOD1(OnAudioCaptureDevicesChanged, - void(const MediaStreamDevices& devices)); - MOCK_METHOD1(OnVideoCaptureDevicesChanged, - void(const MediaStreamDevices& devices)); MOCK_METHOD6(OnMediaRequestStateChanged, void(int render_process_id, int render_view_id, int page_request_id, const GURL& security_origin, diff --git a/content/content_browser.gypi b/content/content_browser.gypi index dacc1d4..4e943fc 100644 --- a/content/content_browser.gypi +++ b/content/content_browser.gypi @@ -129,9 +129,9 @@ 'public/browser/load_notification_details.h', 'public/browser/local_storage_usage_info.cc', 'public/browser/local_storage_usage_info.h', + 'public/browser/media_capture_devices.h', 'public/browser/media_device_id.cc', 'public/browser/media_device_id.h', - 'public/browser/media_devices_monitor.h', 'public/browser/native_web_keyboard_event.h', 'public/browser/navigation_controller.cc', 'public/browser/navigation_controller.h', @@ -761,7 +761,6 @@ 'browser/media/capture/web_contents_tracker.h', 'browser/media/capture/web_contents_video_capture_device.cc', 'browser/media/capture/web_contents_video_capture_device.h', - 'browser/media/media_devices_monitor.cc', 'browser/media/media_internals.cc', 'browser/media/media_internals.h', 'browser/media/media_internals_handler.cc', @@ -973,6 +972,8 @@ 'browser/renderer_host/media/audio_sync_reader.h', 'browser/renderer_host/media/device_request_message_filter.cc', 'browser/renderer_host/media/device_request_message_filter.h', + 'browser/renderer_host/media/media_capture_devices_impl.cc', + 'browser/renderer_host/media/media_capture_devices_impl.h', 'browser/renderer_host/media/media_stream_dispatcher_host.cc', 'browser/renderer_host/media/media_stream_dispatcher_host.h', 'browser/renderer_host/media/media_stream_manager.cc', diff --git a/content/public/browser/media_capture_devices.h b/content/public/browser/media_capture_devices.h new file mode 100644 index 0000000..925fff6 --- /dev/null +++ b/content/public/browser/media_capture_devices.h @@ -0,0 +1,32 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ +#define CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ + +#include "content/public/common/media_stream_request.h" + +namespace content { + +// This is a singleton class, used to get Audio/Video devices, it must be +// called in UI thread. +class CONTENT_EXPORT MediaCaptureDevices { + public: + // Get signleton instance of MediaCaptureDevices. + static MediaCaptureDevices* GetInstance(); + + // Return all Audio/Video devices. + virtual const MediaStreamDevices& GetAudioCaptureDevices() = 0; + virtual const MediaStreamDevices& GetVideoCaptureDevices() = 0; + + private: + // This interface should only be implemented inside content. + friend class MediaCaptureDevicesImpl; + MediaCaptureDevices() {} + virtual ~MediaCaptureDevices() {} +}; + +} // namespace content + +#endif // CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ diff --git a/content/public/browser/media_devices_monitor.h b/content/public/browser/media_devices_monitor.h deleted file mode 100644 index 044c8ad..0000000 --- a/content/public/browser/media_devices_monitor.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_PUBLIC_BROWSER_MEDIA_DEVICES_MONITOR_H_ -#define CONTENT_PUBLIC_BROWSER_MEDIA_DEVICES_MONITOR_H_ - -#include "content/common/content_export.h" - -namespace content { - -// Called to ensure the MediaStreamManager has started monitoring the capture -// devices, this will trigger OnAudioCaptureDevicesChanged() and -// OnVideoCaptureDevicesChanged() callbacks. -CONTENT_EXPORT void EnsureMonitorCaptureDevices(); - -} // namespace content - -#endif // CONTENT_PUBLIC_BROWSER_MEDIA_DEVICES_MONITOR_H_ diff --git a/content/public/browser/media_observer.h b/content/public/browser/media_observer.h index 20d47a5..dca5b85 100644 --- a/content/public/browser/media_observer.h +++ b/content/public/browser/media_observer.h @@ -16,12 +16,10 @@ namespace content { class MediaObserver { public: // Called when a audio capture device is plugged in or unplugged. - virtual void OnAudioCaptureDevicesChanged( - const MediaStreamDevices& devices) = 0; + virtual void OnAudioCaptureDevicesChanged() = 0; // Called when a video capture device is plugged in or unplugged. - virtual void OnVideoCaptureDevicesChanged( - const MediaStreamDevices& devices) = 0; + virtual void OnVideoCaptureDevicesChanged() = 0; // Called when a media request changes state. virtual void OnMediaRequestStateChanged( |