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

Unified Diff: content/browser/renderer_host/media/media_devices_dispatcher_host.cc

Issue 2436113002: Introduce MediaDevicesPermissionChecker. (Closed)
Patch Set: address xhwang's comments Created 4 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: content/browser/renderer_host/media/media_devices_dispatcher_host.cc
diff --git a/content/browser/renderer_host/media/media_devices_dispatcher_host.cc b/content/browser/renderer_host/media/media_devices_dispatcher_host.cc
index 688e2e67cbf72a03bbcd0596a9d464029291d55e..948b50255ca89e991a394680d752da8a2fd004f5 100644
--- a/content/browser/renderer_host/media/media_devices_dispatcher_host.cc
+++ b/content/browser/renderer_host/media/media_devices_dispatcher_host.cc
@@ -11,7 +11,6 @@
#include "base/memory/ptr_util.h"
#include "content/browser/bad_message.h"
#include "content/browser/renderer_host/media/media_stream_manager.h"
-#include "content/browser/renderer_host/media/media_stream_ui_proxy.h"
#include "content/common/media/media_devices.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/media_device_id.h"
@@ -49,27 +48,24 @@ void MediaDevicesDispatcherHost::Create(
int routing_id,
const std::string& device_id_salt,
MediaStreamManager* media_stream_manager,
- bool use_fake_ui,
::mojom::MediaDevicesDispatcherHostRequest request) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- mojo::MakeStrongBinding(base::MakeUnique<MediaDevicesDispatcherHost>(
- render_process_id, routing_id, device_id_salt,
- media_stream_manager, use_fake_ui),
- std::move(request));
+ mojo::MakeStrongBinding(
+ base::MakeUnique<MediaDevicesDispatcherHost>(
+ render_process_id, routing_id, device_id_salt, media_stream_manager),
+ std::move(request));
}
MediaDevicesDispatcherHost::MediaDevicesDispatcherHost(
int render_process_id,
int routing_id,
const std::string& device_id_salt,
- MediaStreamManager* media_stream_manager,
- bool use_fake_ui)
+ MediaStreamManager* media_stream_manager)
: render_process_id_(render_process_id),
routing_id_(routing_id),
device_id_salt_(device_id_salt),
group_id_salt_(ResourceContext::CreateRandomMediaDeviceIDSalt()),
media_stream_manager_(media_stream_manager),
- use_fake_ui_(use_fake_ui),
weak_factory_(this) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
}
@@ -104,73 +100,17 @@ void MediaDevicesDispatcherHost::EnumerateDevices(
devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = request_video_input;
devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = request_audio_output;
- bool request_audio = request_audio_input || request_audio_output;
- CheckAccess(request_audio, request_video_input, security_origin,
- base::Bind(&MediaDevicesDispatcherHost::DoEnumerateDevices,
- weak_factory_.GetWeakPtr(), devices_to_enumerate,
- security_origin, client_callback));
+ permission_checker_.CheckPermissions(
+ devices_to_enumerate, render_process_id_, routing_id_, security_origin,
+ base::Bind(&MediaDevicesDispatcherHost::DoEnumerateDevices,
+ weak_factory_.GetWeakPtr(), devices_to_enumerate,
+ security_origin, client_callback));
}
-void MediaDevicesDispatcherHost::CheckAccess(
- bool check_audio,
- bool check_video_input,
- const url::Origin& security_origin,
- const AccessCheckedCallback& callback) {
- DCHECK(check_audio || check_video_input);
- std::unique_ptr<MediaStreamUIProxy> ui_proxy = GetUIProxy();
- if (check_audio) {
- ui_proxy->CheckAccess(
- security_origin, MEDIA_DEVICE_AUDIO_CAPTURE, render_process_id_,
- routing_id_,
- base::Bind(&MediaDevicesDispatcherHost::AudioAccessChecked,
- weak_factory_.GetWeakPtr(), base::Passed(&ui_proxy),
- check_video_input, security_origin, callback));
- return;
- }
-
- DCHECK(check_video_input);
- ui_proxy->CheckAccess(
- security_origin, MEDIA_DEVICE_VIDEO_CAPTURE, render_process_id_,
- routing_id_,
- base::Bind(&MediaDevicesDispatcherHost::VideoAccessChecked,
- weak_factory_.GetWeakPtr(), base::Passed(&ui_proxy),
- false /* has_audio_permission */, callback));
-}
-
-void MediaDevicesDispatcherHost::AudioAccessChecked(
- std::unique_ptr<MediaStreamUIProxy> ui_proxy,
- bool check_video_permission,
- const url::Origin& security_origin,
- const AccessCheckedCallback& callback,
- bool has_audio_permission) {
+void MediaDevicesDispatcherHost::SetPermissionChecker(
+ const MediaDevicesPermissionChecker& permission_checker) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- if (check_video_permission) {
- ui_proxy->CheckAccess(
- security_origin, MEDIA_DEVICE_VIDEO_CAPTURE, render_process_id_,
- routing_id_,
- base::Bind(&MediaDevicesDispatcherHost::VideoAccessChecked,
- weak_factory_.GetWeakPtr(), base::Passed(&ui_proxy),
- has_audio_permission, callback));
- return;
- }
-
- MediaDevicesManager::BoolDeviceTypes permissions;
- permissions[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = has_audio_permission;
- permissions[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = has_audio_permission;
- callback.Run(permissions);
-}
-
-void MediaDevicesDispatcherHost::VideoAccessChecked(
- std::unique_ptr<MediaStreamUIProxy> ui_proxy,
- bool has_audio_permission,
- const AccessCheckedCallback& callback,
- bool has_video_permission) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- MediaDevicesManager::BoolDeviceTypes permissions;
- permissions[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = has_audio_permission;
- permissions[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = has_audio_permission;
- permissions[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = has_video_permission;
- callback.Run(permissions);
+ permission_checker_ = permission_checker;
}
void MediaDevicesDispatcherHost::DoEnumerateDevices(
@@ -207,20 +147,4 @@ void MediaDevicesDispatcherHost::DevicesEnumerated(
client_callback.Run(result);
}
-std::unique_ptr<MediaStreamUIProxy> MediaDevicesDispatcherHost::GetUIProxy() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- if (use_fake_ui_) {
- return fake_ui_proxy_ ? std::move(fake_ui_proxy_)
- : base::MakeUnique<FakeMediaStreamUIProxy>();
- }
- return MediaStreamUIProxy::Create();
-}
-
-void MediaDevicesDispatcherHost::SetFakeUIProxyForTesting(
- std::unique_ptr<MediaStreamUIProxy> fake_ui_proxy) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- if (use_fake_ui_)
- fake_ui_proxy_ = std::move(fake_ui_proxy);
-}
-
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698