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

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

Issue 424893003: Pepper: Move NaCl fatal logging to Chrome IPC. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix race condition on plugin process exit Created 6 years, 4 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
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 10
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 return false; 110 return false;
111 return result; 111 return result;
112 } 112 }
113 113
114 void DebugStubPortSelectedHandler(uint16_t port) { 114 void DebugStubPortSelectedHandler(uint16_t port) {
115 g_listener->Send(new NaClProcessHostMsg_DebugStubPortSelected(port)); 115 g_listener->Send(new NaClProcessHostMsg_DebugStubPortSelected(port));
116 } 116 }
117 117
118 #endif 118 #endif
119 119
120 void FatalLogHandler(const char* buf, size_t bytes) {
121 NaClTrustedListener::Get()->Send(
122 new NaClProcessHostMsg_FatalLogReceived(std::string(buf, bytes)));
123
124 // Give the IPC task runner 50ms to try to send the fatal log message.
125 NaClTrustedListener::Get()->FlushIpcTaskRunner(
126 base::TimeDelta::FromMilliseconds(50));
dmichael (off chromium) 2014/07/30 20:18:52 I think I'd rather see a SendFatalLog method on Na
127 }
128
120 // Creates the PPAPI IPC channel between the NaCl IRT and the host 129 // Creates the PPAPI IPC channel between the NaCl IRT and the host
121 // (browser/renderer) process, and starts to listen it on the thread where 130 // (browser/renderer) process, and starts to listen it on the thread where
122 // the given message_loop_proxy runs. 131 // the given message_loop_proxy runs.
123 // Also, creates and sets the corresponding NaClDesc to the given nap with 132 // Also, creates and sets the corresponding NaClDesc to the given nap with
124 // the FD #. 133 // the FD #.
125 void SetUpIPCAdapter(IPC::ChannelHandle* handle, 134 void SetUpIPCAdapter(IPC::ChannelHandle* handle,
126 scoped_refptr<base::MessageLoopProxy> message_loop_proxy, 135 scoped_refptr<base::MessageLoopProxy> message_loop_proxy,
127 struct NaClApp* nap, 136 struct NaClApp* nap,
128 int nacl_fd) { 137 int nacl_fd) {
129 scoped_refptr<NaClIPCAdapter> ipc_adapter( 138 scoped_refptr<NaClIPCAdapter> ipc_adapter(
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 int urandom_fd = dup(base::GetUrandomFD()); 283 int urandom_fd = dup(base::GetUrandomFD());
275 if (urandom_fd < 0) { 284 if (urandom_fd < 0) {
276 LOG(ERROR) << "Failed to dup() the urandom FD"; 285 LOG(ERROR) << "Failed to dup() the urandom FD";
277 return; 286 return;
278 } 287 }
279 NaClChromeMainSetUrandomFd(urandom_fd); 288 NaClChromeMainSetUrandomFd(urandom_fd);
280 #endif 289 #endif
281 290
282 struct NaClApp* nap = NULL; 291 struct NaClApp* nap = NULL;
283 NaClChromeMainInit(); 292 NaClChromeMainInit();
293
294 NaClSetFatalErrorCallback(&FatalLogHandler);
295
284 nap = NaClAppCreate(); 296 nap = NaClAppCreate();
285 if (nap == NULL) { 297 if (nap == NULL) {
286 LOG(ERROR) << "NaClAppCreate() failed"; 298 LOG(ERROR) << "NaClAppCreate() failed";
287 return; 299 return;
288 } 300 }
289 301
290 IPC::ChannelHandle browser_handle; 302 IPC::ChannelHandle browser_handle;
291 IPC::ChannelHandle ppapi_renderer_handle; 303 IPC::ChannelHandle ppapi_renderer_handle;
292 304
293 if (params.enable_ipc_proxy) { 305 if (params.enable_ipc_proxy) {
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 IPC::ChannelHandle trusted_renderer_handle = 516 IPC::ChannelHandle trusted_renderer_handle =
505 IPC::Channel::GenerateVerifiedChannelID("nacl"); 517 IPC::Channel::GenerateVerifiedChannelID("nacl");
506 trusted_listener_ = new NaClTrustedListener( 518 trusted_listener_ = new NaClTrustedListener(
507 trusted_renderer_handle, io_thread_.message_loop_proxy().get()); 519 trusted_renderer_handle, io_thread_.message_loop_proxy().get());
508 #if defined(OS_POSIX) 520 #if defined(OS_POSIX)
509 trusted_renderer_handle.socket = base::FileDescriptor( 521 trusted_renderer_handle.socket = base::FileDescriptor(
510 trusted_listener_->TakeClientFileDescriptor(), true); 522 trusted_listener_->TakeClientFileDescriptor(), true);
511 #endif 523 #endif
512 return trusted_renderer_handle; 524 return trusted_renderer_handle;
513 } 525 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698