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