diff options
Diffstat (limited to 'chrome/nacl')
-rw-r--r-- | chrome/nacl/nacl_main.cc | 11 | ||||
-rw-r--r-- | chrome/nacl/nacl_thread.cc | 9 | ||||
-rw-r--r-- | chrome/nacl/nacl_thread.h | 4 |
3 files changed, 13 insertions, 11 deletions
diff --git a/chrome/nacl/nacl_main.cc b/chrome/nacl/nacl_main.cc index 24d8b1d..4477494 100644 --- a/chrome/nacl/nacl_main.cc +++ b/chrome/nacl/nacl_main.cc @@ -88,12 +88,6 @@ static void HandleNaClTestParameters(const CommandLine& command_line) { } } -static void LaunchNaClChildProcess() { - ChildProcess nacl_process; - nacl_process.set_main_thread(new NaClThread()); - MessageLoop::current()->Run(); -} - // main() routine for the NaCl loader process. int NaClMain(const MainFunctionParams& parameters) { const CommandLine& parsed_command_line = parameters.command_line_; @@ -124,7 +118,10 @@ int NaClMain(const MainFunctionParams& parameters) { bool sandbox_test_result = platform.RunSandboxTests(); if (sandbox_test_result) { - LaunchNaClChildProcess(); + ChildProcess nacl_process; + bool debug = parsed_command_line.HasSwitch(switches::kEnableNaClDebug); + nacl_process.set_main_thread(new NaClThread(debug)); + MessageLoop::current()->Run(); } else { // This indirectly prevents the test-harness-success-cookie from being set, // as a way of communicating test failure, because the nexe won't reply. diff --git a/chrome/nacl/nacl_thread.cc b/chrome/nacl/nacl_thread.cc index c1ab76d..c0a64a7 100644 --- a/chrome/nacl/nacl_thread.cc +++ b/chrome/nacl/nacl_thread.cc @@ -19,9 +19,11 @@ typedef int NaClHandle; // This is currently necessary because we have a conflict between // NaCl's "struct NaClThread" and Chromium's "class NaClThread". -extern "C" int NaClMainForChromium(int handle_count, const NaClHandle* handles); +extern "C" int NaClMainForChromium(int handle_count, const NaClHandle* handles, + int debug); -NaClThread::NaClThread() { +NaClThread::NaClThread(bool debug) { + debug_enabled_ = debug ? 1 : 0; } NaClThread::~NaClThread() { @@ -42,5 +44,6 @@ void NaClThread::OnStartSelLdr(std::vector<nacl::FileDescriptor> handles) { for (size_t i = 0; i < handles.size(); i++) { array[i] = nacl::ToNativeHandle(handles[i]); } - NaClMainForChromium(static_cast<int>(handles.size()), array.get()); + NaClMainForChromium(static_cast<int>(handles.size()), array.get(), + debug_enabled_); } diff --git a/chrome/nacl/nacl_thread.h b/chrome/nacl/nacl_thread.h index f7272d1..f87fc969 100644 --- a/chrome/nacl/nacl_thread.h +++ b/chrome/nacl/nacl_thread.h @@ -14,7 +14,7 @@ // started. class NaClThread : public ChildThread { public: - NaClThread(); + explicit NaClThread(bool debug); ~NaClThread(); // Returns the one NaCl thread. static NaClThread* current(); @@ -23,6 +23,8 @@ class NaClThread : public ChildThread { virtual void OnControlMessageReceived(const IPC::Message& msg); void OnStartSelLdr(std::vector<nacl::FileDescriptor> handles); + int debug_enabled_; + // TODO(gregoryd): do we need to override Cleanup as in PluginThread? DISALLOW_COPY_AND_ASSIGN(NaClThread); }; |