190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// From private/ppb_flash_drm.idl modified Tue Dec  3 15:22:00 2013.
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/c/pp_completion_callback.h"
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/c/pp_errors.h"
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/c/private/ppb_flash_drm.h"
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h"
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/thunk/enter.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h"
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/thunk/ppb_flash_drm_api.h"
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace ppapi {
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace thunk {
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace {
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)PP_Resource Create(PP_Instance instance) {
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VLOG(4) << "PPB_Flash_DRM::Create()";
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  EnterResourceCreation enter(instance);
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  if (enter.failed())
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    return 0;
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return enter.functions()->CreateFlashDRM(instance);
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)int32_t GetDeviceID(PP_Resource drm,
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                    struct PP_Var* id,
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                    struct PP_CompletionCallback callback) {
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  VLOG(4) << "PPB_Flash_DRM::GetDeviceID()";
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true);
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  if (enter.failed())
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    return enter.retval();
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return enter.SetResult(enter.object()->GetDeviceID(id, enter.callback()));
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)PP_Bool GetHmonitor(PP_Resource drm, int64_t* hmonitor) {
397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  VLOG(4) << "PPB_Flash_DRM::GetHmonitor()";
407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EnterResource<PPB_Flash_DRM_API> enter(drm, true);
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (enter.failed())
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    return PP_FALSE;
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  return enter.object()->GetHmonitor(hmonitor);
447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)int32_t GetVoucherFile(PP_Resource drm,
477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                       PP_Resource* file_ref,
487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                       struct PP_CompletionCallback callback) {
497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  VLOG(4) << "PPB_Flash_DRM::GetVoucherFile()";
507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true);
517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (enter.failed())
527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    return enter.retval();
537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  return enter.SetResult(enter.object()->GetVoucherFile(file_ref,
547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                                        enter.callback()));
557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)int32_t MonitorIsExternal(PP_Resource drm,
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                          PP_Bool* is_external,
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                          struct PP_CompletionCallback callback) {
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  VLOG(4) << "PPB_Flash_DRM::MonitorIsExternal()";
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true);
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (enter.failed())
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return enter.retval();
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return enter.SetResult(enter.object()->MonitorIsExternal(is_external,
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                                           enter.callback()));
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)const PPB_Flash_DRM_1_0 g_ppb_flash_drm_thunk_1_0 = {
6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  &Create,
707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  &GetDeviceID,
717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  &GetHmonitor,
727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  &GetVoucherFile
7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)};
7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)const PPB_Flash_DRM_1_1 g_ppb_flash_drm_thunk_1_1 = {
76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  &Create,
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  &GetDeviceID,
78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  &GetHmonitor,
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  &GetVoucherFile,
80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  &MonitorIsExternal
81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace
8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_Flash_DRM_1_0* GetPPB_Flash_DRM_1_0_Thunk() {
8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return &g_ppb_flash_drm_thunk_1_0;
8790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
8890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_Flash_DRM_1_1* GetPPB_Flash_DRM_1_1_Thunk() {
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return &g_ppb_flash_drm_thunk_1_1;
91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
9390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace thunk
9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace ppapi
95