Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1613)

Unified Diff: chrome/browser/media/media_capture_devices_dispatcher.cc

Issue 2307083002: Cleanup: move WebRTC related files from chrome/browser/media to chrome/browser/media/webrtc/ (Closed)
Patch Set: Removed file wrongly resuscitated during rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/media/media_capture_devices_dispatcher.h ('k') | chrome/browser/media/media_permission.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
deleted file mode 100644
index adea25bdd4b46b61af1a074afcb9b3539b530cd7..0000000000000000000000000000000000000000
--- a/chrome/browser/media/media_capture_devices_dispatcher.cc
+++ /dev/null
@@ -1,443 +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.
-
-#include "chrome/browser/media/media_capture_devices_dispatcher.h"
-
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "base/metrics/field_trial.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "build/build_config.h"
-#include "chrome/browser/media/desktop_streams_registry.h"
-#include "chrome/browser/media/media_access_handler.h"
-#include "chrome/browser/media/media_stream_capture_indicator.h"
-#include "chrome/browser/media/permission_bubble_media_access_handler.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/pref_names.h"
-#include "components/pref_registry/pref_registry_syncable.h"
-#include "components/prefs/pref_service.h"
-#include "components/prefs/scoped_user_pref_update.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/media_capture_devices.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/common/media_stream_request.h"
-#include "extensions/common/constants.h"
-#include "media/base/media_switches.h"
-
-#if defined(OS_CHROMEOS)
-#include "ash/shell.h"
-#endif // defined(OS_CHROMEOS)
-
-#if defined(ENABLE_EXTENSIONS)
-#include "chrome/browser/media/desktop_capture_access_handler.h"
-#include "chrome/browser/media/extension_media_access_handler.h"
-#include "chrome/browser/media/tab_capture_access_handler.h"
-#include "extensions/browser/extension_registry.h"
-#include "extensions/common/extension.h"
-#include "extensions/common/permissions/permissions_data.h"
-#endif
-
-using content::BrowserThread;
-using content::MediaCaptureDevices;
-using content::MediaStreamDevices;
-
-namespace {
-
-// Finds a device in |devices| that has |device_id|, or NULL if not found.
-const content::MediaStreamDevice* FindDeviceWithId(
- const content::MediaStreamDevices& devices,
- const std::string& device_id) {
- content::MediaStreamDevices::const_iterator iter = devices.begin();
- for (; iter != devices.end(); ++iter) {
- if (iter->id == device_id) {
- return &(*iter);
- }
- }
- return NULL;
-}
-
-#if defined(ENABLE_EXTENSIONS)
-inline CaptureAccessHandlerBase* ToCaptureAccessHandlerBase(
- MediaAccessHandler* handler) {
- return static_cast<CaptureAccessHandlerBase*>(handler);
-}
-#endif
-} // namespace
-
-MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() {
- return base::Singleton<MediaCaptureDevicesDispatcher>::get();
-}
-
-MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher()
- : is_device_enumeration_disabled_(false),
- media_stream_capture_indicator_(new MediaStreamCaptureIndicator()) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
-#if defined(ENABLE_EXTENSIONS)
- media_access_handlers_.push_back(new ExtensionMediaAccessHandler());
- media_access_handlers_.push_back(new DesktopCaptureAccessHandler());
- media_access_handlers_.push_back(new TabCaptureAccessHandler());
-#endif
- media_access_handlers_.push_back(new PermissionBubbleMediaAccessHandler());
-}
-
-MediaCaptureDevicesDispatcher::~MediaCaptureDevicesDispatcher() {}
-
-void MediaCaptureDevicesDispatcher::RegisterProfilePrefs(
- user_prefs::PrefRegistrySyncable* registry) {
- registry->RegisterStringPref(prefs::kDefaultAudioCaptureDevice,
- std::string());
- registry->RegisterStringPref(prefs::kDefaultVideoCaptureDevice,
- std::string());
-}
-
-bool MediaCaptureDevicesDispatcher::IsOriginForCasting(const GURL& origin) {
- // Whitelisted tab casting extensions.
- return
- // Dev
- origin.spec() == "chrome-extension://enhhojjnijigcajfphajepfemndkmdlo/" ||
- // Canary
- origin.spec() == "chrome-extension://hfaagokkkhdbgiakmmlclaapfelnkoah/" ||
- // Beta (internal)
- origin.spec() == "chrome-extension://fmfcbgogabcbclcofgocippekhfcmgfj/" ||
- // Google Cast Beta
- origin.spec() == "chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm/" ||
- // Google Cast Stable
- origin.spec() == "chrome-extension://boadgeojelhgndaghljhdicfkmllpafd/" ||
- // http://crbug.com/457908
- origin.spec() == "chrome-extension://ekpaaapppgpmolpcldedioblbkmijaca/" ||
- // http://crbug.com/574889
- origin.spec() == "chrome-extension://pkedcjkdefgpdelpbcmbmeomcjbeemfm/";
-}
-
-void MediaCaptureDevicesDispatcher::AddObserver(Observer* observer) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- if (!observers_.HasObserver(observer))
- observers_.AddObserver(observer);
-}
-
-void MediaCaptureDevicesDispatcher::RemoveObserver(Observer* observer) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- observers_.RemoveObserver(observer);
-}
-
-const MediaStreamDevices&
-MediaCaptureDevicesDispatcher::GetAudioCaptureDevices() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- if (is_device_enumeration_disabled_ || !test_audio_devices_.empty())
- return test_audio_devices_;
-
- return MediaCaptureDevices::GetInstance()->GetAudioCaptureDevices();
-}
-
-const MediaStreamDevices&
-MediaCaptureDevicesDispatcher::GetVideoCaptureDevices() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- if (is_device_enumeration_disabled_ || !test_video_devices_.empty())
- return test_video_devices_;
-
- return MediaCaptureDevices::GetInstance()->GetVideoCaptureDevices();
-}
-
-void MediaCaptureDevicesDispatcher::ProcessMediaAccessRequest(
- content::WebContents* web_contents,
- const content::MediaStreamRequest& request,
- const content::MediaResponseCallback& callback,
- const extensions::Extension* extension) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
- for (MediaAccessHandler* handler : media_access_handlers_) {
- if (handler->SupportsStreamType(request.video_type, extension) ||
- handler->SupportsStreamType(request.audio_type, extension)) {
- handler->HandleRequest(web_contents, request, callback, extension);
- return;
- }
- }
- callback.Run(content::MediaStreamDevices(),
- content::MEDIA_DEVICE_NOT_SUPPORTED, nullptr);
-}
-
-bool MediaCaptureDevicesDispatcher::CheckMediaAccessPermission(
- content::WebContents* web_contents,
- const GURL& security_origin,
- content::MediaStreamType type) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- return CheckMediaAccessPermission(web_contents, security_origin, type,
- nullptr);
-}
-
-bool MediaCaptureDevicesDispatcher::CheckMediaAccessPermission(
- content::WebContents* web_contents,
- const GURL& security_origin,
- content::MediaStreamType type,
- const extensions::Extension* extension) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- for (MediaAccessHandler* handler : media_access_handlers_) {
- if (handler->SupportsStreamType(type, extension)) {
- return handler->CheckMediaAccessPermission(web_contents, security_origin,
- type, extension);
- }
- }
- return false;
-}
-
-void MediaCaptureDevicesDispatcher::GetDefaultDevicesForProfile(
- Profile* profile,
- bool audio,
- bool video,
- content::MediaStreamDevices* devices) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK(audio || video);
-
- PrefService* prefs = profile->GetPrefs();
- std::string default_device;
- if (audio) {
- default_device = prefs->GetString(prefs::kDefaultAudioCaptureDevice);
- const content::MediaStreamDevice* device =
- GetRequestedAudioDevice(default_device);
- if (!device)
- device = GetFirstAvailableAudioDevice();
- if (device)
- devices->push_back(*device);
- }
-
- if (video) {
- default_device = prefs->GetString(prefs::kDefaultVideoCaptureDevice);
- const content::MediaStreamDevice* device =
- GetRequestedVideoDevice(default_device);
- if (!device)
- device = GetFirstAvailableVideoDevice();
- if (device)
- devices->push_back(*device);
- }
-}
-
-const content::MediaStreamDevice*
-MediaCaptureDevicesDispatcher::GetRequestedAudioDevice(
- const std::string& requested_audio_device_id) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- const content::MediaStreamDevices& audio_devices = GetAudioCaptureDevices();
- const content::MediaStreamDevice* const device =
- FindDeviceWithId(audio_devices, requested_audio_device_id);
- return device;
-}
-
-const content::MediaStreamDevice*
-MediaCaptureDevicesDispatcher::GetFirstAvailableAudioDevice() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- const content::MediaStreamDevices& audio_devices = GetAudioCaptureDevices();
- if (audio_devices.empty())
- return NULL;
- return &(*audio_devices.begin());
-}
-
-const content::MediaStreamDevice*
-MediaCaptureDevicesDispatcher::GetRequestedVideoDevice(
- const std::string& requested_video_device_id) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- const content::MediaStreamDevices& video_devices = GetVideoCaptureDevices();
- const content::MediaStreamDevice* const device =
- FindDeviceWithId(video_devices, requested_video_device_id);
- return device;
-}
-
-const content::MediaStreamDevice*
-MediaCaptureDevicesDispatcher::GetFirstAvailableVideoDevice() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- const content::MediaStreamDevices& video_devices = GetVideoCaptureDevices();
- if (video_devices.empty())
- return NULL;
- return &(*video_devices.begin());
-}
-
-void MediaCaptureDevicesDispatcher::DisableDeviceEnumerationForTesting() {
- is_device_enumeration_disabled_ = true;
-}
-
-scoped_refptr<MediaStreamCaptureIndicator>
-MediaCaptureDevicesDispatcher::GetMediaStreamCaptureIndicator() {
- return media_stream_capture_indicator_;
-}
-
-DesktopStreamsRegistry*
-MediaCaptureDevicesDispatcher::GetDesktopStreamsRegistry() {
- if (!desktop_streams_registry_)
- desktop_streams_registry_.reset(new DesktopStreamsRegistry());
- return desktop_streams_registry_.get();
-}
-
-void MediaCaptureDevicesDispatcher::OnAudioCaptureDevicesChanged() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(
- &MediaCaptureDevicesDispatcher::NotifyAudioDevicesChangedOnUIThread,
- base::Unretained(this)));
-}
-
-void MediaCaptureDevicesDispatcher::OnVideoCaptureDevicesChanged() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(
- &MediaCaptureDevicesDispatcher::NotifyVideoDevicesChangedOnUIThread,
- base::Unretained(this)));
-}
-
-void MediaCaptureDevicesDispatcher::OnMediaRequestStateChanged(
- int render_process_id,
- int render_frame_id,
- int page_request_id,
- const GURL& security_origin,
- content::MediaStreamType stream_type,
- content::MediaRequestState state) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(
- &MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread,
- base::Unretained(this), render_process_id, render_frame_id,
- page_request_id, security_origin, stream_type, state));
-}
-
-void MediaCaptureDevicesDispatcher::OnCreatingAudioStream(
- int render_process_id,
- int render_frame_id) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(
- &MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread,
- base::Unretained(this), render_process_id, render_frame_id));
-}
-
-void MediaCaptureDevicesDispatcher::NotifyAudioDevicesChangedOnUIThread() {
- MediaStreamDevices devices = GetAudioCaptureDevices();
- FOR_EACH_OBSERVER(Observer, observers_,
- OnUpdateAudioDevices(devices));
-}
-
-void MediaCaptureDevicesDispatcher::NotifyVideoDevicesChangedOnUIThread() {
- MediaStreamDevices devices = GetVideoCaptureDevices();
- FOR_EACH_OBSERVER(Observer, observers_,
- OnUpdateVideoDevices(devices));
-}
-
-void MediaCaptureDevicesDispatcher::UpdateMediaRequestStateOnUIThread(
- int render_process_id,
- int render_frame_id,
- int page_request_id,
- const GURL& security_origin,
- content::MediaStreamType stream_type,
- content::MediaRequestState state) {
- for (MediaAccessHandler* handler : media_access_handlers_) {
- if (handler->SupportsStreamType(stream_type, nullptr)) {
- handler->UpdateMediaRequestState(render_process_id, render_frame_id,
- page_request_id, stream_type, state);
- break;
- }
- }
-
-#if defined(OS_CHROMEOS)
- if (IsOriginForCasting(security_origin) && IsVideoMediaType(stream_type)) {
- // Notify ash that casting state has changed.
- if (state == content::MEDIA_REQUEST_STATE_DONE) {
- ash::Shell::GetInstance()->OnCastingSessionStartedOrStopped(true);
- } else if (state == content::MEDIA_REQUEST_STATE_CLOSING) {
- ash::Shell::GetInstance()->OnCastingSessionStartedOrStopped(false);
- }
- }
-#endif
-
- FOR_EACH_OBSERVER(Observer, observers_,
- OnRequestUpdate(render_process_id,
- render_frame_id,
- stream_type,
- state));
-}
-
-void MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread(
- int render_process_id,
- int render_frame_id) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- FOR_EACH_OBSERVER(Observer, observers_,
- OnCreatingAudioStream(render_process_id, render_frame_id));
-}
-
-bool MediaCaptureDevicesDispatcher::IsInsecureCapturingInProgress(
- int render_process_id,
- int render_frame_id) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
-#if defined(ENABLE_EXTENSIONS)
- for (MediaAccessHandler* handler : media_access_handlers_) {
- if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE,
- nullptr) ||
- handler->SupportsStreamType(content::MEDIA_TAB_VIDEO_CAPTURE,
- nullptr)) {
- if (ToCaptureAccessHandlerBase(handler)->IsInsecureCapturingInProgress(
- render_process_id, render_frame_id))
- return true;
- }
- }
-#endif
- return false;
-}
-
-void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices(
- const MediaStreamDevices& devices) {
- test_audio_devices_ = devices;
-}
-
-void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices(
- const MediaStreamDevices& devices) {
- test_video_devices_ = devices;
-}
-
-void MediaCaptureDevicesDispatcher::OnSetCapturingLinkSecured(
- int render_process_id,
- int render_frame_id,
- int page_request_id,
- content::MediaStreamType stream_type,
- bool is_secure) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE &&
- stream_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE)
- return;
-
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured,
- base::Unretained(this), render_process_id, render_frame_id,
- page_request_id, stream_type, is_secure));
-}
-
-void MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured(
- int render_process_id,
- int render_frame_id,
- int page_request_id,
- content::MediaStreamType stream_type,
- bool is_secure) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE &&
- stream_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE)
- return;
-
-#if defined(ENABLE_EXTENSIONS)
- for (MediaAccessHandler* handler : media_access_handlers_) {
- if (handler->SupportsStreamType(stream_type, nullptr)) {
- ToCaptureAccessHandlerBase(handler)->UpdateCapturingLinkSecured(
- render_process_id, render_frame_id, page_request_id, is_secure);
- break;
- }
- }
-#endif
-}
« no previous file with comments | « chrome/browser/media/media_capture_devices_dispatcher.h ('k') | chrome/browser/media/media_permission.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698