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#include "content/browser/pepper_flash_settings_helper_impl.h" 6 7#include "base/files/file_path.h" 8#include "content/browser/plugin_service_impl.h" 9#include "content/public/browser/browser_thread.h" 10#include "ipc/ipc_channel_handle.h" 11 12namespace content { 13 14// static 15scoped_refptr<PepperFlashSettingsHelper> PepperFlashSettingsHelper::Create() { 16 return new PepperFlashSettingsHelperImpl(); 17} 18 19PepperFlashSettingsHelperImpl::PepperFlashSettingsHelperImpl() { 20} 21 22PepperFlashSettingsHelperImpl::~PepperFlashSettingsHelperImpl() { 23} 24 25void PepperFlashSettingsHelperImpl::OpenChannelToBroker( 26 const base::FilePath& path, 27 const OpenChannelCallback& callback) { 28 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 29 30 if (callback.is_null()) 31 return; 32 if (!callback_.is_null()) 33 callback.Run(false, IPC::ChannelHandle()); 34 35 // Balanced in OnPpapiChannelOpened(). We need to keep this object around 36 // until then. 37 AddRef(); 38 39 callback_ = callback; 40 PluginServiceImpl* plugin_service = PluginServiceImpl::GetInstance(); 41 plugin_service->OpenChannelToPpapiBroker(0, path, this); 42} 43 44void PepperFlashSettingsHelperImpl::GetPpapiChannelInfo( 45 base::ProcessHandle* renderer_handle, 46 int* renderer_id) { 47 *renderer_handle = base::kNullProcessHandle; 48 *renderer_id = 0; 49} 50 51void PepperFlashSettingsHelperImpl::OnPpapiChannelOpened( 52 const IPC::ChannelHandle& channel_handle, 53 base::ProcessId /* plugin_pid */, 54 int /* plugin_child_id */) { 55 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 56 DCHECK(!callback_.is_null()); 57 58 if (!channel_handle.name.empty()) 59 callback_.Run(true, channel_handle); 60 else 61 callback_.Run(false, IPC::ChannelHandle()); 62 63 callback_.Reset(); 64 // Balance the AddRef() call in Initialize(). 65 Release(); 66} 67 68bool PepperFlashSettingsHelperImpl::OffTheRecord() { 69 return false; 70} 71 72} // namespace content 73