Chromium Code Reviews| 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 |