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.
4
5// From private/ppb_flash_drm.idl modified Tue Dec  3 15:22:00 2013.
6
7#include "ppapi/c/pp_completion_callback.h"
8#include "ppapi/c/pp_errors.h"
9#include "ppapi/c/private/ppb_flash_drm.h"
10#include "ppapi/shared_impl/tracked_callback.h"
11#include "ppapi/thunk/enter.h"
12#include "ppapi/thunk/ppapi_thunk_export.h"
13#include "ppapi/thunk/ppb_flash_drm_api.h"
14
15namespace ppapi {
16namespace thunk {
17
18namespace {
19
20PP_Resource Create(PP_Instance instance) {
21  VLOG(4) << "PPB_Flash_DRM::Create()";
22  EnterResourceCreation enter(instance);
23  if (enter.failed())
24    return 0;
25  return enter.functions()->CreateFlashDRM(instance);
26}
27
28int32_t GetDeviceID(PP_Resource drm,
29                    struct PP_Var* id,
30                    struct PP_CompletionCallback callback) {
31  VLOG(4) << "PPB_Flash_DRM::GetDeviceID()";
32  EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true);
33  if (enter.failed())
34    return enter.retval();
35  return enter.SetResult(enter.object()->GetDeviceID(id, enter.callback()));
36}
37
38PP_Bool GetHmonitor(PP_Resource drm, int64_t* hmonitor) {
39  VLOG(4) << "PPB_Flash_DRM::GetHmonitor()";
40  EnterResource<PPB_Flash_DRM_API> enter(drm, true);
41  if (enter.failed())
42    return PP_FALSE;
43  return enter.object()->GetHmonitor(hmonitor);
44}
45
46int32_t GetVoucherFile(PP_Resource drm,
47                       PP_Resource* file_ref,
48                       struct PP_CompletionCallback callback) {
49  VLOG(4) << "PPB_Flash_DRM::GetVoucherFile()";
50  EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true);
51  if (enter.failed())
52    return enter.retval();
53  return enter.SetResult(enter.object()->GetVoucherFile(file_ref,
54                                                        enter.callback()));
55}
56
57int32_t MonitorIsExternal(PP_Resource drm,
58                          PP_Bool* is_external,
59                          struct PP_CompletionCallback callback) {
60  VLOG(4) << "PPB_Flash_DRM::MonitorIsExternal()";
61  EnterResource<PPB_Flash_DRM_API> enter(drm, callback, true);
62  if (enter.failed())
63    return enter.retval();
64  return enter.SetResult(enter.object()->MonitorIsExternal(is_external,
65                                                           enter.callback()));
66}
67
68const PPB_Flash_DRM_1_0 g_ppb_flash_drm_thunk_1_0 = {
69  &Create,
70  &GetDeviceID,
71  &GetHmonitor,
72  &GetVoucherFile
73};
74
75const PPB_Flash_DRM_1_1 g_ppb_flash_drm_thunk_1_1 = {
76  &Create,
77  &GetDeviceID,
78  &GetHmonitor,
79  &GetVoucherFile,
80  &MonitorIsExternal
81};
82
83}  // namespace
84
85PPAPI_THUNK_EXPORT const PPB_Flash_DRM_1_0* GetPPB_Flash_DRM_1_0_Thunk() {
86  return &g_ppb_flash_drm_thunk_1_0;
87}
88
89PPAPI_THUNK_EXPORT const PPB_Flash_DRM_1_1* GetPPB_Flash_DRM_1_1_Thunk() {
90  return &g_ppb_flash_drm_thunk_1_1;
91}
92
93}  // namespace thunk
94}  // namespace ppapi
95