1 // Copyright 2014 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_LOADER_NACL_TRUSTED_LISTENER_H_ 6 #define COMPONENTS_NACL_LOADER_NACL_TRUSTED_LISTENER_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "ipc/ipc_channel_handle.h" 10 #include "ipc/ipc_channel_proxy.h" 11 #include "ipc/ipc_listener.h" 12 13 namespace base { 14 class SingleThreadTaskRunner; 15 } 16 17 class NaClTrustedListener : public base::RefCounted<NaClTrustedListener>, 18 public IPC::Listener { 19 public: 20 NaClTrustedListener(const IPC::ChannelHandle& handle, 21 base::SingleThreadTaskRunner* ipc_task_runner); 22 23 #if defined(OS_POSIX) 24 int TakeClientFileDescriptor(); 25 #endif 26 27 // Listener implementation. 28 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 29 virtual void OnChannelError() OVERRIDE; 30 31 bool Send(IPC::Message* msg); 32 33 private: 34 friend class base::RefCounted<NaClTrustedListener>; 35 virtual ~NaClTrustedListener(); 36 scoped_ptr<IPC::ChannelProxy> channel_proxy_; 37 38 DISALLOW_COPY_AND_ASSIGN(NaClTrustedListener); 39 }; 40 41 #endif // COMPONENTS_NACL_LOADER_NACL_TRUSTED_LISTENER_H_ 42