1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_NACL_BROWSER_NACL_BROKER_HOST_WIN_H_ 6 #define COMPONENTS_NACL_BROWSER_NACL_BROKER_HOST_WIN_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "base/process/process.h" 13 #include "content/public/browser/browser_child_process_host_delegate.h" 14 15 namespace content { 16 class BrowserChildProcessHost; 17 } 18 19 namespace nacl { 20 21 class NaClBrokerHost : public content::BrowserChildProcessHostDelegate { 22 public: 23 NaClBrokerHost(); 24 ~NaClBrokerHost(); 25 26 // This function starts the broker process. It needs to be called 27 // before loaders can be launched. 28 bool Init(); 29 30 // Send a message to the broker process, causing it to launch 31 // a Native Client loader process. 32 bool LaunchLoader(const std::string& loader_channel_id); 33 34 bool LaunchDebugExceptionHandler(int32 pid, 35 base::ProcessHandle process_handle, 36 const std::string& startup_info); 37 38 // Stop the broker process. 39 void StopBroker(); 40 41 // Returns true if the process has been asked to terminate. If true, this 42 // object should no longer be used; it will eventually be destroyed by 43 // BrowserChildProcessHostImpl::OnChildDisconnected() 44 bool IsTerminating() { return is_terminating_; } 45 46 private: 47 // Handler for NaClProcessMsg_LoaderLaunched message 48 void OnLoaderLaunched(const std::string& loader_channel_id, 49 base::ProcessHandle handle); 50 // Handler for NaClProcessMsg_DebugExceptionHandlerLaunched message 51 void OnDebugExceptionHandlerLaunched(int32 pid, bool success); 52 53 // BrowserChildProcessHostDelegate implementation: 54 virtual bool OnMessageReceived(const IPC::Message& msg); 55 56 scoped_ptr<content::BrowserChildProcessHost> process_; 57 bool is_terminating_; 58 59 DISALLOW_COPY_AND_ASSIGN(NaClBrokerHost); 60 }; 61 62 } // namespace nacl 63 64 #endif // COMPONENTS_NACL_BROWSER_NACL_BROKER_HOST_WIN_H_ 65