1// Copyright (c) 2011 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#include "content/renderer/pepper/ppb_proxy_impl.h" 6 7#include "ppapi/c/private/ppb_proxy_private.h" 8#include "ppapi/thunk/enter.h" 9#include "ppapi/thunk/ppb_image_data_api.h" 10#include "content/renderer/pepper/host_globals.h" 11#include "content/renderer/pepper/plugin_module.h" 12 13using ppapi::PpapiGlobals; 14using ppapi::thunk::EnterResource; 15using ppapi::thunk::PPB_URLLoader_API; 16 17namespace content { 18 19namespace { 20 21void PluginCrashed(PP_Module module) { 22 PluginModule* plugin_module = HostGlobals::Get()->GetModule(module); 23 if (plugin_module) 24 plugin_module->PluginCrashed(); 25} 26 27PP_Instance GetInstanceForResource(PP_Resource resource) { 28 ppapi::Resource* obj = 29 PpapiGlobals::Get()->GetResourceTracker()->GetResource(resource); 30 if (!obj) 31 return 0; 32 return obj->pp_instance(); 33} 34 35void SetReserveInstanceIDCallback(PP_Module module, 36 PP_Bool (*reserve)(PP_Module, PP_Instance)) { 37 PluginModule* plugin_module = HostGlobals::Get()->GetModule(module); 38 if (plugin_module) 39 plugin_module->SetReserveInstanceIDCallback(reserve); 40} 41 42void AddRefModule(PP_Module module) { 43 PluginModule* plugin_module = HostGlobals::Get()->GetModule(module); 44 if (plugin_module) 45 plugin_module->AddRef(); 46} 47 48void ReleaseModule(PP_Module module) { 49 PluginModule* plugin_module = HostGlobals::Get()->GetModule(module); 50 if (plugin_module) 51 plugin_module->Release(); 52} 53 54PP_Bool IsInModuleDestructor(PP_Module module) { 55 PluginModule* plugin_module = HostGlobals::Get()->GetModule(module); 56 if (plugin_module) 57 return PP_FromBool(plugin_module->is_in_destructor()); 58 return PP_FALSE; 59} 60 61const PPB_Proxy_Private ppb_proxy = { 62 &PluginCrashed, &GetInstanceForResource, &SetReserveInstanceIDCallback, 63 &AddRefModule, &ReleaseModule, &IsInModuleDestructor}; 64 65} // namespace 66 67// static 68const PPB_Proxy_Private* PPB_Proxy_Impl::GetInterface() { return &ppb_proxy; } 69 70} // namespace content 71