| // Copyright (c) 2012 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 "ppapi/proxy/flash_drm_resource.h" | |
| #include "base/bind.h" | |
| #include "ppapi/c/pp_errors.h" | |
| #include "ppapi/proxy/dispatch_reply_message.h" | |
| #include "ppapi/proxy/file_ref_resource.h" | |
| #include "ppapi/proxy/ppapi_messages.h" | |
| #include "ppapi/shared_impl/var.h" | |
| namespace ppapi { | |
| namespace proxy { | |
| FlashDRMResource::FlashDRMResource(Connection connection, | |
| PP_Instance instance) | |
| : PluginResource(connection, instance) { | |
| SendCreate(BROWSER, PpapiHostMsg_FlashDRM_Create()); | |
| SendCreate(RENDERER, PpapiHostMsg_FlashDRM_Create()); | |
| } | |
| FlashDRMResource::~FlashDRMResource() { | |
| } | |
| thunk::PPB_Flash_DRM_API* FlashDRMResource::AsPPB_Flash_DRM_API() { | |
| return this; | |
| } | |
| int32_t FlashDRMResource::GetDeviceID(PP_Var* id, | |
| scoped_refptr<TrackedCallback> callback) { | |
| if (!id) | |
| return PP_ERROR_BADARGUMENT; | |
| *id = PP_MakeUndefined(); | |
| Call<PpapiPluginMsg_FlashDRM_GetDeviceIDReply>( | |
| BROWSER, | |
| PpapiHostMsg_FlashDRM_GetDeviceID(), | |
| base::Bind(&FlashDRMResource::OnPluginMsgGetDeviceIDReply, this, | |
| id, callback)); | |
| return PP_OK_COMPLETIONPENDING; | |
| } | |
| PP_Bool FlashDRMResource::GetHmonitor(int64_t* hmonitor) { | |
| int64_t hmonitor_out; | |
| int32_t result = SyncCall<PpapiPluginMsg_FlashDRM_GetHmonitorReply>( | |
| BROWSER, | |
| PpapiHostMsg_FlashDRM_GetHmonitor(), | |
| &hmonitor_out); | |
| if (result != PP_OK) | |
| return PP_FALSE; | |
| *hmonitor = hmonitor_out; | |
| return PP_TRUE; | |
| } | |
| int32_t FlashDRMResource::GetVoucherFile( | |
| PP_Resource* file_ref, | |
| scoped_refptr<TrackedCallback> callback) { | |
| if (!file_ref) | |
| return PP_ERROR_BADARGUMENT; | |
| *file_ref = 0; | |
| Call<PpapiPluginMsg_FlashDRM_GetVoucherFileReply>( | |
| RENDERER, | |
| PpapiHostMsg_FlashDRM_GetVoucherFile(), | |
| base::Bind(&FlashDRMResource::OnPluginMsgGetVoucherFileReply, this, | |
| file_ref, callback)); | |
| return PP_OK_COMPLETIONPENDING; | |
| } | |
| int32_t FlashDRMResource::MonitorIsExternal( | |
| PP_Bool* is_external, | |
| scoped_refptr<TrackedCallback> callback) { | |
| if (!is_external) | |
| return PP_ERROR_BADARGUMENT; | |
| *is_external = PP_FALSE; | |
| Call<PpapiPluginMsg_FlashDRM_MonitorIsExternalReply>( | |
| BROWSER, | |
| PpapiHostMsg_FlashDRM_MonitorIsExternal(), | |
| base::Bind(&FlashDRMResource::OnPluginMsgMonitorIsExternalReply, this, | |
| is_external, callback)); | |
| return PP_OK_COMPLETIONPENDING; | |
| } | |
| void FlashDRMResource::OnPluginMsgGetDeviceIDReply( | |
| PP_Var* dest, | |
| scoped_refptr<TrackedCallback> callback, | |
| const ResourceMessageReplyParams& params, | |
| const std::string& id) { | |
| if (TrackedCallback::IsPending(callback)) { | |
| if (params.result() == PP_OK) | |
| *dest = StringVar::StringToPPVar(id); | |
| callback->Run(params.result()); | |
| } | |
| } | |
| void FlashDRMResource::OnPluginMsgGetVoucherFileReply( | |
| PP_Resource* dest, | |
| scoped_refptr<TrackedCallback> callback, | |
| const ResourceMessageReplyParams& params, | |
| const FileRefCreateInfo& file_info) { | |
| if (TrackedCallback::IsPending(callback)) { | |
| if (params.result() == PP_OK) { | |
| *dest = FileRefResource::CreateFileRef( | |
| connection(), | |
| pp_instance(), | |
| file_info); | |
| } | |
| callback->Run(params.result()); | |
| } | |
| } | |
| void FlashDRMResource::OnPluginMsgMonitorIsExternalReply( | |
| PP_Bool* dest, | |
| scoped_refptr<TrackedCallback> callback, | |
| const ResourceMessageReplyParams& params, | |
| PP_Bool is_external) { | |
| if (TrackedCallback::IsPending(callback)) { | |
| if (params.result() == PP_OK) | |
| *dest = is_external; | |
| callback->Run(params.result()); | |
| } | |
| } | |
| } // namespace proxy | |
| } // namespace ppapi |