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

Side by Side Diff: components/nacl/loader/nacl_trusted_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 for dmichael 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_trusted_listener.h" 5 #include "components/nacl/loader/nacl_trusted_listener.h"
6 6
7 #include "base/single_thread_task_runner.h" 7 #include "base/single_thread_task_runner.h"
8 #include "components/nacl/common/nacl_messages.h"
9
10 namespace {
11
12 NaClTrustedListener* g_trusted_listener;
13
14 } // namespace
8 15
9 NaClTrustedListener::NaClTrustedListener( 16 NaClTrustedListener::NaClTrustedListener(
10 const IPC::ChannelHandle& handle, 17 const IPC::ChannelHandle& handle,
11 base::SingleThreadTaskRunner* ipc_task_runner) { 18 base::SingleThreadTaskRunner* ipc_task_runner)
19 : ipc_task_runner_(ipc_task_runner),
20 waitable_event_(true, false),
21 send_fatal_crash_log_called_(false) {
12 channel_proxy_ = IPC::ChannelProxy::Create( 22 channel_proxy_ = IPC::ChannelProxy::Create(
13 handle, 23 handle,
14 IPC::Channel::MODE_SERVER, 24 IPC::Channel::MODE_SERVER,
15 this, 25 this,
16 ipc_task_runner).Pass(); 26 ipc_task_runner).Pass();
27 g_trusted_listener = this;
17 } 28 }
18 29
19 NaClTrustedListener::~NaClTrustedListener() { 30 NaClTrustedListener::~NaClTrustedListener() {
31 g_trusted_listener = NULL;
20 } 32 }
21 33
22 #if defined(OS_POSIX) 34 #if defined(OS_POSIX)
23 int NaClTrustedListener::TakeClientFileDescriptor() { 35 int NaClTrustedListener::TakeClientFileDescriptor() {
24 return channel_proxy_->TakeClientFileDescriptor(); 36 return channel_proxy_->TakeClientFileDescriptor();
25 } 37 }
26 #endif 38 #endif
27 39
28 bool NaClTrustedListener::OnMessageReceived(const IPC::Message& msg) { 40 bool NaClTrustedListener::OnMessageReceived(const IPC::Message& msg) {
29 return false; 41 return false;
30 } 42 }
31 43
32 void NaClTrustedListener::OnChannelError() { 44 void NaClTrustedListener::OnChannelError() {
33 channel_proxy_->Close(); 45 channel_proxy_->Close();
34 } 46 }
35 47
36 bool NaClTrustedListener::Send(IPC::Message* msg) { 48 bool NaClTrustedListener::Send(IPC::Message* msg) {
49 DCHECK(msg->type() != NaClProcessHostMsg_FatalLogReceived::ID);
50
37 return channel_proxy_->Send(msg); 51 return channel_proxy_->Send(msg);
38 } 52 }
53
54 bool NaClTrustedListener::SendFatalCrashLog(const std::string& log) {
55 DCHECK(!send_fatal_crash_log_called_);
56 send_fatal_crash_log_called_ = true;
57
58 Send(new NaClProcessHostMsg_FatalLogReceived(log));
59 ipc_task_runner_->PostTask(
Mark Seaborn 2014/07/30 22:23:26 So ipc_task_runner is io_thread_.message_loop_prox
60 FROM_HERE,
61 base::Bind(&NaClTrustedListener::SignalIpcTaskRunnerFlushed, this));
62 // Give the IPC task runner 50ms to try to send the fatal log message.
63 return waitable_event_.TimedWait(base::TimeDelta::FromMilliseconds(50));
dmichael (off chromium) 2014/07/30 21:17:48 nit: Might make sense to name waitable_event_ more
64 }
65
66 void NaClTrustedListener::SignalIpcTaskRunnerFlushed() {
67 waitable_event_.Signal();
68 }
69
70 NaClTrustedListener* NaClTrustedListener::Get() {
71 return g_trusted_listener;
72 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698