181c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved. 281c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org// Use of this source code is governed by a BSD-style license that can be 381c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org// found in the LICENSE file. 4331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org 5331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org#include "content/browser/pepper_flash_settings_helper_impl.h" 6331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org 781c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org#include "base/files/file_path.h" 8331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org#include "content/browser/plugin_service_impl.h" 9331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org#include "content/public/browser/browser_thread.h" 10331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org#include "ipc/ipc_channel_handle.h" 11331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org 12331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.orgnamespace content { 1381c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 1481c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org// static 15331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.orgscoped_refptr<PepperFlashSettingsHelper> PepperFlashSettingsHelper::Create() { 16331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org return new PepperFlashSettingsHelperImpl(); 17331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org} 1881c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 19331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.orgPepperFlashSettingsHelperImpl::PepperFlashSettingsHelperImpl() { 20331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org} 21331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org 22331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.orgPepperFlashSettingsHelperImpl::~PepperFlashSettingsHelperImpl() { 23331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org} 24331dbc1b0c5a464d9ac9ce8348f5de6a928a936arouslan@chromium.org 2581c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.orgvoid PepperFlashSettingsHelperImpl::OpenChannelToBroker( 2681c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org const base::FilePath& path, 2781c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org const OpenChannelCallback& callback) { 2881c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 2981c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 3081c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org if (callback.is_null()) 3181c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org return; 3281c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org if (!callback_.is_null()) 3381c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org callback.Run(false, IPC::ChannelHandle()); 3481c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 3581c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org // Balanced in OnPpapiChannelOpened(). We need to keep this object around 3681c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org // until then. 3781c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org AddRef(); 3881c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 3981c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org callback_ = callback; 4081c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org PluginServiceImpl* plugin_service = PluginServiceImpl::GetInstance(); 4181c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org plugin_service->OpenChannelToPpapiBroker(0, path, this); 4281c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org} 4381c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 4481c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.orgvoid PepperFlashSettingsHelperImpl::GetPpapiChannelInfo( 4581c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org base::ProcessHandle* renderer_handle, 4681c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org int* renderer_id) { 4781c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org *renderer_handle = base::kNullProcessHandle; 4881c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org *renderer_id = 0; 4981c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org} 5081c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 5181c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.orgvoid PepperFlashSettingsHelperImpl::OnPpapiChannelOpened( 5281c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org const IPC::ChannelHandle& channel_handle, 5381c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org base::ProcessId /* plugin_pid */, 5481c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org int /* plugin_child_id */) { 5581c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 5681c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org DCHECK(!callback_.is_null()); 5781c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 5881c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org if (!channel_handle.name.empty()) 5981c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org callback_.Run(true, channel_handle); 6081c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org else 6181c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org callback_.Run(false, IPC::ChannelHandle()); 6281c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 6381c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org callback_.Reset(); 6481c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org // Balance the AddRef() call in Initialize(). 6581c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org Release(); 6681c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org} 6781c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 6881c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.orgbool PepperFlashSettingsHelperImpl::OffTheRecord() { 6981c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org return false; 7081c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org} 7181c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org 7281c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org} // namespace content 7381c8c04f6eabcb9a4d490308e3b22ea7b1f240efrouslan@chromium.org