1 // Copyright (c) 2012 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.
5 #include "ppapi/proxy/flash_drm_resource.h"
8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/proxy/dispatch_reply_message.h"
10 #include "ppapi/proxy/file_ref_resource.h"
11 #include "ppapi/proxy/ppapi_messages.h"
12 #include "ppapi/shared_impl/var.h"
17 FlashDRMResource::FlashDRMResource(Connection connection,
19 : PluginResource(connection, instance) {
20 SendCreate(BROWSER, PpapiHostMsg_FlashDRM_Create());
21 SendCreate(RENDERER, PpapiHostMsg_FlashDRM_Create());
24 FlashDRMResource::~FlashDRMResource() {
27 thunk::PPB_Flash_DRM_API* FlashDRMResource::AsPPB_Flash_DRM_API() {
31 int32_t FlashDRMResource::GetDeviceID(PP_Var* id,
32 scoped_refptr<TrackedCallback> callback) {
34 return PP_ERROR_BADARGUMENT;
36 *id = PP_MakeUndefined();
38 Call<PpapiPluginMsg_FlashDRM_GetDeviceIDReply>(
40 PpapiHostMsg_FlashDRM_GetDeviceID(),
41 base::Bind(&FlashDRMResource::OnPluginMsgGetDeviceIDReply, this,
43 return PP_OK_COMPLETIONPENDING;
46 PP_Bool FlashDRMResource::GetHmonitor(int64_t* hmonitor) {
48 int32_t result = SyncCall<PpapiPluginMsg_FlashDRM_GetHmonitorReply>(
50 PpapiHostMsg_FlashDRM_GetHmonitor(),
54 *hmonitor = hmonitor_out;
58 int32_t FlashDRMResource::GetVoucherFile(
59 PP_Resource* file_ref,
60 scoped_refptr<TrackedCallback> callback) {
62 return PP_ERROR_BADARGUMENT;
66 Call<PpapiPluginMsg_FlashDRM_GetVoucherFileReply>(
68 PpapiHostMsg_FlashDRM_GetVoucherFile(),
69 base::Bind(&FlashDRMResource::OnPluginMsgGetVoucherFileReply, this,
71 return PP_OK_COMPLETIONPENDING;
74 void FlashDRMResource::OnPluginMsgGetDeviceIDReply(
76 scoped_refptr<TrackedCallback> callback,
77 const ResourceMessageReplyParams& params,
78 const std::string& id) {
79 if (TrackedCallback::IsPending(callback)) {
80 if (params.result() == PP_OK)
81 *dest = StringVar::StringToPPVar(id);
82 callback->Run(params.result());
86 void FlashDRMResource::OnPluginMsgGetVoucherFileReply(
88 scoped_refptr<TrackedCallback> callback,
89 const ResourceMessageReplyParams& params,
90 const FileRefCreateInfo& file_info) {
91 if (TrackedCallback::IsPending(callback)) {
92 if (params.result() == PP_OK) {
93 *dest = FileRefResource::CreateFileRef(
98 callback->Run(params.result());