trusted_plugin_channel.cc revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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#include "components/nacl/renderer/trusted_plugin_channel.h" 6 7#include "base/callback_helpers.h" 8#include "content/public/renderer/render_thread.h" 9#include "ipc/ipc_channel.h" 10#include "ipc/ipc_sync_channel.h" 11#include "ppapi/c/pp_errors.h" 12 13namespace nacl { 14 15TrustedPluginChannel::TrustedPluginChannel( 16 const IPC::ChannelHandle& handle, 17 const base::Callback<void(int32_t)>& connected_callback, 18 base::WaitableEvent* waitable_event) 19 : connected_callback_(connected_callback), 20 channel_(new IPC::SyncChannel( 21 handle, IPC::Channel::MODE_CLIENT, this, 22 content::RenderThread::Get()->GetIOMessageLoopProxy(), true, 23 waitable_event)) { 24} 25 26TrustedPluginChannel::~TrustedPluginChannel() { 27 if (!connected_callback_.is_null()) 28 base::ResetAndReturn(&connected_callback_).Run(PP_ERROR_FAILED); 29} 30 31bool TrustedPluginChannel::Send(IPC::Message* message) { 32 return channel_->Send(message); 33} 34 35bool TrustedPluginChannel::OnMessageReceived(const IPC::Message& message) { 36 return false; 37} 38 39void TrustedPluginChannel::OnChannelConnected(int32 peer_pid) { 40 if (!connected_callback_.is_null()) 41 base::ResetAndReturn(&connected_callback_).Run(PP_OK); 42} 43 44void TrustedPluginChannel::OnChannelError() { 45 if (!connected_callback_.is_null()) 46 base::ResetAndReturn(&connected_callback_).Run(PP_ERROR_FAILED); 47} 48 49} // namespace nacl 50