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

Unified 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, 5 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 side-by-side diff with in-line comments
Download patch
Index: components/nacl/loader/nacl_trusted_listener.cc
diff --git a/components/nacl/loader/nacl_trusted_listener.cc b/components/nacl/loader/nacl_trusted_listener.cc
index 5f6410a83f0f14632fe05166d209d17b07ed7a3c..88966b1d56bcf359156fcf48352226b3e4bf38bd 100644
--- a/components/nacl/loader/nacl_trusted_listener.cc
+++ b/components/nacl/loader/nacl_trusted_listener.cc
@@ -5,18 +5,30 @@
#include "components/nacl/loader/nacl_trusted_listener.h"
#include "base/single_thread_task_runner.h"
+#include "components/nacl/common/nacl_messages.h"
+
+namespace {
+
+NaClTrustedListener* g_trusted_listener;
+
+} // namespace
NaClTrustedListener::NaClTrustedListener(
const IPC::ChannelHandle& handle,
- base::SingleThreadTaskRunner* ipc_task_runner) {
+ base::SingleThreadTaskRunner* ipc_task_runner)
+ : ipc_task_runner_(ipc_task_runner),
+ waitable_event_(true, false),
+ send_fatal_crash_log_called_(false) {
channel_proxy_ = IPC::ChannelProxy::Create(
handle,
IPC::Channel::MODE_SERVER,
this,
ipc_task_runner).Pass();
+ g_trusted_listener = this;
}
NaClTrustedListener::~NaClTrustedListener() {
+ g_trusted_listener = NULL;
}
#if defined(OS_POSIX)
@@ -34,5 +46,27 @@ void NaClTrustedListener::OnChannelError() {
}
bool NaClTrustedListener::Send(IPC::Message* msg) {
+ DCHECK(msg->type() != NaClProcessHostMsg_FatalLogReceived::ID);
+
return channel_proxy_->Send(msg);
}
+
+bool NaClTrustedListener::SendFatalCrashLog(const std::string& log) {
+ DCHECK(!send_fatal_crash_log_called_);
+ send_fatal_crash_log_called_ = true;
+
+ Send(new NaClProcessHostMsg_FatalLogReceived(log));
+ ipc_task_runner_->PostTask(
Mark Seaborn 2014/07/30 22:23:26 So ipc_task_runner is io_thread_.message_loop_prox
+ FROM_HERE,
+ base::Bind(&NaClTrustedListener::SignalIpcTaskRunnerFlushed, this));
+ // Give the IPC task runner 50ms to try to send the fatal log message.
+ 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
+}
+
+void NaClTrustedListener::SignalIpcTaskRunnerFlushed() {
+ waitable_event_.Signal();
+}
+
+NaClTrustedListener* NaClTrustedListener::Get() {
+ return g_trusted_listener;
+}

Powered by Google App Engine
This is Rietveld 408576698