OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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_RENDERER_PEPPER_PEPPER_PLUGIN_DELEGATE_H_ | 5 #ifndef CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_DELEGATE_H_ |
6 #define CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_DELEGATE_H_ | 6 #define CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_DELEGATE_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 22 matching lines...) Expand all Loading... |
33 namespace WebKit { | 33 namespace WebKit { |
34 class WebGamepads; | 34 class WebGamepads; |
35 class WebURLResponse; | 35 class WebURLResponse; |
36 struct WebCompositionUnderline; | 36 struct WebCompositionUnderline; |
37 struct WebCursorInfo; | 37 struct WebCursorInfo; |
38 } | 38 } |
39 | 39 |
40 namespace content { | 40 namespace content { |
41 class ContextProviderCommandBuffer; | 41 class ContextProviderCommandBuffer; |
42 class GamepadSharedMemoryReader; | 42 class GamepadSharedMemoryReader; |
43 class PepperBroker; | |
44 class PluginModule; | 43 class PluginModule; |
45 class PPB_Broker_Impl; | |
46 class RenderViewImpl; | 44 class RenderViewImpl; |
47 struct WebPluginInfo; | 45 struct WebPluginInfo; |
48 | 46 |
49 class PepperHelperImpl : public PepperHelper, | 47 class PepperHelperImpl : public PepperHelper, |
50 public base::SupportsWeakPtr<PepperHelperImpl>, | 48 public base::SupportsWeakPtr<PepperHelperImpl>, |
51 public RenderViewObserver { | 49 public RenderViewObserver { |
52 public: | 50 public: |
53 explicit PepperHelperImpl(RenderViewImpl* render_view); | 51 explicit PepperHelperImpl(RenderViewImpl* render_view); |
54 virtual ~PepperHelperImpl(); | 52 virtual ~PepperHelperImpl(); |
55 | 53 |
56 RenderViewImpl* render_view() { return render_view_; } | 54 RenderViewImpl* render_view() { return render_view_; } |
57 | 55 |
58 // A pointer is returned immediately, but it is not ready to be used until | |
59 // BrokerConnected has been called. | |
60 // The caller is responsible for calling Disconnect() on the returned pointer | |
61 // to clean up the corresponding resources allocated during this call. | |
62 PepperBroker* ConnectToBroker(PPB_Broker_Impl* client); | |
63 | |
64 // Removes broker from pending_connect_broker_ if present. Returns true if so. | |
65 bool StopWaitingForBrokerConnection(PepperBroker* broker); | |
66 | |
67 // Notifies that |instance| has changed the cursor. | 56 // Notifies that |instance| has changed the cursor. |
68 // This will update the cursor appearance if it is currently over the plugin | 57 // This will update the cursor appearance if it is currently over the plugin |
69 // instance. | 58 // instance. |
70 void DidChangeCursor(PepperPluginInstanceImpl* instance, | 59 void DidChangeCursor(PepperPluginInstanceImpl* instance, |
71 const WebKit::WebCursorInfo& cursor); | 60 const WebKit::WebCursorInfo& cursor); |
72 | 61 |
73 // Notifies that |instance| has received a mouse event. | 62 // Notifies that |instance| has received a mouse event. |
74 void DidReceiveMouseEvent(PepperPluginInstanceImpl* instance); | 63 void DidReceiveMouseEvent(PepperPluginInstanceImpl* instance); |
75 | 64 |
76 // Notification that the given plugin is focused or unfocused. | 65 // Notification that the given plugin is focused or unfocused. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 ui::Range* range) const OVERRIDE; | 123 ui::Range* range) const OVERRIDE; |
135 virtual void OnImeSetComposition( | 124 virtual void OnImeSetComposition( |
136 const string16& text, | 125 const string16& text, |
137 const std::vector<WebKit::WebCompositionUnderline>& underlines, | 126 const std::vector<WebKit::WebCompositionUnderline>& underlines, |
138 int selection_start, | 127 int selection_start, |
139 int selection_end) OVERRIDE; | 128 int selection_end) OVERRIDE; |
140 virtual void OnImeConfirmComposition(const string16& text) OVERRIDE; | 129 virtual void OnImeConfirmComposition(const string16& text) OVERRIDE; |
141 virtual void WillHandleMouseEvent() OVERRIDE; | 130 virtual void WillHandleMouseEvent() OVERRIDE; |
142 | 131 |
143 // RenderViewObserver implementation. | 132 // RenderViewObserver implementation. |
144 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; | |
145 virtual void OnDestruct() OVERRIDE; | 133 virtual void OnDestruct() OVERRIDE; |
146 | 134 |
147 void OnPpapiBrokerChannelCreated(int request_id, | |
148 base::ProcessId broker_pid, | |
149 const IPC::ChannelHandle& handle); | |
150 void OnPpapiBrokerPermissionResult(int request_id, bool result); | |
151 | |
152 // Attempts to create a PPAPI plugin for the given filepath. On success, it | 135 // Attempts to create a PPAPI plugin for the given filepath. On success, it |
153 // will return the newly-created module. | 136 // will return the newly-created module. |
154 // | 137 // |
155 // There are two reasons for failure. The first is that the plugin isn't | 138 // There are two reasons for failure. The first is that the plugin isn't |
156 // a PPAPI plugin. In this case, |*pepper_plugin_was_registered| will be set | 139 // a PPAPI plugin. In this case, |*pepper_plugin_was_registered| will be set |
157 // to false and the caller may want to fall back on creating an NPAPI plugin. | 140 // to false and the caller may want to fall back on creating an NPAPI plugin. |
158 // the second is that the plugin failed to initialize. In this case, | 141 // the second is that the plugin failed to initialize. In this case, |
159 // |*pepper_plugin_was_registered| will be set to true and the caller should | 142 // |*pepper_plugin_was_registered| will be set to true and the caller should |
160 // not fall back on any other plugin types. | 143 // not fall back on any other plugin types. |
161 scoped_refptr<PluginModule> CreatePepperPluginModule( | 144 scoped_refptr<PluginModule> CreatePepperPluginModule( |
162 const WebPluginInfo& webplugin_info, | 145 const WebPluginInfo& webplugin_info, |
163 bool* pepper_plugin_was_registered); | 146 bool* pepper_plugin_was_registered); |
164 | 147 |
165 // Asynchronously attempts to create a PPAPI broker for the given plugin. | |
166 scoped_refptr<PepperBroker> CreateBroker(PluginModule* plugin_module); | |
167 | |
168 // Create a new HostDispatcher for proxying, hook it to the PluginModule, | 148 // Create a new HostDispatcher for proxying, hook it to the PluginModule, |
169 // and perform other common initialization. | 149 // and perform other common initialization. |
170 RendererPpapiHost* CreateOutOfProcessModule( | 150 RendererPpapiHost* CreateOutOfProcessModule( |
171 PluginModule* module, | 151 PluginModule* module, |
172 const base::FilePath& path, | 152 const base::FilePath& path, |
173 ppapi::PpapiPermissions permissions, | 153 ppapi::PpapiPermissions permissions, |
174 const IPC::ChannelHandle& channel_handle, | 154 const IPC::ChannelHandle& channel_handle, |
175 base::ProcessId plugin_pid, | 155 base::ProcessId plugin_pid, |
176 int plugin_child_id, | 156 int plugin_child_id, |
177 bool is_external); | 157 bool is_external); |
178 | 158 |
179 // Pointer to the RenderView that owns us. | 159 // Pointer to the RenderView that owns us. |
180 RenderViewImpl* render_view_; | 160 RenderViewImpl* render_view_; |
181 | 161 |
182 std::set<PepperPluginInstanceImpl*> active_instances_; | 162 std::set<PepperPluginInstanceImpl*> active_instances_; |
183 | 163 |
184 typedef IDMap<scoped_refptr<PepperBroker>, IDMapOwnPointer> BrokerMap; | |
185 BrokerMap pending_connect_broker_; | |
186 | |
187 typedef IDMap<base::WeakPtr<PPB_Broker_Impl> > PermissionRequestMap; | |
188 PermissionRequestMap pending_permission_requests_; | |
189 | |
190 // Whether or not the focus is on a PPAPI plugin | 164 // Whether or not the focus is on a PPAPI plugin |
191 PepperPluginInstanceImpl* focused_plugin_; | 165 PepperPluginInstanceImpl* focused_plugin_; |
192 | 166 |
193 // Current text input composition text. Empty if no composition is in | 167 // Current text input composition text. Empty if no composition is in |
194 // progress. | 168 // progress. |
195 string16 composition_text_; | 169 string16 composition_text_; |
196 | 170 |
197 // The plugin instance that received the last mouse event. It is set to NULL | 171 // The plugin instance that received the last mouse event. It is set to NULL |
198 // if the last mouse event went to elements other than Pepper plugins. | 172 // if the last mouse event went to elements other than Pepper plugins. |
199 // |last_mouse_event_target_| is not owned by this class. We can know about | 173 // |last_mouse_event_target_| is not owned by this class. We can know about |
200 // when it is destroyed via InstanceDeleted(). | 174 // when it is destroyed via InstanceDeleted(). |
201 PepperPluginInstanceImpl* last_mouse_event_target_; | 175 PepperPluginInstanceImpl* last_mouse_event_target_; |
202 | 176 |
203 scoped_ptr<GamepadSharedMemoryReader> gamepad_shared_memory_reader_; | 177 scoped_ptr<GamepadSharedMemoryReader> gamepad_shared_memory_reader_; |
204 | 178 |
205 scoped_refptr<ContextProviderCommandBuffer> offscreen_context3d_; | 179 scoped_refptr<ContextProviderCommandBuffer> offscreen_context3d_; |
206 | 180 |
207 DISALLOW_COPY_AND_ASSIGN(PepperHelperImpl); | 181 DISALLOW_COPY_AND_ASSIGN(PepperHelperImpl); |
208 }; | 182 }; |
209 | 183 |
210 } // namespace content | 184 } // namespace content |
211 | 185 |
212 #endif // CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_DELEGATE_H_ | 186 #endif // CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_DELEGATE_H_ |
OLD | NEW |