browser_ppapi_host.h revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
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#ifndef CONTENT_PUBLIC_BROWSER_BROWSER_PPAPI_HOST_H_ 6#define CONTENT_PUBLIC_BROWSER_BROWSER_PPAPI_HOST_H_ 7 8#include "base/callback_forward.h" 9#include "base/process.h" 10#include "content/common/content_export.h" 11#include "content/public/browser/render_view_host.h" 12#include "googleurl/src/gurl.h" 13#include "ppapi/c/pp_instance.h" 14 15namespace IPC { 16class ChannelProxy; 17struct ChannelHandle; 18class Sender; 19} 20 21namespace net { 22class HostResolver; 23} 24 25namespace ppapi { 26class PpapiPermissions; 27namespace host { 28class PpapiHost; 29} 30} 31 32namespace content { 33 34// Interface that allows components in the embedder app to talk to the 35// PpapiHost in the browser process. 36// 37// There will be one of these objects in the browser per plugin process. It 38// lives entirely on the I/O thread. 39class CONTENT_EXPORT BrowserPpapiHost { 40 public: 41 // Creates a browser host and sets up an out-of-process proxy for an external 42 // pepper plugin process. 43 static BrowserPpapiHost* CreateExternalPluginProcess( 44 IPC::Sender* sender, 45 ppapi::PpapiPermissions permissions, 46 base::ProcessHandle plugin_child_process, 47 IPC::ChannelProxy* channel, 48 net::HostResolver* host_resolver, 49 int render_process_id, 50 int render_view_id, 51 const base::FilePath& profile_directory); 52 53 virtual ~BrowserPpapiHost() {} 54 55 // Returns the PpapiHost object. 56 virtual ppapi::host::PpapiHost* GetPpapiHost() = 0; 57 58 // Returns the handle to the plugin process. 59 virtual base::ProcessHandle GetPluginProcessHandle() const = 0; 60 61 // Returns true if the given PP_Instance is valid. 62 virtual bool IsValidInstance(PP_Instance instance) const = 0; 63 64 // Retrieves the process/view Ids associated with the RenderView containing 65 // the given instance and returns true on success. If the instance is 66 // invalid, the ids will be 0 and false will be returned. 67 // 68 // When a resource is created, the PP_Instance should already have been 69 // validated, and the resource hosts will be deleted when the resource is 70 // destroyed. So it should not generally be necessary to check for errors 71 // from this function except as a last-minute sanity check if you convert the 72 // IDs to a RenderView/ProcessHost on the UI thread. 73 virtual bool GetRenderViewIDsForInstance(PP_Instance instance, 74 int* render_process_id, 75 int* render_view_id) const = 0; 76 77 // Returns the name of the plugin. 78 virtual const std::string& GetPluginName() = 0; 79 80 // Returns the path of the plugin. 81 virtual const base::FilePath& GetPluginPath() = 0; 82 83 // Returns the user's profile data directory. 84 virtual const base::FilePath& GetProfileDataDirectory() = 0; 85 86 // Get the Document/Plugin URLs for the given PP_Instance. 87 virtual GURL GetDocumentURLForInstance(PP_Instance instance) = 0; 88 virtual GURL GetPluginURLForInstance(PP_Instance instance) = 0; 89}; 90 91} // namespace content 92 93#endif // CONTENT_PUBLIC_BROWSER_BROWSER_PPAPI_HOST_H_ 94