Index: media/mojo/services/mojo_media_permission.cc |
diff --git a/media/mojo/services/mojo_media_permission.cc b/media/mojo/services/mojo_media_permission.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cc82722eb982dbf81c67fc5f1b65f5c99e4e03f6 |
--- /dev/null |
+++ b/media/mojo/services/mojo_media_permission.cc |
@@ -0,0 +1,80 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "media/mojo/services/mojo_media_permission.h" |
+ |
+#include "base/bind.h" |
+#include "base/bind_helpers.h" |
+#include "mojo/shell/public/cpp/connect.h" |
+#include "mojo/shell/public/interfaces/interface_provider.mojom.h" |
+ |
+namespace media { |
+ |
+namespace { |
+ |
+using MojoType = interfaces::MediaPermission::Type; |
+using NativeType = MediaPermission::Type; |
+ |
+MojoType ConvertMediaPermissionType(NativeType type) { |
+ switch (type) { |
+ case NativeType::PROTECTED_MEDIA_IDENTIFIER: |
+ return MojoType::PROTECTED_MEDIA_IDENTIFIER; |
+ case NativeType::AUDIO_CAPTURE: |
+ return MojoType::AUDIO_CAPTURE; |
+ case NativeType::VIDEO_CAPTURE: |
+ return MojoType::VIDEO_CAPTURE; |
+ } |
+ NOTREACHED(); |
+ return MojoType::PROTECTED_MEDIA_IDENTIFIER; |
+} |
+ |
+} // namespace |
+ |
+MojoMediaPermission::MojoMediaPermission( |
+ mojo::shell::mojom::InterfaceProvider* interface_provider) |
+ : interface_provider_(interface_provider) { |
+ DVLOG(1) << __FUNCTION__; |
+} |
+ |
+MojoMediaPermission::~MojoMediaPermission() { |
+ DVLOG(1) << __FUNCTION__; |
+} |
+ |
+void MojoMediaPermission::HasPermission( |
+ Type type, |
+ const GURL& security_origin, |
+ const PermissionStatusCB& permission_status_cb) { |
+ DVLOG(3) << __FUNCTION__; |
+ GetMediaPermission()->HasPermission( |
+ ConvertMediaPermissionType(type), security_origin.spec(), |
+ base::Bind(&MojoMediaPermission::OnPermissionStatus, |
+ base::Unretained(this), permission_status_cb)); |
+} |
+ |
+void MojoMediaPermission::RequestPermission( |
+ Type type, |
+ const GURL& security_origin, |
+ const PermissionStatusCB& permission_status_cb) { |
+ DVLOG(3) << __FUNCTION__; |
+ |
+ GetMediaPermission()->RequestPermission( |
+ ConvertMediaPermissionType(type), security_origin.spec(), |
+ base::Bind(&MojoMediaPermission::OnPermissionStatus, |
+ base::Unretained(this), permission_status_cb)); |
+} |
+ |
+interfaces::MediaPermission* MojoMediaPermission::GetMediaPermission() { |
+ if (!media_permission_ptr_) |
+ mojo::GetInterface(interface_provider_, &media_permission_ptr_); |
+ |
+ return media_permission_ptr_.get(); |
+} |
+ |
+void MojoMediaPermission::OnPermissionStatus( |
+ const base::Callback<void(bool)>& callback, |
+ bool success) { |
+ callback.Run(success); |
+} |
+ |
+} // namespace media |