OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2016 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/browser/media/media_permission_impl.h" | |
6 | |
7 #include "content/browser/permissions/permission_service_context.h" | |
8 #include "content/common/media/media_permission_dispatcher.h" | |
9 #include "content/common/permission_service.mojom.h" | |
10 #include "url/gurl.h" | |
11 | |
12 namespace content { | |
13 | |
14 namespace { | |
15 | |
16 using MojoType = media::interfaces::MediaPermission::Type; | |
17 using NativeType = media::MediaPermission::Type; | |
18 | |
19 NativeType ConvertMediaPermissionType(MojoType type) { | |
xhwang
2016/03/30 07:11:34
rockot: What's the new recommendation on consolida
| |
20 switch (type) { | |
21 case MojoType::PROTECTED_MEDIA_IDENTIFIER: | |
22 return NativeType::PROTECTED_MEDIA_IDENTIFIER; | |
23 case MojoType::AUDIO_CAPTURE: | |
24 return NativeType::AUDIO_CAPTURE; | |
25 case MojoType::VIDEO_CAPTURE: | |
26 return NativeType::VIDEO_CAPTURE; | |
27 } | |
28 NOTREACHED(); | |
29 return NativeType::PROTECTED_MEDIA_IDENTIFIER; | |
30 } | |
31 | |
32 } // namespace | |
33 | |
34 // static | |
35 void MediaPermissionImpl::Create( | |
36 PermissionServiceContext* permission_service_context, | |
37 media::interfaces::MediaPermissionRequest request) { | |
38 // The created object is strongly bound to (and owned by) the pipe. | |
39 new MediaPermissionImpl(permission_service_context, std::move(request)); | |
40 } | |
41 | |
42 MediaPermissionImpl::MediaPermissionImpl( | |
43 PermissionServiceContext* permission_service_context, | |
44 media::interfaces::MediaPermissionRequest request) | |
45 : permission_service_context_(permission_service_context), | |
46 binding_(this, std::move(request)), | |
47 weak_factory_(this) { | |
48 DVLOG(1) << __FUNCTION__; | |
49 } | |
50 | |
51 MediaPermissionImpl::~MediaPermissionImpl() { | |
52 DVLOG(1) << __FUNCTION__; | |
53 } | |
54 | |
55 void MediaPermissionImpl::HasPermission(MediaPermission::Type type, | |
56 const mojo::String& security_origin, | |
57 const HasPermissionCallback& callback) { | |
58 DVLOG(3) << __FUNCTION__; | |
59 GetMediaPermission()->HasPermission( | |
60 ConvertMediaPermissionType(type), GURL(security_origin.get()), | |
61 base::Bind(&MediaPermissionImpl::OnPermissionStatus, | |
62 weak_factory_.GetWeakPtr(), callback)); | |
63 } | |
64 | |
65 void MediaPermissionImpl::RequestPermission( | |
66 MediaPermission::Type type, | |
67 const mojo::String& security_origin, | |
68 const RequestPermissionCallback& callback) { | |
69 DVLOG(3) << __FUNCTION__; | |
70 GetMediaPermission()->RequestPermission( | |
71 ConvertMediaPermissionType(type), GURL(security_origin.get()), | |
72 base::Bind(&MediaPermissionImpl::OnPermissionStatus, | |
73 weak_factory_.GetWeakPtr(), callback)); | |
74 } | |
75 | |
76 void MediaPermissionImpl::GetMediaPermissionService( | |
77 mojom::PermissionServiceRequest request) { | |
78 permission_service_context_->CreateService(std::move(request)); | |
79 } | |
80 | |
81 media::MediaPermission* MediaPermissionImpl::GetMediaPermission() { | |
82 if (!media_permission_) { | |
83 media_permission_.reset(new MediaPermissionDispatcher( | |
84 base::Bind(&MediaPermissionImpl::GetMediaPermissionService, | |
85 weak_factory_.GetWeakPtr()))); | |
86 } | |
87 return media_permission_.get(); | |
88 } | |
89 | |
90 void MediaPermissionImpl::OnPermissionStatus( | |
91 const mojo::Callback<void(bool)>& callback, | |
92 bool success) { | |
93 DVLOG(3) << __FUNCTION__ << ": " << success; | |
94 callback.Run(success); | |
95 } | |
96 | |
97 } // namespace content | |
OLD | NEW |