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

Side by Side Diff: content/renderer/media/media_permission_dispatcher_impl.cc

Issue 1464183002: media: Simplify MediaPermissionDispatcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase only Created 4 years, 10 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/renderer/media/media_permission_dispatcher_impl.h"
6
7 #include "base/bind.h"
8 #include "base/logging.h"
9 #include "base/thread_task_runner_handle.h"
10 #include "content/public/common/service_registry.h"
11 #include "content/public/renderer/render_frame.h"
12 #include "content/renderer/media/media_permission_dispatcher_proxy.h"
13 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h"
14 #include "url/gurl.h"
15
16 namespace {
17
18 using Type = media::MediaPermission::Type;
19
20 content::PermissionName MediaPermissionTypeToPermissionName(Type type) {
21 switch (type) {
22 case Type::PROTECTED_MEDIA_IDENTIFIER:
23 return content::PermissionName::PROTECTED_MEDIA_IDENTIFIER;
24 case Type::AUDIO_CAPTURE:
25 return content::PermissionName::AUDIO_CAPTURE;
26 case Type::VIDEO_CAPTURE:
27 return content::PermissionName::VIDEO_CAPTURE;
28 }
29 NOTREACHED();
30 return content::PermissionName::PROTECTED_MEDIA_IDENTIFIER;
31 }
32
33 } // namespace
34
35 namespace content {
36
37 MediaPermissionDispatcherImpl::MediaPermissionDispatcherImpl(
38 RenderFrame* render_frame)
39 : RenderFrameObserver(render_frame),
40 task_runner_(base::ThreadTaskRunnerHandle::Get()),
41 weak_ptr_factory_(this) {}
42
43 MediaPermissionDispatcherImpl::~MediaPermissionDispatcherImpl() {
44 DCHECK(thread_checker().CalledOnValidThread());
45 }
46
47 void MediaPermissionDispatcherImpl::HasPermission(
48 Type type,
49 const GURL& security_origin,
50 const PermissionStatusCB& permission_status_cb) {
51 DCHECK(thread_checker().CalledOnValidThread());
52
53 if (!permission_service_.get()) {
54 render_frame()->GetServiceRegistry()->ConnectToRemoteService(
55 mojo::GetProxy(&permission_service_));
56 }
57
58 permission_service_->HasPermission(
59 MediaPermissionTypeToPermissionName(type), security_origin.spec(),
60 base::Bind(&MediaPermissionDispatcherImpl::OnPermissionStatus,
61 weak_ptr_factory_.GetWeakPtr(),
62 RegisterCallback(permission_status_cb)));
63 }
64
65 void MediaPermissionDispatcherImpl::RequestPermission(
66 Type type,
67 const GURL& security_origin,
68 const PermissionStatusCB& permission_status_cb) {
69 DCHECK(thread_checker().CalledOnValidThread());
70
71 if (!permission_service_.get()) {
72 render_frame()->GetServiceRegistry()->ConnectToRemoteService(
73 mojo::GetProxy(&permission_service_));
74 }
75
76 permission_service_->RequestPermission(
77 MediaPermissionTypeToPermissionName(type), security_origin.spec(),
78 blink::WebUserGestureIndicator::isProcessingUserGesture(),
79 base::Bind(&MediaPermissionDispatcherImpl::OnPermissionStatus,
80 weak_ptr_factory_.GetWeakPtr(),
81 RegisterCallback(permission_status_cb)));
82 }
83
84 scoped_ptr<media::MediaPermission> MediaPermissionDispatcherImpl::CreateProxy(
85 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner) {
86 scoped_ptr<media::MediaPermission> media_permission_proxy(
87 new MediaPermissionDispatcherProxy(task_runner_, caller_task_runner,
88 weak_ptr_factory_.GetWeakPtr()));
89 return media_permission_proxy;
90 }
91
92 void MediaPermissionDispatcherImpl::OnPermissionStatus(
93 uint32_t request_id,
94 PermissionStatus status) {
95 DCHECK(thread_checker().CalledOnValidThread());
96 DeliverResult(request_id, status == PermissionStatus::GRANTED);
97 }
98
99 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_permission_dispatcher_impl.h ('k') | content/renderer/media/media_permission_dispatcher_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698