Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: ppapi/proxy/ppp_instance_proxy.cc

Issue 7844018: Revert 100748 - This patch tries to remove most of the manual registration for Pepper interfaces,... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/proxy/ppp_instance_proxy.h ('k') | ppapi/proxy/ppp_messaging_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/proxy/ppp_instance_proxy.h" 5 #include "ppapi/proxy/ppp_instance_proxy.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "ppapi/c/dev/ppb_fullscreen_dev.h" 9 #include "ppapi/c/dev/ppb_fullscreen_dev.h"
10 #include "ppapi/c/pp_var.h" 10 #include "ppapi/c/pp_var.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 HostDispatcher::GetForInstance(instance)->Send( 43 HostDispatcher::GetForInstance(instance)->Send(
44 new PpapiMsg_PPPInstance_DidDestroy(INTERFACE_ID_PPP_INSTANCE, instance)); 44 new PpapiMsg_PPPInstance_DidDestroy(INTERFACE_ID_PPP_INSTANCE, instance));
45 } 45 }
46 46
47 void DidChangeView(PP_Instance instance, 47 void DidChangeView(PP_Instance instance,
48 const PP_Rect* position, 48 const PP_Rect* position,
49 const PP_Rect* clip) { 49 const PP_Rect* clip) {
50 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); 50 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance);
51 const PPB_Fullscreen_Dev* fullscreen_interface = 51 const PPB_Fullscreen_Dev* fullscreen_interface =
52 static_cast<const PPB_Fullscreen_Dev*>( 52 static_cast<const PPB_Fullscreen_Dev*>(
53 dispatcher->local_get_interface()(PPB_FULLSCREEN_DEV_INTERFACE)); 53 dispatcher->GetLocalInterface(PPB_FULLSCREEN_DEV_INTERFACE));
54 DCHECK(fullscreen_interface); 54 DCHECK(fullscreen_interface);
55 PP_Bool fullscreen = fullscreen_interface->IsFullscreen(instance); 55 PP_Bool fullscreen = fullscreen_interface->IsFullscreen(instance);
56 dispatcher->Send( 56 dispatcher->Send(
57 new PpapiMsg_PPPInstance_DidChangeView(INTERFACE_ID_PPP_INSTANCE, 57 new PpapiMsg_PPPInstance_DidChangeView(INTERFACE_ID_PPP_INSTANCE,
58 instance, *position, *clip, 58 instance, *position, *clip,
59 fullscreen)); 59 fullscreen));
60 } 60 }
61 61
62 void DidChangeFocus(PP_Instance instance, PP_Bool has_focus) { 62 void DidChangeFocus(PP_Instance instance, PP_Bool has_focus) {
63 HostDispatcher::GetForInstance(instance)->Send( 63 HostDispatcher::GetForInstance(instance)->Send(
64 new PpapiMsg_PPPInstance_DidChangeFocus(INTERFACE_ID_PPP_INSTANCE, 64 new PpapiMsg_PPPInstance_DidChangeFocus(INTERFACE_ID_PPP_INSTANCE,
65 instance, has_focus)); 65 instance, has_focus));
66 } 66 }
67 67
68 PP_Bool HandleDocumentLoad(PP_Instance instance, 68 PP_Bool HandleDocumentLoad(PP_Instance instance,
69 PP_Resource url_loader) { 69 PP_Resource url_loader) {
70 PP_Bool result = PP_FALSE; 70 PP_Bool result = PP_FALSE;
71 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); 71 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance);
72 72
73 // Set up the URLLoader for proxying. 73 // Set up the URLLoader for proxying.
74 74
75 PPB_URLLoader_Proxy* url_loader_proxy = static_cast<PPB_URLLoader_Proxy*>( 75 PPB_URLLoader_Proxy* url_loader_proxy = static_cast<PPB_URLLoader_Proxy*>(
76 dispatcher->GetInterfaceProxy(INTERFACE_ID_PPB_URL_LOADER)); 76 dispatcher->GetOrCreatePPBInterfaceProxy(INTERFACE_ID_PPB_URL_LOADER));
77 url_loader_proxy->PrepareURLLoaderForSendingToPlugin(url_loader); 77 url_loader_proxy->PrepareURLLoaderForSendingToPlugin(url_loader);
78 78
79 // PluginResourceTracker in the plugin process assumes that resources that it 79 // PluginResourceTracker in the plugin process assumes that resources that it
80 // tracks have been addrefed on behalf of the plugin at the renderer side. So 80 // tracks have been addrefed on behalf of the plugin at the renderer side. So
81 // we explicitly do it for |url_loader| here. 81 // we explicitly do it for |url_loader| here.
82 // 82 //
83 // Please also see comments in PPP_Instance_Proxy::OnMsgHandleDocumentLoad() 83 // Please also see comments in PPP_Instance_Proxy::OnMsgHandleDocumentLoad()
84 // about releasing of this extra reference. 84 // about releasing of this extra reference.
85 const PPB_Core* core = reinterpret_cast<const PPB_Core*>( 85 const PPB_Core* core = reinterpret_cast<const PPB_Core*>(
86 dispatcher->local_get_interface()(PPB_CORE_INTERFACE)); 86 dispatcher->GetLocalInterface(PPB_CORE_INTERFACE));
87 if (!core) { 87 if (!core) {
88 NOTREACHED(); 88 NOTREACHED();
89 return PP_FALSE; 89 return PP_FALSE;
90 } 90 }
91 core->AddRefResource(url_loader); 91 core->AddRefResource(url_loader);
92 92
93 HostResource serialized_loader; 93 HostResource serialized_loader;
94 serialized_loader.SetHostResource(instance, url_loader); 94 serialized_loader.SetHostResource(instance, url_loader);
95 dispatcher->Send(new PpapiMsg_PPPInstance_HandleDocumentLoad( 95 dispatcher->Send(new PpapiMsg_PPPInstance_HandleDocumentLoad(
96 INTERFACE_ID_PPP_INSTANCE, instance, serialized_loader, &result)); 96 INTERFACE_ID_PPP_INSTANCE, instance, serialized_loader, &result));
97 return result; 97 return result;
98 } 98 }
99 99
100 static const PPP_Instance_1_0 instance_interface_1_0 = { 100 static const PPP_Instance_1_0 instance_interface_1_0 = {
101 &DidCreate, 101 &DidCreate,
102 &DidDestroy, 102 &DidDestroy,
103 &DidChangeView, 103 &DidChangeView,
104 &DidChangeFocus, 104 &DidChangeFocus,
105 &HandleDocumentLoad 105 &HandleDocumentLoad
106 }; 106 };
107 107
108 InterfaceProxy* CreateInstanceProxy(Dispatcher* dispatcher) { 108 template <class PPP_Instance_Type>
109 return new PPP_Instance_Proxy(dispatcher); 109 InterfaceProxy* CreateInstanceProxy(Dispatcher* dispatcher,
110 const void* target_interface) {
111 return new PPP_Instance_Proxy(
112 dispatcher,
113 static_cast<const PPP_Instance_Type*>(target_interface));
110 } 114 }
111 115
112 } // namespace 116 } // namespace
113 117
114 PPP_Instance_Proxy::PPP_Instance_Proxy(Dispatcher* dispatcher)
115 : InterfaceProxy(dispatcher) {
116 if (dispatcher->IsPlugin()) {
117 combined_interface_.reset(
118 new PPP_Instance_Combined(*static_cast<const PPP_Instance_1_0*>(
119 dispatcher->local_get_interface()(PPP_INSTANCE_INTERFACE_1_0))));
120 }
121 }
122
123 PPP_Instance_Proxy::~PPP_Instance_Proxy() { 118 PPP_Instance_Proxy::~PPP_Instance_Proxy() {
124 } 119 }
125 120
126 // static 121 // static
127 const InterfaceProxy::Info* PPP_Instance_Proxy::GetInfo1_0() { 122 const InterfaceProxy::Info* PPP_Instance_Proxy::GetInfo1_0() {
128 static const Info info = { 123 static const Info info = {
129 &instance_interface_1_0, 124 &instance_interface_1_0,
130 PPP_INSTANCE_INTERFACE_1_0, 125 PPP_INSTANCE_INTERFACE_1_0,
131 INTERFACE_ID_PPP_INSTANCE, 126 INTERFACE_ID_PPP_INSTANCE,
132 false, 127 false,
133 &CreateInstanceProxy 128 &CreateInstanceProxy<PPP_Instance_1_0>,
134 }; 129 };
135 return &info; 130 return &info;
136 } 131 }
137 132
138 bool PPP_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) { 133 bool PPP_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) {
139 bool handled = true; 134 bool handled = true;
140 IPC_BEGIN_MESSAGE_MAP(PPP_Instance_Proxy, msg) 135 IPC_BEGIN_MESSAGE_MAP(PPP_Instance_Proxy, msg)
141 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidCreate, 136 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidCreate,
142 OnMsgDidCreate) 137 OnMsgDidCreate)
143 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidDestroy, 138 IPC_MESSAGE_HANDLER(PpapiMsg_PPPInstance_DidDestroy,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 // with. The plugin will normally take an additional reference which will keep 219 // with. The plugin will normally take an additional reference which will keep
225 // the resource alive in the plugin (and the one reference in the renderer 220 // the resource alive in the plugin (and the one reference in the renderer
226 // representing all plugin references). 221 // representing all plugin references).
227 // Once all references at the plugin side are released, the renderer side will 222 // Once all references at the plugin side are released, the renderer side will
228 // be notified and release the reference added in HandleDocumentLoad() above. 223 // be notified and release the reference added in HandleDocumentLoad() above.
229 PluginResourceTracker::GetInstance()->ReleaseResource(plugin_loader); 224 PluginResourceTracker::GetInstance()->ReleaseResource(plugin_loader);
230 } 225 }
231 226
232 } // namespace proxy 227 } // namespace proxy
233 } // namespace ppapi 228 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/ppp_instance_proxy.h ('k') | ppapi/proxy/ppp_messaging_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698