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 12 namespace content { 13 14 // static 15 scoped_refptr<PepperFlashSettingsHelper> PepperFlashSettingsHelper::Create() { 16 return new PepperFlashSettingsHelperImpl(); 17 } 18 19 PepperFlashSettingsHelperImpl::PepperFlashSettingsHelperImpl() { 20 } 21 22 PepperFlashSettingsHelperImpl::~PepperFlashSettingsHelperImpl() { 23 } 24 25 void 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 44 void PepperFlashSettingsHelperImpl::GetPpapiChannelInfo( 45 base::ProcessHandle* renderer_handle, 46 int* renderer_id) { 47 *renderer_handle = base::kNullProcessHandle; 48 *renderer_id = 0; 49 } 50 51 void 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 68 bool PepperFlashSettingsHelperImpl::OffTheRecord() { 69 return false; 70 } 71 72 } // namespace content 73