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

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

Issue 661053002: Cleanup: Put more media and profile extensions code behind ENABLE_EXTENSIONS ifdefs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/master
Patch Set: nits Created 6 years, 2 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
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 47ba3dcae825ff4d475c4dffb98db300cd715799..eebf9c026d941867b06454b4d5de36ff7f562473 100644
--- a/chrome/browser/media/media_capture_devices_dispatcher.cc
+++ b/chrome/browser/media/media_capture_devices_dispatcher.cc
@@ -42,8 +42,6 @@
#include "content/public/browser/web_contents.h"
#include "content/public/common/media_stream_request.h"
#include "extensions/common/constants.h"
-#include "extensions/common/extension.h"
-#include "extensions/common/permissions/permissions_data.h"
#include "media/audio/audio_manager_base.h"
#include "media/base/media_switches.h"
#include "net/base/net_util.h"
@@ -54,13 +52,14 @@
#include "ash/shell.h"
#endif // defined(OS_CHROMEOS)
-
#if defined(ENABLE_EXTENSIONS)
#include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h"
#include "chrome/browser/extensions/extension_service.h"
#include "extensions/browser/app_window/app_window.h"
#include "extensions/browser/app_window/app_window_registry.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/common/extension.h"
+#include "extensions/common/permissions/permissions_data.h"
#endif
using content::BrowserThread;
@@ -92,6 +91,7 @@ const content::MediaStreamDevice* FindDeviceWithId(
return NULL;
}
+#if defined(ENABLE_EXTENSIONS)
// This is a short-term solution to grant camera and/or microphone access to
// extensions:
// 1. Virtual keyboard extension.
@@ -132,6 +132,7 @@ bool IsOriginForCasting(const GURL& origin) {
// Google Cast Stable
origin.spec() == "chrome-extension://boadgeojelhgndaghljhdicfkmllpafd/";
}
+#endif // defined(ENABLE_EXTENSIONS)
// Helper to get title of the calling application shown in the screen capture
// notification.
@@ -140,13 +141,15 @@ base::string16 GetApplicationTitle(content::WebContents* web_contents,
// Use extension name as title for extensions and host/origin for drive-by
// web.
std::string title;
+#if defined(ENABLE_EXTENSIONS)
if (extension) {
title = extension->name();
- } else {
- GURL url = web_contents->GetURL();
- title = url.SchemeIsSecure() ? net::GetHostAndOptionalPort(url)
- : url.GetOrigin().spec();
+ return base::UTF8ToUTF16(title);
}
+#endif
+ GURL url = web_contents->GetURL();
+ title = url.SchemeIsSecure() ? net::GetHostAndOptionalPort(url)
+ : url.GetOrigin().spec();
return base::UTF8ToUTF16(title);
}
@@ -154,7 +157,7 @@ base::string16 GetApplicationTitle(content::WebContents* web_contents,
// Registers to display notification if |display_notification| is true.
// Returns an instance of MediaStreamUI to be passed to content layer.
scoped_ptr<content::MediaStreamUI> GetDevicesForDesktopCapture(
- content::MediaStreamDevices& devices,
+ content::MediaStreamDevices* devices,
content::DesktopMediaID media_id,
bool capture_audio,
bool display_notification,
@@ -164,11 +167,11 @@ scoped_ptr<content::MediaStreamUI> GetDevicesForDesktopCapture(
scoped_ptr<content::MediaStreamUI> ui;
// Add selected desktop source to the list.
- devices.push_back(content::MediaStreamDevice(
+ devices->push_back(content::MediaStreamDevice(
content::MEDIA_DESKTOP_VIDEO_CAPTURE, media_id.ToString(), "Screen"));
if (capture_audio) {
// Use the special loopback device ID for system audio capture.
- devices.push_back(content::MediaStreamDevice(
+ devices->push_back(content::MediaStreamDevice(
content::MEDIA_LOOPBACK_AUDIO_CAPTURE,
media::AudioManagerBase::kLoopbackInputDeviceId, "System Audio"));
}
@@ -212,10 +215,10 @@ gfx::NativeWindow FindParentWindowForWebContents(
}
#endif
+#if defined(ENABLE_EXTENSIONS)
const extensions::Extension* GetExtensionForOrigin(
Profile* profile,
const GURL& security_origin) {
-#if defined(ENABLE_EXTENSIONS)
if (!security_origin.SchemeIs(extensions::kExtensionScheme))
return NULL;
@@ -225,10 +228,8 @@ const extensions::Extension* GetExtensionForOrigin(
extensions_service->extensions()->GetByID(security_origin.host());
DCHECK(extension);
return extension;
-#else
- return NULL;
-#endif
}
+#endif
} // namespace
@@ -336,12 +337,18 @@ void MediaCaptureDevicesDispatcher::ProcessMediaAccessRequest(
request.audio_type == content::MEDIA_TAB_AUDIO_CAPTURE) {
ProcessTabCaptureAccessRequest(
web_contents, request, callback, extension);
- } else if (extension && (extension->is_platform_app() ||
- IsMediaRequestWhitelistedForExtension(extension))) {
- // For extensions access is approved based on extension permissions.
- ProcessMediaAccessRequestFromPlatformAppOrExtension(
- web_contents, request, callback, extension);
} else {
+#if defined(ENABLE_EXTENSIONS)
+ bool is_whitelisted =
+ extension && (extension->is_platform_app() ||
+ IsMediaRequestWhitelistedForExtension(extension));
+ if (is_whitelisted) {
+ // For extensions access is approved based on extension permissions.
+ ProcessMediaAccessRequestFromPlatformAppOrExtension(
+ web_contents, request, callback, extension);
+ return;
+ }
+#endif
ProcessRegularMediaAccessRequest(web_contents, request, callback);
}
}
@@ -355,6 +362,7 @@ bool MediaCaptureDevicesDispatcher::CheckMediaAccessPermission(
type == content::MEDIA_DEVICE_VIDEO_CAPTURE);
Profile* profile = Profile::FromBrowserContext(browser_context);
+#if defined(ENABLE_EXTENSIONS)
const extensions::Extension* extension =
GetExtensionForOrigin(profile, security_origin);
@@ -365,6 +373,7 @@ bool MediaCaptureDevicesDispatcher::CheckMediaAccessPermission(
? extensions::APIPermission::kAudioCapture
: extensions::APIPermission::kVideoCapture);
}
+#endif
if (CheckAllowAllMediaStreamContentForOrigin(profile, security_origin))
return true;
@@ -521,7 +530,7 @@ void MediaCaptureDevicesDispatcher::ProcessDesktopCaptureAccessRequest(
loopback_audio_supported);
ui = GetDevicesForDesktopCapture(
- devices, media_id, capture_audio, true,
+ &devices, media_id, capture_audio, true,
GetApplicationTitle(web_contents, extension),
base::UTF8ToUTF16(original_extension_name));
@@ -544,14 +553,20 @@ void MediaCaptureDevicesDispatcher::ProcessScreenCaptureAccessRequest(
loopback_audio_supported = true;
#endif
- const bool component_extension =
+ bool component_extension = false;
+#if defined(ENABLE_EXTENSIONS)
+ component_extension =
extension && extension->location() == extensions::Manifest::COMPONENT;
+#endif
- const bool screen_capture_enabled =
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableUserMediaScreenCapturing) ||
+ bool screen_capture_enabled =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableUserMediaScreenCapturing);
+#if defined(ENABLE_EXTENSIONS)
+ screen_capture_enabled |=
IsOriginForCasting(request.security_origin) ||
IsBuiltInExtension(request.security_origin);
+#endif
const bool origin_is_secure =
request.security_origin.SchemeIsSecure() ||
@@ -589,8 +604,12 @@ void MediaCaptureDevicesDispatcher::ProcessScreenCaptureAccessRequest(
// For component extensions, bypass message box.
bool user_approved = false;
if (!component_extension) {
- base::string16 application_name = base::UTF8ToUTF16(
- extension ? extension->name() : request.security_origin.spec());
+ base::string16 application_name =
+ base::UTF8ToUTF16(request.security_origin.spec());
+#if defined(ENABLE_EXTENSIONS)
+ if (extension)
+ application_name = base::UTF8ToUTF16(extension->name());
+#endif
base::string16 confirmation_text = l10n_util::GetStringFUTF16(
request.audio_type == content::MEDIA_NO_SERVICE ?
IDS_MEDIA_SCREEN_CAPTURE_CONFIRMATION_TEXT :
@@ -624,7 +643,7 @@ void MediaCaptureDevicesDispatcher::ProcessScreenCaptureAccessRequest(
// display the notification for stream capture.
bool display_notification = !component_extension;
- ui = GetDevicesForDesktopCapture(devices, screen_id, capture_audio,
+ ui = GetDevicesForDesktopCapture(&devices, screen_id, capture_audio,
display_notification, application_title,
application_title);
DCHECK(!devices.empty());
@@ -690,6 +709,7 @@ void MediaCaptureDevicesDispatcher::ProcessTabCaptureAccessRequest(
#endif // defined(ENABLE_EXTENSIONS)
}
+#if defined(ENABLE_EXTENSIONS)
void MediaCaptureDevicesDispatcher::
ProcessMediaAccessRequestFromPlatformAppOrExtension(
content::WebContents* web_contents,
@@ -773,6 +793,7 @@ void MediaCaptureDevicesDispatcher::
callback.Run(devices, result, ui.Pass());
}
+#endif
void MediaCaptureDevicesDispatcher::ProcessRegularMediaAccessRequest(
content::WebContents* web_contents,
« no previous file with comments | « chrome/browser/media/media_capture_devices_dispatcher.h ('k') | chrome/browser/profiles/off_the_record_profile_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698