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 ../test_thunk/simple.idl modified Fri Nov 16 11:26:06 2012. 6 7 #include "ppapi/c/../test_thunk/simple.h" 8 #include "ppapi/c/pp_errors.h" 9 #include "ppapi/shared_impl/tracked_callback.h" 10 #include "ppapi/thunk/enter.h" 11 #include "ppapi/thunk/ppb_instance_api.h" 12 #include "ppapi/thunk/resource_creation_api.h" 13 #include "ppapi/thunk/simple_api.h" 14 #include "ppapi/thunk/thunk.h" 15 16 namespace ppapi { 17 namespace thunk { 18 19 namespace { 20 21 PP_Resource Create(PP_Instance instance) { 22 VLOG(4) << "PPB_Simple::Create()"; 23 EnterResourceCreation enter(instance); 24 if (enter.failed()) 25 return 0; 26 return enter.functions()->CreateSimple(instance); 27 } 28 29 PP_Bool IsSimple(PP_Resource resource) { 30 VLOG(4) << "PPB_Simple::IsSimple()"; 31 EnterResource<PPB_Simple_API> enter(resource, false); 32 return PP_FromBool(enter.succeeded()); 33 } 34 35 void PostMessage(PP_Instance instance, PP_Var message) { 36 VLOG(4) << "PPB_Simple::PostMessage()"; 37 EnterInstance enter(instance); 38 if (enter.failed()) 39 return; 40 enter.functions()->PostMessage(instance, message); 41 } 42 43 uint32_t DoUint32Instance_0_5(PP_Instance instance) { 44 VLOG(4) << "PPB_Simple::DoUint32Instance()"; 45 EnterInstance enter(instance); 46 if (enter.failed()) 47 return 0; 48 return enter.functions()->DoUint32Instance0_5(instance); 49 } 50 51 uint32_t DoUint32Instance(PP_Instance instance, PP_Resource resource) { 52 VLOG(4) << "PPB_Simple::DoUint32Instance()"; 53 EnterInstance enter(instance); 54 if (enter.failed()) 55 return 0; 56 return enter.functions()->DoUint32Instance(instance, resource); 57 } 58 59 uint32_t DoUint32Resource(PP_Resource instance) { 60 VLOG(4) << "PPB_Simple::DoUint32Resource()"; 61 EnterResource<PPB_Simple_API> enter(instance, true); 62 if (enter.failed()) 63 return 0; 64 return enter.object()->DoUint32Resource(); 65 } 66 67 uint32_t DoUint32ResourceNoErrors(PP_Resource instance) { 68 VLOG(4) << "PPB_Simple::DoUint32ResourceNoErrors()"; 69 EnterResource<PPB_Simple_API> enter(instance, false); 70 if (enter.failed()) 71 return 0; 72 return enter.object()->DoUint32ResourceNoErrors(); 73 } 74 75 int32_t OnFailure12(PP_Instance instance) { 76 VLOG(4) << "PPB_Simple::OnFailure12()"; 77 EnterInstance enter(instance); 78 if (enter.failed()) 79 return 12; 80 return enter.functions()->OnFailure12(instance); 81 } 82 83 const PPB_Simple_0_5 g_ppb_simple_thunk_0_5 = { 84 &Create, 85 &IsSimple, 86 &PostMessage, 87 &DoUint32Instance_0_5, 88 &DoUint32Resource, 89 &DoUint32ResourceNoErrors 90 }; 91 92 const PPB_Simple_1_0 g_ppb_simple_thunk_1_0 = { 93 &Create, 94 &IsSimple, 95 &DoUint32Instance_0_5, 96 &DoUint32Resource, 97 &DoUint32ResourceNoErrors, 98 &OnFailure12 99 }; 100 101 const PPB_Simple_1_5 g_ppb_simple_thunk_1_5 = { 102 &Create, 103 &IsSimple, 104 &DoUint32Instance, 105 &DoUint32Resource, 106 &DoUint32ResourceNoErrors, 107 &OnFailure12 108 }; 109 110 } // namespace 111 112 const PPB_Simple_0_5* GetPPB_Simple_0_5_Thunk() { 113 return &g_ppb_simple_thunk_0_5; 114 } 115 116 const PPB_Simple_1_0* GetPPB_Simple_1_0_Thunk() { 117 return &g_ppb_simple_thunk_1_0; 118 } 119 120 const PPB_Simple_1_5* GetPPB_Simple_1_5_Thunk() { 121 return &g_ppb_simple_thunk_1_5; 122 } 123 124 } // namespace thunk 125 } // namespace ppapi 126