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

Unified Diff: chrome/nacl/nacl_listener.cc

Issue 7395024: For Linux, create a ZygoteForkDelegate that uses the nacl_helper executable (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Presubmit: fixing a copyright header. Created 9 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
« no previous file with comments | « chrome/nacl/nacl_listener.h ('k') | chrome/nacl/nacl_main.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/nacl/nacl_listener.cc
diff --git a/chrome/nacl/nacl_launcher_thread.cc b/chrome/nacl/nacl_listener.cc
similarity index 76%
rename from chrome/nacl/nacl_launcher_thread.cc
rename to chrome/nacl/nacl_listener.cc
index ad1c5e44890d9b34ce80c0f4ce51a04a6d8f5ee9..96520707f265f7ec8c2da76e4065c13f973f9815 100644
--- a/chrome/nacl/nacl_launcher_thread.cc
+++ b/chrome/nacl/nacl_listener.cc
@@ -2,13 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/nacl/nacl_launcher_thread.h"
+#include "chrome/nacl/nacl_listener.h"
-#include <vector>
+#include <errno.h>
-#include "base/atomicops.h"
+#include "base/command_line.h"
+#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
+#include "base/message_loop.h"
#include "chrome/common/nacl_messages.h"
+#include "ipc/ipc_channel.h"
+#include "ipc/ipc_switches.h"
#include "native_client/src/shared/imc/nacl_imc.h"
#if defined(OS_LINUX)
@@ -20,6 +24,15 @@
#include <io.h>
#endif
+// This is ugly. We need an interface header file for the exported
+// sel_ldr interfaces.
+// TODO(gregoryd,sehr): Add an interface header.
+#if defined(OS_WIN)
+typedef HANDLE NaClHandle;
+#else
+typedef int NaClHandle;
+#endif // NaClHandle
+
#if defined(OS_MACOSX)
namespace {
@@ -56,43 +69,34 @@ int CreateMemoryObject(size_t size, bool executable) {
} // namespace
#endif // defined(OS_MACOSX)
-// This is ugly. We need an interface header file for the exported
-// sel_ldr interfaces.
-// TODO(gregoryd,sehr): Add an interface header.
-#if defined(OS_WIN)
-typedef HANDLE NaClHandle;
-#else
-typedef int NaClHandle;
-#endif // NaClHandle
-
-// This is currently necessary because we have a conflict between
-// NaCl's LOG_FATAL (from platform/nacl_log.h) and Chromium's
-// LOG_FATAL (from base/logging.h).
-extern "C" int NaClMainForChromium(int handle_count, const NaClHandle* handles,
+extern "C" int NaClMainForChromium(int handle_count,
+ const NaClHandle* handles,
int debug);
extern "C" void NaClSetIrtFileDesc(int fd);
-NaClLauncherThread::NaClLauncherThread(bool debug) {
- debug_enabled_ = debug ? 1 : 0;
-}
+NaClListener::NaClListener() {}
-NaClLauncherThread::~NaClLauncherThread() {
-}
+NaClListener::~NaClListener() {}
-NaClLauncherThread* NaClLauncherThread::current() {
- return static_cast<NaClLauncherThread*>(ChildThread::current());
+void NaClListener::Listen() {
+ std::string channel_name =
+ CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kProcessChannelID);
+ IPC::Channel channel(channel_name, IPC::Channel::MODE_CLIENT, this);
+ CHECK(channel.Connect());
+ MessageLoop::current()->Run();
}
-bool NaClLauncherThread::OnControlMessageReceived(const IPC::Message& msg) {
+bool NaClListener::OnMessageReceived(const IPC::Message& msg) {
bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(NaClLauncherThread, msg)
- IPC_MESSAGE_HANDLER(NaClProcessMsg_Start, OnStartSelLdr)
- IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_BEGIN_MESSAGE_MAP(NaClListener, msg)
+ IPC_MESSAGE_HANDLER(NaClProcessMsg_Start, OnStartSelLdr)
+ IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
-void NaClLauncherThread::OnStartSelLdr(
+void NaClListener::OnStartSelLdr(
std::vector<nacl::FileDescriptor> handles,
bool have_irt_file) {
#if defined(OS_LINUX)
@@ -127,5 +131,5 @@ void NaClLauncherThread::OnStartSelLdr(
array[i] = nacl::ToNativeHandle(handles[i]);
}
NaClMainForChromium(static_cast<int>(handles.size()), array.get(),
- debug_enabled_);
+ false /* debug */);
}
« no previous file with comments | « chrome/nacl/nacl_listener.h ('k') | chrome/nacl/nacl_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698