Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / content / renderer / pepper / ppb_proxy_impl.cc
blobaeae7f300f1278a897d27e3473c627b2df42fb9d
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.
5 #include "content/renderer/pepper/ppb_proxy_impl.h"
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"
13 using ppapi::PpapiGlobals;
14 using ppapi::thunk::EnterResource;
15 using ppapi::thunk::PPB_URLLoader_API;
17 namespace content {
19 namespace {
21 void PluginCrashed(PP_Module module) {
22 PluginModule* plugin_module = HostGlobals::Get()->GetModule(module);
23 if (plugin_module)
24 plugin_module->PluginCrashed();
27 PP_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();
35 void 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);
42 void AddRefModule(PP_Module module) {
43 PluginModule* plugin_module = HostGlobals::Get()->GetModule(module);
44 if (plugin_module)
45 plugin_module->AddRef();
48 void ReleaseModule(PP_Module module) {
49 PluginModule* plugin_module = HostGlobals::Get()->GetModule(module);
50 if (plugin_module)
51 plugin_module->Release();
54 PP_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;
61 const PPB_Proxy_Private ppb_proxy = {
62 &PluginCrashed, &GetInstanceForResource, &SetReserveInstanceIDCallback,
63 &AddRefModule, &ReleaseModule, &IsInModuleDestructor};
65 } // namespace
67 // static
68 const PPB_Proxy_Private* PPB_Proxy_Impl::GetInterface() { return &ppb_proxy; }
70 } // namespace content