| Index: chrome/browser/media/extension_media_access_handler.cc
|
| diff --git a/chrome/browser/media/extension_media_access_handler.cc b/chrome/browser/media/extension_media_access_handler.cc
|
| index 681fe900f28a8ec754e681bfbdbf23e1aec5717c..8b08117681c001b029fa0558fb41df3b65de67d0 100644
|
| --- a/chrome/browser/media/extension_media_access_handler.cc
|
| +++ b/chrome/browser/media/extension_media_access_handler.cc
|
| @@ -6,8 +6,6 @@
|
|
|
| #include <utility>
|
|
|
| -#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
|
| -#include "chrome/browser/media/webrtc/media_stream_capture_indicator.h"
|
| #include "chrome/browser/media/webrtc/media_stream_device_permissions.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/common/pref_names.h"
|
| @@ -47,6 +45,7 @@ ExtensionMediaAccessHandler::~ExtensionMediaAccessHandler() {
|
| }
|
|
|
| bool ExtensionMediaAccessHandler::SupportsStreamType(
|
| + content::WebContents* web_contents,
|
| const content::MediaStreamType type,
|
| const extensions::Extension* extension) {
|
| return extension && (extension->is_platform_app() ||
|
| @@ -71,13 +70,8 @@ void ExtensionMediaAccessHandler::HandleRequest(
|
| const content::MediaStreamRequest& request,
|
| const content::MediaResponseCallback& callback,
|
| const extensions::Extension* extension) {
|
| - // TODO(vrk): This code is largely duplicated in
|
| - // MediaStreamDevicesController::Accept(). Move this code into a shared method
|
| - // between the two classes.
|
| -
|
| Profile* profile =
|
| Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
| -
|
| bool audio_allowed =
|
| request.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE &&
|
| extension->permissions_data()->HasAPIPermission(
|
| @@ -91,59 +85,6 @@ void ExtensionMediaAccessHandler::HandleRequest(
|
| GetDevicePolicy(profile, extension->url(), prefs::kVideoCaptureAllowed,
|
| prefs::kVideoCaptureAllowedUrls) != ALWAYS_DENY;
|
|
|
| - bool get_default_audio_device = audio_allowed;
|
| - bool get_default_video_device = video_allowed;
|
| -
|
| - content::MediaStreamDevices devices;
|
| -
|
| - // Set an initial error result. If neither audio or video is allowed, we'll
|
| - // never try to get any device below but will just create |ui| and return an
|
| - // empty list with "invalid state" result. If at least one is allowed, we'll
|
| - // try to get device(s), and if failure, we want to return "no hardware"
|
| - // result.
|
| - // TODO(grunell): The invalid state result should be changed to a new denied
|
| - // result + a dcheck to ensure at least one of audio or video types is
|
| - // capture.
|
| - content::MediaStreamRequestResult result =
|
| - (audio_allowed || video_allowed) ? content::MEDIA_DEVICE_NO_HARDWARE
|
| - : content::MEDIA_DEVICE_INVALID_STATE;
|
| -
|
| - // Get the exact audio or video device if an id is specified.
|
| - // We only set any error result here and before running the callback change
|
| - // it to OK if we have any device.
|
| - if (audio_allowed && !request.requested_audio_device_id.empty()) {
|
| - const content::MediaStreamDevice* audio_device =
|
| - MediaCaptureDevicesDispatcher::GetInstance()->GetRequestedAudioDevice(
|
| - request.requested_audio_device_id);
|
| - if (audio_device) {
|
| - devices.push_back(*audio_device);
|
| - get_default_audio_device = false;
|
| - }
|
| - }
|
| - if (video_allowed && !request.requested_video_device_id.empty()) {
|
| - const content::MediaStreamDevice* video_device =
|
| - MediaCaptureDevicesDispatcher::GetInstance()->GetRequestedVideoDevice(
|
| - request.requested_video_device_id);
|
| - if (video_device) {
|
| - devices.push_back(*video_device);
|
| - get_default_video_device = false;
|
| - }
|
| - }
|
| -
|
| - // If either or both audio and video devices were requested but not
|
| - // specified by id, get the default devices.
|
| - if (get_default_audio_device || get_default_video_device) {
|
| - MediaCaptureDevicesDispatcher::GetInstance()->GetDefaultDevicesForProfile(
|
| - profile, get_default_audio_device, get_default_video_device, &devices);
|
| - }
|
| -
|
| - std::unique_ptr<content::MediaStreamUI> ui;
|
| - if (!devices.empty()) {
|
| - result = content::MEDIA_DEVICE_OK;
|
| - ui = MediaCaptureDevicesDispatcher::GetInstance()
|
| - ->GetMediaStreamCaptureIndicator()
|
| - ->RegisterMediaStream(web_contents, devices);
|
| - }
|
| -
|
| - callback.Run(devices, result, std::move(ui));
|
| + CheckDevicesAndRunCallback(web_contents, request, callback, audio_allowed,
|
| + video_allowed);
|
| }
|
|
|