Index: chrome/renderer/pepper/pepper_flash_drm_renderer_host.cc |
diff --git a/chrome/renderer/pepper/pepper_flash_drm_renderer_host.cc b/chrome/renderer/pepper/pepper_flash_drm_renderer_host.cc |
index ca59c7ef2cae40045bdfc922f155e287297617f5..4d9a24c79f5d8345d549df6477f3e1b5fd896cf4 100644 |
--- a/chrome/renderer/pepper/pepper_flash_drm_renderer_host.cc |
+++ b/chrome/renderer/pepper/pepper_flash_drm_renderer_host.cc |
@@ -12,7 +12,6 @@ |
#include "ppapi/host/host_message_context.h" |
#include "ppapi/host/ppapi_host.h" |
#include "ppapi/proxy/ppapi_messages.h" |
-#include "ppapi/proxy/ppb_file_ref_proxy.h" |
namespace chrome { |
@@ -28,7 +27,8 @@ PepperFlashDRMRendererHost::PepperFlashDRMRendererHost( |
PP_Instance instance, |
PP_Resource resource) |
: ResourceHost(host->GetPpapiHost(), instance, resource), |
- renderer_ppapi_host_(host) { |
+ renderer_ppapi_host_(host), |
+ weak_factory_(this) { |
} |
PepperFlashDRMRendererHost::~PepperFlashDRMRendererHost() { |
@@ -56,13 +56,43 @@ int32_t PepperFlashDRMRendererHost::OnGetVoucherFile( |
base::FilePath voucher_file = plugin_dir.Append( |
base::FilePath(kVoucherFilename)); |
- ppapi::PPB_FileRef_CreateInfo create_info; |
- ppapi::proxy::PPB_FileRef_Proxy::SerializeFileRef( |
- plugin_instance->CreateExternalFileReference(voucher_file), |
- &create_info); |
- context->reply_msg = |
- PpapiPluginMsg_FlashDRM_GetVoucherFileReply(create_info); |
- return PP_OK; |
+ int renderer_pending_host_id = |
+ plugin_instance->MakePendingFileRefRendererHost(voucher_file); |
+ if (renderer_pending_host_id == 0) |
+ return PP_ERROR_FAILED; |
+ |
+ std::vector<IPC::Message> create_msgs; |
+ create_msgs.push_back(PpapiHostMsg_FileRef_CreateExternal(voucher_file)); |
+ |
+ renderer_ppapi_host_->CreateBrowserResourceHosts( |
+ pp_instance(), |
+ create_msgs, |
+ base::Bind(&PepperFlashDRMRendererHost::DidCreateFileRefHosts, |
+ weak_factory_.GetWeakPtr(), |
+ context->MakeReplyMessageContext(), |
+ voucher_file, |
+ renderer_pending_host_id)); |
+ return PP_OK_COMPLETIONPENDING; |
+} |
+ |
+void PepperFlashDRMRendererHost::DidCreateFileRefHosts( |
+ const ppapi::host::ReplyMessageContext& reply_context, |
+ const base::FilePath& external_path, |
+ int renderer_pending_host_id, |
+ const std::vector<int>& browser_pending_host_ids) { |
+ DCHECK(browser_pending_host_ids.size() == 1); |
+ |
+ int browser_pending_host_id = 0; |
+ if (browser_pending_host_ids.size() == 1) |
+ browser_pending_host_id = browser_pending_host_ids[0]; |
+ |
+ ppapi::FileRefCreateInfo create_info = |
+ ppapi::MakeExternalFileRefCreateInfo(external_path, |
+ std::string(), |
+ browser_pending_host_id, |
+ renderer_pending_host_id); |
+ host()->SendReply(reply_context, |
+ PpapiPluginMsg_FlashDRM_GetVoucherFileReply(create_info)); |
} |
} // namespace chrome |