diff --git a/atom.gyp b/atom.gyp index edbc9a51c640..81c3b585aef6 100644 --- a/atom.gyp +++ b/atom.gyp @@ -91,10 +91,6 @@ 'browser/file_dialog.h', 'browser/file_dialog_mac.mm', 'browser/file_dialog_win.cc', - 'browser/media/media_capture_devices_dispatcher.cc', - 'browser/media/media_capture_devices_dispatcher.h', - 'browser/media/media_stream_devices_controller.cc', - 'browser/media/media_stream_devices_controller.h', 'browser/message_box.h', 'browser/message_box_mac.mm', 'browser/message_box_win.cc', diff --git a/browser/atom_browser_client.cc b/browser/atom_browser_client.cc index ab8da5db12c6..b3a04a1553c5 100644 --- a/browser/atom_browser_client.cc +++ b/browser/atom_browser_client.cc @@ -5,7 +5,6 @@ #include "browser/atom_browser_client.h" #include "browser/atom_browser_main_parts.h" -#include "browser/media/media_capture_devices_dispatcher.h" #include "webkit/glue/webpreferences.h" namespace atom { @@ -38,10 +37,6 @@ void AtomBrowserClient::OverrideWebkitPrefs( prefs->allow_running_insecure_content = true; } -content::MediaObserver* AtomBrowserClient::GetMediaObserver() { - return MediaCaptureDevicesDispatcher::GetInstance(); -} - bool AtomBrowserClient::ShouldSwapProcessesForNavigation( content::SiteInstance* site_instance, const GURL& current_url, diff --git a/browser/atom_browser_client.h b/browser/atom_browser_client.h index 55c9960923de..16fcbe3b9dda 100644 --- a/browser/atom_browser_client.h +++ b/browser/atom_browser_client.h @@ -18,7 +18,6 @@ class AtomBrowserClient : public brightray::BrowserClient { virtual void OverrideWebkitPrefs(content::RenderViewHost* render_view_host, const GURL& url, WebPreferences* prefs) OVERRIDE; - virtual content::MediaObserver* GetMediaObserver() OVERRIDE; virtual bool ShouldSwapProcessesForNavigation( content::SiteInstance* site_instance, const GURL& current_url, diff --git a/browser/media/media_capture_devices_dispatcher.cc b/browser/media/media_capture_devices_dispatcher.cc deleted file mode 100644 index 91b7bb2582a3..000000000000 --- a/browser/media/media_capture_devices_dispatcher.cc +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) 2013 GitHub, Inc. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "browser/media/media_capture_devices_dispatcher.h" - -#include "base/prefs/pref_service.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/media_devices_monitor.h" -#include "content/public/common/media_stream_request.h" - -using content::BrowserThread; -using content::MediaStreamDevices; - -namespace { - -const content::MediaStreamDevice* FindDefaultDeviceWithId( - const content::MediaStreamDevices& devices, - const std::string& device_id) { - if (devices.empty()) - return NULL; - - content::MediaStreamDevices::const_iterator iter = devices.begin(); - for (; iter != devices.end(); ++iter) { - if (iter->id == device_id) { - return &(*iter); - } - } - - return &(*devices.begin()); -}; - -} // namespace - - -MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() { - return Singleton::get(); -} - -MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher() - : devices_enumerated_(false) {} - -MediaCaptureDevicesDispatcher::~MediaCaptureDevicesDispatcher() {} - -const MediaStreamDevices& -MediaCaptureDevicesDispatcher::GetAudioCaptureDevices() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - if (!devices_enumerated_) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&content::EnsureMonitorCaptureDevices)); - devices_enumerated_ = true; - } - return audio_devices_; -} - -const MediaStreamDevices& -MediaCaptureDevicesDispatcher::GetVideoCaptureDevices() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - if (!devices_enumerated_) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&content::EnsureMonitorCaptureDevices)); - devices_enumerated_ = true; - } - return video_devices_; -} - -void MediaCaptureDevicesDispatcher::GetRequestedDevice( - const std::string& requested_device_id, - bool audio, - bool video, - content::MediaStreamDevices* devices) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - DCHECK(audio || video); - - if (audio) { - const content::MediaStreamDevices& audio_devices = GetAudioCaptureDevices(); - const content::MediaStreamDevice* const device = - FindDefaultDeviceWithId(audio_devices, requested_device_id); - if (device) - devices->push_back(*device); - } - if (video) { - const content::MediaStreamDevices& video_devices = GetVideoCaptureDevices(); - const content::MediaStreamDevice* const device = - FindDefaultDeviceWithId(video_devices, requested_device_id); - if (device) - devices->push_back(*device); - } -} - -void MediaCaptureDevicesDispatcher::GetDefaultDevices( - bool audio, - bool video, - content::MediaStreamDevices* devices) { - if (audio) { - GetRequestedDevice(std::string(), true, false, devices); - } - - if (video) { - GetRequestedDevice(std::string(), false, true, devices); - } -} - -void MediaCaptureDevicesDispatcher::OnAudioCaptureDevicesChanged( - const content::MediaStreamDevices& devices) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - base::Bind(&MediaCaptureDevicesDispatcher::UpdateAudioDevicesOnUIThread, - base::Unretained(this), devices)); -} - -void MediaCaptureDevicesDispatcher::OnVideoCaptureDevicesChanged( - const content::MediaStreamDevices& devices) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - base::Bind(&MediaCaptureDevicesDispatcher::UpdateVideoDevicesOnUIThread, - base::Unretained(this), devices)); -} - -void MediaCaptureDevicesDispatcher::OnMediaRequestStateChanged( - int render_process_id, - int render_view_id, - const content::MediaStreamDevice& device, - content::MediaRequestState state) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - base::Bind( - &MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread, - base::Unretained(this), render_process_id, render_view_id, device, - state)); -} - -void MediaCaptureDevicesDispatcher::UpdateAudioDevicesOnUIThread( - const content::MediaStreamDevices& devices) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - devices_enumerated_ = true; - audio_devices_ = devices; -} - -void MediaCaptureDevicesDispatcher::UpdateVideoDevicesOnUIThread( - const content::MediaStreamDevices& devices) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - devices_enumerated_ = true; - video_devices_ = devices; -} - -void MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread( - int render_process_id, - int render_view_id, - const content::MediaStreamDevice& device, - content::MediaRequestState state) { -} diff --git a/browser/media/media_capture_devices_dispatcher.h b/browser/media/media_capture_devices_dispatcher.h deleted file mode 100644 index 962b37651569..000000000000 --- a/browser/media/media_capture_devices_dispatcher.h +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) 2013 GitHub, Inc. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_MEDIA_MEDIA_CAPTURE_DEVICES_DISPATCHER_H_ -#define CHROME_BROWSER_MEDIA_MEDIA_CAPTURE_DEVICES_DISPATCHER_H_ - -#include "base/callback.h" -#include "base/memory/scoped_ptr.h" -#include "base/memory/singleton.h" -#include "base/observer_list.h" -#include "content/public/browser/media_observer.h" -#include "content/public/common/media_stream_request.h" - -// This singleton is used to receive updates about media events from the content -// layer. -class MediaCaptureDevicesDispatcher : public content::MediaObserver { - public: - static MediaCaptureDevicesDispatcher* GetInstance(); - - // Helper for picking the device that was requested for an OpenDevice request. - // If the device requested is not available it will revert to using the first - // available one instead or will return an empty list if no devices of the - // requested kind are present. - void GetRequestedDevice(const std::string& requested_device_id, - bool audio, - bool video, - content::MediaStreamDevices* devices); - void GetDefaultDevices(bool audio, - bool video, - content::MediaStreamDevices* devices); - - const content::MediaStreamDevices& GetAudioCaptureDevices(); - const content::MediaStreamDevices& GetVideoCaptureDevices(); - - // Overridden from content::MediaObserver: - virtual void OnAudioCaptureDevicesChanged( - const content::MediaStreamDevices& devices) OVERRIDE; - virtual void OnVideoCaptureDevicesChanged( - const content::MediaStreamDevices& devices) OVERRIDE; - virtual void OnMediaRequestStateChanged( - int render_process_id, - int render_view_id, - const content::MediaStreamDevice& device, - content::MediaRequestState state) OVERRIDE; - virtual void OnAudioStreamPlayingChanged( - int render_process_id, - int render_view_id, - int stream_id, - bool playing) OVERRIDE {} - - private: - friend struct DefaultSingletonTraits; - - MediaCaptureDevicesDispatcher(); - virtual ~MediaCaptureDevicesDispatcher(); - - // Called by the MediaObserver() functions, executed on UI thread. - void UpdateAudioDevicesOnUIThread(const content::MediaStreamDevices& devices); - void UpdateVideoDevicesOnUIThread(const content::MediaStreamDevices& devices); - void UpdateMediaRequestStateOnUIThread( - int render_process_id, - int render_view_id, - const content::MediaStreamDevice& device, - content::MediaRequestState state); - - // A list of cached audio capture devices. - content::MediaStreamDevices audio_devices_; - - // A list of cached video capture devices. - content::MediaStreamDevices video_devices_; - - // Flag to indicate if device enumeration has been done/doing. - // Only accessed on UI thread. - bool devices_enumerated_; -}; - -#endif // CHROME_BROWSER_MEDIA_MEDIA_CAPTURE_DEVICES_DISPATCHER_H_ diff --git a/browser/media/media_stream_devices_controller.cc b/browser/media/media_stream_devices_controller.cc deleted file mode 100644 index a7db3056d810..000000000000 --- a/browser/media/media_stream_devices_controller.cc +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2013 GitHub, Inc. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "browser/media/media_stream_devices_controller.h" - -#include "base/values.h" -#include "browser/media/media_capture_devices_dispatcher.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/common/media_stream_request.h" - -namespace atom { - -namespace { - -bool HasAnyAvailableDevice() { - const content::MediaStreamDevices& audio_devices = - MediaCaptureDevicesDispatcher::GetInstance()->GetAudioCaptureDevices(); - const content::MediaStreamDevices& video_devices = - MediaCaptureDevicesDispatcher::GetInstance()->GetVideoCaptureDevices(); - - return !audio_devices.empty() || !video_devices.empty(); -}; - -} // namespace - -MediaStreamDevicesController::MediaStreamDevicesController( - const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback) - : request_(request), - callback_(callback), - microphone_requested_( - request_.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE), - webcam_requested_( - request_.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE) { -} - -MediaStreamDevicesController::~MediaStreamDevicesController() {} - -bool MediaStreamDevicesController::TakeAction() { - // Deny the request if there is no device attached to the OS. - if (!HasAnyAvailableDevice()) { - Deny(); - return true; - } - - Accept(); - return true; -} - -void MediaStreamDevicesController::Accept() { - // Get the default devices for the request. - content::MediaStreamDevices devices; - if (microphone_requested_ || webcam_requested_) { - switch (request_.request_type) { - case content::MEDIA_OPEN_DEVICE: - // For open device request pick the desired device or fall back to the - // first available of the given type. - MediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice( - request_.requested_device_id, - microphone_requested_, - webcam_requested_, - &devices); - break; - case content::MEDIA_DEVICE_ACCESS: - case content::MEDIA_GENERATE_STREAM: - case content::MEDIA_ENUMERATE_DEVICES: - // Get the default devices for the request. - MediaCaptureDevicesDispatcher::GetInstance()-> - GetDefaultDevices(microphone_requested_, - webcam_requested_, - &devices); - break; - } - } - - LOG(ERROR) << "Accept"; - callback_.Run(devices, scoped_ptr()); -} - -void MediaStreamDevicesController::Deny() { - callback_.Run(content::MediaStreamDevices(), - scoped_ptr()); -} - -} // namespace atom diff --git a/browser/media/media_stream_devices_controller.h b/browser/media/media_stream_devices_controller.h deleted file mode 100644 index e2ff28d6ae7a..000000000000 --- a/browser/media/media_stream_devices_controller.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2013 GitHub, Inc. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ATOM_BROWSER_MEDIA_MEDIA_STREAM_DEVICES_CONTROLLER_H_ -#define ATOM_BROWSER_MEDIA_MEDIA_STREAM_DEVICES_CONTROLLER_H_ - -#include "content/public/browser/web_contents_delegate.h" - -namespace atom { - -class MediaStreamDevicesController { - public: - MediaStreamDevicesController(const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback); - - virtual ~MediaStreamDevicesController(); - - // Public method to be called before creating the MediaStreamInfoBarDelegate. - // This function will check the content settings exceptions and take the - // corresponding action on exception which matches the request. - bool TakeAction(); - - // Public methods to be called by MediaStreamInfoBarDelegate; - bool has_audio() const { return microphone_requested_; } - bool has_video() const { return webcam_requested_; } - void Accept(); - void Deny(); - - private: - // The original request for access to devices. - const content::MediaStreamRequest request_; - - // The callback that needs to be Run to notify WebRTC of whether access to - // audio/video devices was granted or not. - content::MediaResponseCallback callback_; - - bool microphone_requested_; - bool webcam_requested_; - - DISALLOW_COPY_AND_ASSIGN(MediaStreamDevicesController); -}; - -} // namespace atom - -#endif // ATOM_BROWSER_MEDIA_MEDIA_STREAM_DEVICES_CONTROLLER_H_ diff --git a/browser/native_window.cc b/browser/native_window.cc index 391e64719996..468708571f28 100644 --- a/browser/native_window.cc +++ b/browser/native_window.cc @@ -15,7 +15,6 @@ #include "browser/atom_browser_context.h" #include "browser/atom_browser_main_parts.h" #include "browser/atom_javascript_dialog_manager.h" -#include "browser/media/media_stream_devices_controller.h" #include "browser/window_list.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/invalidate_type.h" @@ -234,14 +233,6 @@ void NativeWindow::RequestToLockMouse(content::WebContents* web_contents, GetWebContents()->GotResponseToLockMouseRequest(true); } -void NativeWindow::RequestMediaAccessPermission( - content::WebContents* web_contents, - const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback) { - MediaStreamDevicesController controller(request, callback); - controller.TakeAction(); -} - bool NativeWindow::CanOverscrollContent() const { return false; } diff --git a/browser/native_window.h b/browser/native_window.h index 762920cfd082..d271a33423b1 100644 --- a/browser/native_window.h +++ b/browser/native_window.h @@ -138,10 +138,6 @@ class NativeWindow : public content::WebContentsDelegate, virtual void RequestToLockMouse(content::WebContents* web_contents, bool user_gesture, bool last_unlocked_by_target) OVERRIDE; - virtual void RequestMediaAccessPermission( - content::WebContents* web_contents, - const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback) OVERRIDE; virtual bool CanOverscrollContent() const OVERRIDE; virtual void ActivateContents(content::WebContents* contents) OVERRIDE; virtual void DeactivateContents(content::WebContents* contents) OVERRIDE; diff --git a/vendor/brightray b/vendor/brightray index ace8bd2aac89..4b92349b8031 160000 --- a/vendor/brightray +++ b/vendor/brightray @@ -1 +1 @@ -Subproject commit ace8bd2aac89bac5042bf91f74887b7639b3025d +Subproject commit 4b92349b8031534a923f5f82f82f8dde561344d8