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

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

Issue 11722017: Use an explicit PID for duplicating Pepper handles rather than the Channel's. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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/plugin_dispatcher.cc ('k') | ppapi/proxy/ppapi_messages.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) 2012 The Chromium Authors. All rights reserved. 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 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 <map> 5 #include <map>
6 #include <set> 6 #include <set>
7 7
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 // Need to include this before most other files because it defines 9 // Need to include this before most other files because it defines
10 // IPC_MESSAGE_LOG_ENABLED. We need to use it to define 10 // IPC_MESSAGE_LOG_ENABLED. We need to use it to define
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 public PluginDispatcher::PluginDelegate, 59 public PluginDispatcher::PluginDelegate,
60 public PluginProxyDelegate { 60 public PluginProxyDelegate {
61 public: 61 public:
62 explicit PpapiDispatcher(scoped_refptr<base::MessageLoopProxy> io_loop); 62 explicit PpapiDispatcher(scoped_refptr<base::MessageLoopProxy> io_loop);
63 63
64 // PluginDispatcher::PluginDelegate implementation. 64 // PluginDispatcher::PluginDelegate implementation.
65 virtual base::MessageLoopProxy* GetIPCMessageLoop() OVERRIDE; 65 virtual base::MessageLoopProxy* GetIPCMessageLoop() OVERRIDE;
66 virtual base::WaitableEvent* GetShutdownEvent() OVERRIDE; 66 virtual base::WaitableEvent* GetShutdownEvent() OVERRIDE;
67 virtual IPC::PlatformFileForTransit ShareHandleWithRemote( 67 virtual IPC::PlatformFileForTransit ShareHandleWithRemote(
68 base::PlatformFile handle, 68 base::PlatformFile handle,
69 const IPC::SyncChannel& channel, 69 base::ProcessId peer_pid,
70 bool should_close_source) OVERRIDE; 70 bool should_close_source) OVERRIDE;
71 virtual std::set<PP_Instance>* GetGloballySeenInstanceIDSet() OVERRIDE; 71 virtual std::set<PP_Instance>* GetGloballySeenInstanceIDSet() OVERRIDE;
72 virtual uint32 Register(PluginDispatcher* plugin_dispatcher) OVERRIDE; 72 virtual uint32 Register(PluginDispatcher* plugin_dispatcher) OVERRIDE;
73 virtual void Unregister(uint32 plugin_dispatcher_id) OVERRIDE; 73 virtual void Unregister(uint32 plugin_dispatcher_id) OVERRIDE;
74 74
75 // PluginProxyDelegate implementation. 75 // PluginProxyDelegate implementation.
76 virtual IPC::Sender* GetBrowserSender() OVERRIDE; 76 virtual IPC::Sender* GetBrowserSender() OVERRIDE;
77 virtual std::string GetUILanguage() OVERRIDE; 77 virtual std::string GetUILanguage() OVERRIDE;
78 virtual void PreCacheFont(const void* logfontw) OVERRIDE; 78 virtual void PreCacheFont(const void* logfontw) OVERRIDE;
79 virtual void SetActiveURL(const std::string& url) OVERRIDE; 79 virtual void SetActiveURL(const std::string& url) OVERRIDE;
(...skipping 17 matching lines...) Expand all
97 scoped_refptr<base::MessageLoopProxy> message_loop_; 97 scoped_refptr<base::MessageLoopProxy> message_loop_;
98 base::WaitableEvent shutdown_event_; 98 base::WaitableEvent shutdown_event_;
99 }; 99 };
100 100
101 PpapiDispatcher::PpapiDispatcher(scoped_refptr<base::MessageLoopProxy> io_loop) 101 PpapiDispatcher::PpapiDispatcher(scoped_refptr<base::MessageLoopProxy> io_loop)
102 : next_plugin_dispatcher_id_(0), 102 : next_plugin_dispatcher_id_(0),
103 message_loop_(io_loop), 103 message_loop_(io_loop),
104 shutdown_event_(true, false) { 104 shutdown_event_(true, false) {
105 IPC::ChannelHandle channel_handle( 105 IPC::ChannelHandle channel_handle(
106 "NaCl IPC", base::FileDescriptor(NACL_IPC_FD, false)); 106 "NaCl IPC", base::FileDescriptor(NACL_IPC_FD, false));
107 InitWithChannel(this, channel_handle, false); // Channel is server. 107 // We don't have/need a PID since handle sharing happens outside of the
108 // NaCl sandbox.
109 InitWithChannel(this, base::kNullProcessId, channel_handle,
110 false); // Channel is server.
108 channel()->AddFilter( 111 channel()->AddFilter(
109 new components::ChildTraceMessageFilter(message_loop_)); 112 new components::ChildTraceMessageFilter(message_loop_));
110 } 113 }
111 114
112 base::MessageLoopProxy* PpapiDispatcher::GetIPCMessageLoop() { 115 base::MessageLoopProxy* PpapiDispatcher::GetIPCMessageLoop() {
113 return message_loop_.get(); 116 return message_loop_.get();
114 } 117 }
115 118
116 base::WaitableEvent* PpapiDispatcher::GetShutdownEvent() { 119 base::WaitableEvent* PpapiDispatcher::GetShutdownEvent() {
117 return &shutdown_event_; 120 return &shutdown_event_;
118 } 121 }
119 122
120 IPC::PlatformFileForTransit PpapiDispatcher::ShareHandleWithRemote( 123 IPC::PlatformFileForTransit PpapiDispatcher::ShareHandleWithRemote(
121 base::PlatformFile handle, 124 base::PlatformFile handle,
122 const IPC::SyncChannel& channel, 125 base::ProcessId peer_pid,
123 bool should_close_source) { 126 bool should_close_source) {
124 return IPC::InvalidPlatformFileForTransit(); 127 return IPC::InvalidPlatformFileForTransit();
125 } 128 }
126 129
127 std::set<PP_Instance>* PpapiDispatcher::GetGloballySeenInstanceIDSet() { 130 std::set<PP_Instance>* PpapiDispatcher::GetGloballySeenInstanceIDSet() {
128 return &instances_; 131 return &instances_;
129 } 132 }
130 133
131 uint32 PpapiDispatcher::Register(PluginDispatcher* plugin_dispatcher) { 134 uint32 PpapiDispatcher::Register(PluginDispatcher* plugin_dispatcher) {
132 if (!plugin_dispatcher || 135 if (!plugin_dispatcher ||
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 SerializedHandle handle) { 186 SerializedHandle handle) {
184 // Tell the process-global GetInterface which interfaces it can return to the 187 // Tell the process-global GetInterface which interfaces it can return to the
185 // plugin. 188 // plugin.
186 ppapi::proxy::InterfaceList::SetProcessGlobalPermissions( 189 ppapi::proxy::InterfaceList::SetProcessGlobalPermissions(
187 permissions); 190 permissions);
188 191
189 PluginDispatcher* dispatcher = 192 PluginDispatcher* dispatcher =
190 new PluginDispatcher(::PPP_GetInterface, permissions, incognito); 193 new PluginDispatcher(::PPP_GetInterface, permissions, incognito);
191 // The channel handle's true name is not revealed here. 194 // The channel handle's true name is not revealed here.
192 IPC::ChannelHandle channel_handle("nacl", handle.descriptor()); 195 IPC::ChannelHandle channel_handle("nacl", handle.descriptor());
193 if (!dispatcher->InitPluginWithChannel(this, channel_handle, false)) { 196 if (!dispatcher->InitPluginWithChannel(this, base::kNullProcessId,
197 channel_handle, false)) {
194 delete dispatcher; 198 delete dispatcher;
195 return; 199 return;
196 } 200 }
197 // From here, the dispatcher will manage its own lifetime according to the 201 // From here, the dispatcher will manage its own lifetime according to the
198 // lifetime of the attached channel. 202 // lifetime of the attached channel.
199 } 203 }
200 204
201 void PpapiDispatcher::OnMsgResourceReply( 205 void PpapiDispatcher::OnMsgResourceReply(
202 const ppapi::proxy::ResourceMessageReplyParams& reply_params, 206 const ppapi::proxy::ResourceMessageReplyParams& reply_params,
203 const IPC::Message& nested_msg) { 207 const IPC::Message& nested_msg) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 276
273 PpapiDispatcher ppapi_dispatcher(io_thread.message_loop_proxy()); 277 PpapiDispatcher ppapi_dispatcher(io_thread.message_loop_proxy());
274 plugin_globals.set_plugin_proxy_delegate(&ppapi_dispatcher); 278 plugin_globals.set_plugin_proxy_delegate(&ppapi_dispatcher);
275 279
276 loop.Run(); 280 loop.Run();
277 281
278 NaClSrpcModuleFini(); 282 NaClSrpcModuleFini();
279 283
280 return 0; 284 return 0;
281 } 285 }
OLDNEW
« no previous file with comments | « ppapi/proxy/plugin_dispatcher.cc ('k') | ppapi/proxy/ppapi_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698