Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1271)

Side by Side Diff: content/browser/ppapi_plugin_process_host.h

Issue 7044012: Support getting the font list in Pepper. This currently only works out of (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/browser/plugin_service.cc ('k') | content/browser/ppapi_plugin_process_host.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_BROWSER_PPAPI_PLUGIN_PROCESS_HOST_H_ 5 #ifndef CONTENT_BROWSER_PPAPI_PLUGIN_PROCESS_HOST_H_
6 #define CONTENT_BROWSER_PPAPI_PLUGIN_PROCESS_HOST_H_ 6 #define CONTENT_BROWSER_PPAPI_PLUGIN_PROCESS_HOST_H_
7 #pragma once 7 #pragma once
8 8
9 #include <queue> 9 #include <queue>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/file_path.h" 12 #include "base/file_path.h"
13 #include "base/memory/ref_counted.h"
13 #include "content/browser/browser_child_process_host.h" 14 #include "content/browser/browser_child_process_host.h"
15 #include "content/browser/renderer_host/pepper_message_filter.h"
14 16
15 struct PepperPluginInfo; 17 struct PepperPluginInfo;
16 18
19 namespace content {
20 class ResourceContext;
21 }
22
23 namespace net {
24 class HostResolver;
25 }
26
17 class PpapiPluginProcessHost : public BrowserChildProcessHost { 27 class PpapiPluginProcessHost : public BrowserChildProcessHost {
18 public: 28 public:
19 class Client { 29 class Client {
20 public: 30 public:
21 // Gets the information about the renderer that's requesting the channel. 31 // Gets the information about the renderer that's requesting the channel.
22 virtual void GetChannelInfo(base::ProcessHandle* renderer_handle, 32 virtual void GetChannelInfo(base::ProcessHandle* renderer_handle,
23 int* renderer_id) = 0; 33 int* renderer_id) = 0;
24 34
25 // Called when the channel is asynchronously opened to the plugin or on 35 // Called when the channel is asynchronously opened to the plugin or on
26 // error. On error, the parameters should be: 36 // error. On error, the parameters should be:
27 // base::kNullProcessHandle 37 // base::kNullProcessHandle
28 // IPC::ChannelHandle() 38 // IPC::ChannelHandle()
29 virtual void OnChannelOpened(base::ProcessHandle plugin_process_handle, 39 virtual void OnChannelOpened(base::ProcessHandle plugin_process_handle,
30 const IPC::ChannelHandle& channel_handle) = 0; 40 const IPC::ChannelHandle& channel_handle) = 0;
41
42 // Returns the resource context for the renderer requesting the channel.
43 virtual const content::ResourceContext* GetResourceContext() = 0;
31 }; 44 };
32 45
33 // You must call Init before doing anything else. 46 // You must call Init before doing anything else.
34 PpapiPluginProcessHost(); 47 PpapiPluginProcessHost(net::HostResolver* host_resolver);
35 virtual ~PpapiPluginProcessHost(); 48 virtual ~PpapiPluginProcessHost();
36 49
37 // Actually launches the process with the given plugin info. Returns true 50 // Actually launches the process with the given plugin info. Returns true
38 // on success (the process was spawned). 51 // on success (the process was spawned).
39 bool Init(const PepperPluginInfo& info); 52 bool Init(const PepperPluginInfo& info);
40 53
41 // Opens a new channel to the plugin. The client will be notified when the 54 // Opens a new channel to the plugin. The client will be notified when the
42 // channel is ready or if there's an error. 55 // channel is ready or if there's an error.
43 void OpenChannelToPlugin(Client* client); 56 void OpenChannelToPlugin(Client* client);
44 57
45 const FilePath& plugin_path() const { return plugin_path_; } 58 const FilePath& plugin_path() const { return plugin_path_; }
46 59
47 // The client pointer must remain valid until its callback is issued. 60 // The client pointer must remain valid until its callback is issued.
48 61
49 private: 62 private:
50
51 void RequestPluginChannel(Client* client); 63 void RequestPluginChannel(Client* client);
52 64
53 virtual bool CanShutdown(); 65 virtual bool CanShutdown();
54 virtual void OnProcessLaunched(); 66 virtual void OnProcessLaunched();
55 67
56 virtual bool OnMessageReceived(const IPC::Message& msg); 68 virtual bool OnMessageReceived(const IPC::Message& msg);
57 virtual void OnChannelConnected(int32 peer_pid); 69 virtual void OnChannelConnected(int32 peer_pid);
58 virtual void OnChannelError(); 70 virtual void OnChannelError();
59 71
60 void CancelRequests(); 72 void CancelRequests();
61 73
62 // IPC message handlers. 74 // IPC message handlers.
63 void OnRendererPluginChannelCreated(const IPC::ChannelHandle& handle); 75 void OnRendererPluginChannelCreated(const IPC::ChannelHandle& handle);
64 76
77 // Handles most requests from the plugin.
78 scoped_refptr<PepperMessageFilter> filter_;
79
65 // Channel requests that we are waiting to send to the plugin process once 80 // Channel requests that we are waiting to send to the plugin process once
66 // the channel is opened. 81 // the channel is opened.
67 std::vector<Client*> pending_requests_; 82 std::vector<Client*> pending_requests_;
68 83
69 // Channel requests that we have already sent to the plugin process, but 84 // Channel requests that we have already sent to the plugin process, but
70 // haven't heard back about yet. 85 // haven't heard back about yet.
71 std::queue<Client*> sent_requests_; 86 std::queue<Client*> sent_requests_;
72 87
73 // Path to the plugin library. 88 // Path to the plugin library.
74 FilePath plugin_path_; 89 FilePath plugin_path_;
75 90
76 DISALLOW_COPY_AND_ASSIGN(PpapiPluginProcessHost); 91 DISALLOW_COPY_AND_ASSIGN(PpapiPluginProcessHost);
77 }; 92 };
78 93
79 #endif // CONTENT_BROWSER_PPAPI_PLUGIN_PROCESS_HOST_H_ 94 #endif // CONTENT_BROWSER_PPAPI_PLUGIN_PROCESS_HOST_H_
80 95
OLDNEW
« no previous file with comments | « content/browser/plugin_service.cc ('k') | content/browser/ppapi_plugin_process_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698