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.
5 #ifndef CHROME_NACL_NACL_BROKER_LISTENER_H_
6 #define CHROME_NACL_NACL_BROKER_LISTENER_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "base/process.h"
10 #include "chrome/common/nacl_types.h"
11 #include "content/public/common/sandboxed_process_launcher_delegate.h"
12 #include "ipc/ipc_listener.h"
18 // The BrokerThread class represents the thread that handles the messages from
19 // the browser process and starts NaCl loader processes.
20 class NaClBrokerListener
: public content::SandboxedProcessLauncherDelegate
,
21 public IPC::Listener
{
24 ~NaClBrokerListener();
28 // content::SandboxedProcessLauncherDelegate implementation:
29 virtual void PreSpawnTarget(sandbox::TargetPolicy
* policy
,
30 bool* success
) OVERRIDE
;
32 // IPC::Listener implementation.
33 virtual void OnChannelConnected(int32 peer_pid
) OVERRIDE
;
34 virtual bool OnMessageReceived(const IPC::Message
& msg
) OVERRIDE
;
35 virtual void OnChannelError() OVERRIDE
;
38 void OnLaunchLoaderThroughBroker(const std::string
& loader_channel_id
);
39 void OnLaunchDebugExceptionHandler(int32 pid
,
40 base::ProcessHandle process_handle
,
41 const std::string
& startup_info
);
44 base::ProcessHandle browser_handle_
;
45 scoped_ptr
<IPC::Channel
> channel_
;
47 DISALLOW_COPY_AND_ASSIGN(NaClBrokerListener
);
50 #endif // CHROME_NACL_NACL_BROKER_LISTENER_H_