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 "webkit/plugins/ppapi/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 "webkit/plugins/ppapi/host_globals.h"
11 #include "webkit/plugins/ppapi/plugin_module.h"
12 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
13 #include "webkit/plugins/ppapi/ppb_url_loader_impl.h"
15 using ppapi::PpapiGlobals
;
16 using ppapi::thunk::EnterResource
;
17 using ppapi::thunk::PPB_URLLoader_API
;
24 void PluginCrashed(PP_Module module
) {
25 PluginModule
* plugin_module
= HostGlobals::Get()->GetModule(module
);
27 plugin_module
->PluginCrashed();
30 PP_Instance
GetInstanceForResource(PP_Resource resource
) {
31 ::ppapi::Resource
* obj
=
32 PpapiGlobals::Get()->GetResourceTracker()->GetResource(resource
);
35 return obj
->pp_instance();
38 void SetReserveInstanceIDCallback(PP_Module module
,
39 PP_Bool (*reserve
)(PP_Module
, PP_Instance
)) {
40 PluginModule
* plugin_module
= HostGlobals::Get()->GetModule(module
);
42 plugin_module
->SetReserveInstanceIDCallback(reserve
);
45 int32_t GetURLLoaderBufferedBytes(PP_Resource url_loader
) {
46 EnterResource
<PPB_URLLoader_API
> enter(url_loader
, true);
47 if (enter
.succeeded())
48 return static_cast<PPB_URLLoader_Impl
*>(enter
.object())->buffer_size();
52 void AddRefModule(PP_Module module
) {
53 PluginModule
* plugin_module
= HostGlobals::Get()->GetModule(module
);
55 plugin_module
->AddRef();
58 void ReleaseModule(PP_Module module
) {
59 PluginModule
* plugin_module
= HostGlobals::Get()->GetModule(module
);
61 plugin_module
->Release();
64 PP_Bool
IsInModuleDestructor(PP_Module module
) {
65 PluginModule
* plugin_module
= HostGlobals::Get()->GetModule(module
);
67 return PP_FromBool(plugin_module
->is_in_destructor());
71 const PPB_Proxy_Private ppb_proxy
= {
73 &GetInstanceForResource
,
74 &SetReserveInstanceIDCallback
,
75 &GetURLLoaderBufferedBytes
,
84 const PPB_Proxy_Private
* PPB_Proxy_Impl::GetInterface() {