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

Side by Side Diff: components/nacl/loader/nacl_listener.cc

Issue 1090043002: Merge NaClIPCAdapter::set_resolve_file_token_callback() into the constructor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 5 years, 8 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
« no previous file with comments | « components/nacl/loader/nacl_ipc_adapter.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/nacl/loader/nacl_listener.h" 5 #include "components/nacl/loader/nacl_listener.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <stdlib.h> 9 #include <stdlib.h>
10 #include <string.h> 10 #include <string.h>
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 g_listener->Send(new NaClProcessHostMsg_DebugStubPortSelected(port)); 132 g_listener->Send(new NaClProcessHostMsg_DebugStubPortSelected(port));
133 } 133 }
134 134
135 #endif 135 #endif
136 136
137 // Creates the PPAPI IPC channel between the NaCl IRT and the host 137 // Creates the PPAPI IPC channel between the NaCl IRT and the host
138 // (browser/renderer) process, and starts to listen it on the thread where 138 // (browser/renderer) process, and starts to listen it on the thread where
139 // the given message_loop_proxy runs. 139 // the given message_loop_proxy runs.
140 // Also, creates and sets the corresponding NaClDesc to the given nap with 140 // Also, creates and sets the corresponding NaClDesc to the given nap with
141 // the FD #. 141 // the FD #.
142 scoped_refptr<NaClIPCAdapter> SetUpIPCAdapter( 142 void SetUpIPCAdapter(
143 IPC::ChannelHandle* handle, 143 IPC::ChannelHandle* handle,
144 scoped_refptr<base::MessageLoopProxy> message_loop_proxy, 144 scoped_refptr<base::MessageLoopProxy> message_loop_proxy,
145 struct NaClApp* nap, 145 struct NaClApp* nap,
146 int nacl_fd) { 146 int nacl_fd,
147 NaClIPCAdapter::ResolveFileTokenCallback resolve_file_token_cb) {
147 scoped_refptr<NaClIPCAdapter> ipc_adapter( 148 scoped_refptr<NaClIPCAdapter> ipc_adapter(
148 new NaClIPCAdapter(*handle, message_loop_proxy.get())); 149 new NaClIPCAdapter(*handle,
150 message_loop_proxy.get(),
151 resolve_file_token_cb));
149 ipc_adapter->ConnectChannel(); 152 ipc_adapter->ConnectChannel();
150 #if defined(OS_POSIX) 153 #if defined(OS_POSIX)
151 handle->socket = 154 handle->socket =
152 base::FileDescriptor(ipc_adapter->TakeClientFileDescriptor()); 155 base::FileDescriptor(ipc_adapter->TakeClientFileDescriptor());
153 #endif 156 #endif
154 157
155 // Pass a NaClDesc to the untrusted side. This will hold a ref to the 158 // Pass a NaClDesc to the untrusted side. This will hold a ref to the
156 // NaClIPCAdapter. 159 // NaClIPCAdapter.
157 NaClAppSetDesc(nap, nacl_fd, ipc_adapter->MakeNaClDesc()); 160 NaClAppSetDesc(nap, nacl_fd, ipc_adapter->MakeNaClDesc());
158 return ipc_adapter;
159 } 161 }
160 162
161 } // namespace 163 } // namespace
162 164
163 class BrowserValidationDBProxy : public NaClValidationDB { 165 class BrowserValidationDBProxy : public NaClValidationDB {
164 public: 166 public:
165 explicit BrowserValidationDBProxy(NaClListener* listener) 167 explicit BrowserValidationDBProxy(NaClListener* listener)
166 : listener_(listener) { 168 : listener_(listener) {
167 } 169 }
168 170
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 306
305 if (params.enable_ipc_proxy) { 307 if (params.enable_ipc_proxy) {
306 browser_handle = IPC::Channel::GenerateVerifiedChannelID("nacl"); 308 browser_handle = IPC::Channel::GenerateVerifiedChannelID("nacl");
307 ppapi_renderer_handle = IPC::Channel::GenerateVerifiedChannelID("nacl"); 309 ppapi_renderer_handle = IPC::Channel::GenerateVerifiedChannelID("nacl");
308 manifest_service_handle = IPC::Channel::GenerateVerifiedChannelID("nacl"); 310 manifest_service_handle = IPC::Channel::GenerateVerifiedChannelID("nacl");
309 311
310 // Create the PPAPI IPC channels between the NaCl IRT and the host 312 // Create the PPAPI IPC channels between the NaCl IRT and the host
311 // (browser/renderer) processes. The IRT uses these channels to 313 // (browser/renderer) processes. The IRT uses these channels to
312 // communicate with the host and to initialize the IPC dispatchers. 314 // communicate with the host and to initialize the IPC dispatchers.
313 SetUpIPCAdapter(&browser_handle, io_thread_.message_loop_proxy(), 315 SetUpIPCAdapter(&browser_handle, io_thread_.message_loop_proxy(),
314 nap, NACL_CHROME_DESC_BASE); 316 nap, NACL_CHROME_DESC_BASE,
317 NaClIPCAdapter::ResolveFileTokenCallback());
315 SetUpIPCAdapter(&ppapi_renderer_handle, io_thread_.message_loop_proxy(), 318 SetUpIPCAdapter(&ppapi_renderer_handle, io_thread_.message_loop_proxy(),
316 nap, NACL_CHROME_DESC_BASE + 1); 319 nap, NACL_CHROME_DESC_BASE + 1,
317 320 NaClIPCAdapter::ResolveFileTokenCallback());
318 scoped_refptr<NaClIPCAdapter> manifest_ipc_adapter = 321 SetUpIPCAdapter(&manifest_service_handle,
319 SetUpIPCAdapter(&manifest_service_handle, 322 io_thread_.message_loop_proxy(),
320 io_thread_.message_loop_proxy(), 323 nap,
321 nap, 324 NACL_CHROME_DESC_BASE + 2,
322 NACL_CHROME_DESC_BASE + 2); 325 base::Bind(&NaClListener::ResolveFileToken,
323 manifest_ipc_adapter->set_resolve_file_token_callback( 326 base::Unretained(this)));
324 base::Bind(&NaClListener::ResolveFileToken, base::Unretained(this)));
325 } 327 }
326 328
327 trusted_listener_ = new NaClTrustedListener( 329 trusted_listener_ = new NaClTrustedListener(
328 IPC::Channel::GenerateVerifiedChannelID("nacl"), 330 IPC::Channel::GenerateVerifiedChannelID("nacl"),
329 io_thread_.message_loop_proxy().get(), 331 io_thread_.message_loop_proxy().get(),
330 &shutdown_event_); 332 &shutdown_event_);
331 if (!Send(new NaClProcessHostMsg_PpapiChannelsCreated( 333 if (!Send(new NaClProcessHostMsg_PpapiChannelsCreated(
332 browser_handle, 334 browser_handle,
333 ppapi_renderer_handle, 335 ppapi_renderer_handle,
334 trusted_listener_->TakeClientChannelHandle(), 336 trusted_listener_->TakeClientChannelHandle(),
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 } 464 }
463 465
464 void NaClListener::OnFileTokenResolved( 466 void NaClListener::OnFileTokenResolved(
465 uint64_t token_lo, 467 uint64_t token_lo,
466 uint64_t token_hi, 468 uint64_t token_hi,
467 IPC::PlatformFileForTransit ipc_fd, 469 IPC::PlatformFileForTransit ipc_fd,
468 base::FilePath file_path) { 470 base::FilePath file_path) {
469 resolved_cb_.Run(ipc_fd, file_path); 471 resolved_cb_.Run(ipc_fd, file_path);
470 resolved_cb_.Reset(); 472 resolved_cb_.Reset();
471 } 473 }
OLDNEW
« no previous file with comments | « components/nacl/loader/nacl_ipc_adapter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698