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

Side by Side Diff: webkit/glue/webplugin_impl.h

Issue 181014: Eliminate remaining WebCore dependencies from webplugin_impl.cc... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 WEBKIT_GLUE_WEBPLUGIN_IMPL_H_ 5 #ifndef WEBKIT_GLUE_WEBPLUGIN_IMPL_H_
6 #define WEBKIT_GLUE_WEBPLUGIN_IMPL_H_ 6 #define WEBKIT_GLUE_WEBPLUGIN_IMPL_H_
7 7
8 #include <string> 8 #include <string>
9 #include <map> 9 #include <map>
10 #include <vector> 10 #include <vector>
11 11
12 #include "Widget.h"
13
14 #include "base/basictypes.h" 12 #include "base/basictypes.h"
15 #include "base/gfx/native_widget_types.h" 13 #include "base/gfx/native_widget_types.h"
16 #include "base/linked_ptr.h" 14 #include "base/linked_ptr.h"
15 #include "base/task.h"
16 #include "base/weak_ptr.h"
17 #include "googleurl/src/gurl.h"
17 #include "webkit/api/public/WebPlugin.h" 18 #include "webkit/api/public/WebPlugin.h"
19 #include "webkit/api/public/WebString.h"
18 #include "webkit/api/public/WebURLLoaderClient.h" 20 #include "webkit/api/public/WebURLLoaderClient.h"
19 #include "webkit/api/public/WebURLRequest.h" 21 #include "webkit/api/public/WebURLRequest.h"
20 #include "webkit/glue/webframe_impl.h" 22 #include "webkit/api/public/WebVector.h"
21 #include "webkit/glue/webplugin.h" 23 #include "webkit/glue/webplugin.h"
22 24
23 25 class WebViewDelegate;
24 class WebFrameImpl;
25 class WebPluginDelegate;
26
27 namespace WebCore {
28 class Event;
29 class Frame;
30 class HTMLPlugInElement;
31 class IntRect;
32 class KeyboardEvent;
33 class KURL;
34 class MouseEvent;
35 class ResourceError;
36 class ResourceResponse;
37 class ScrollView;
38 class String;
39 class Widget;
40 }
41 26
42 namespace WebKit { 27 namespace WebKit {
28 class WebFrame;
43 class WebPluginContainer; 29 class WebPluginContainer;
44 class WebURLResponse; 30 class WebURLResponse;
45 class WebURLLoader; 31 class WebURLLoader;
46 } 32 }
47 33
48 namespace webkit_glue { 34 namespace webkit_glue {
35
49 class MultipartResponseDelegate; 36 class MultipartResponseDelegate;
50 } 37 class WebPluginDelegate;
38 class WebPluginPageDelegate;
51 39
52 // This is the WebKit side of the plugin implementation that forwards calls, 40 // This is the WebKit side of the plugin implementation that forwards calls,
53 // after changing out of WebCore types, to a delegate. The delegate may 41 // after changing out of WebCore types, to a delegate. The delegate may
54 // be in a different process. 42 // be in a different process.
55 class WebPluginImpl : public WebPlugin, 43 class WebPluginImpl : public WebPlugin,
56 public WebKit::WebPlugin, 44 public WebKit::WebPlugin,
57 public WebKit::WebURLLoaderClient { 45 public WebKit::WebURLLoaderClient {
58 public: 46 public:
59 // Creates a WebPlugin instance, as long as the delegate's initialization 47 WebPluginImpl(
60 // succeeds. If it fails, the delegate is deleted and NULL is returned. 48 WebKit::WebFrame* frame,
61 // Note that argn and argv are UTF8. 49 const WebKit::WebPluginParams& params,
62 static PassRefPtr<WebCore::Widget> Create(const GURL& url, 50 const base::WeakPtr<WebPluginPageDelegate>& page_delegate);
63 char** argn, 51 ~WebPluginImpl();
64 char** argv,
65 int argc,
66 WebCore::HTMLPlugInElement* element,
67 WebFrameImpl* frame,
68 WebPluginDelegate* delegate,
69 bool load_manually,
70 const std::string& mime_type);
71 virtual ~WebPluginImpl();
72 52
73 // Helper function for sorting post data. 53 // Helper function for sorting post data.
74 static bool SetPostData(WebKit::WebURLRequest* request, 54 static bool SetPostData(WebKit::WebURLRequest* request,
75 const char* buf, 55 const char* buf,
76 uint32 length); 56 uint32 length);
77 57
78 private: 58 private:
79 WebPluginImpl(
80 WebFrameImpl* frame, WebPluginDelegate* delegate, const GURL& plugin_url,
81 bool load_manually, const std::string& mime_type, int arg_count,
82 char** arg_names, char** arg_values);
83
84 // WebKit::WebPlugin methods: 59 // WebKit::WebPlugin methods:
60 virtual bool initialize(
61 WebKit::WebPluginContainer* container);
85 virtual void destroy(); 62 virtual void destroy();
86 virtual NPObject* scriptableObject(); 63 virtual NPObject* scriptableObject();
87 virtual void paint( 64 virtual void paint(
88 WebKit::WebCanvas* canvas, const WebKit::WebRect& paint_rect); 65 WebKit::WebCanvas* canvas, const WebKit::WebRect& paint_rect);
89 virtual void updateGeometry( 66 virtual void updateGeometry(
90 const WebKit::WebRect& frame_rect, const WebKit::WebRect& clip_rect, 67 const WebKit::WebRect& frame_rect, const WebKit::WebRect& clip_rect,
91 const WebKit::WebVector<WebKit::WebRect>& cut_outs, bool is_visible); 68 const WebKit::WebVector<WebKit::WebRect>& cut_outs, bool is_visible);
92 virtual void updateFocus(bool focused); 69 virtual void updateFocus(bool focused);
93 virtual void updateVisibility(bool visible); 70 virtual void updateVisibility(bool visible);
94 virtual bool acceptsInputEvents(); 71 virtual bool acceptsInputEvents();
(...skipping 21 matching lines...) Expand all
116 93
117 // Executes the script passed in. The notify_needed and notify_data arguments 94 // Executes the script passed in. The notify_needed and notify_data arguments
118 // are passed in by the plugin process. These indicate whether the plugin 95 // are passed in by the plugin process. These indicate whether the plugin
119 // expects a notification on script execution. We pass them back to the 96 // expects a notification on script execution. We pass them back to the
120 // plugin as is. This avoids having to track the notification arguments in 97 // plugin as is. This avoids having to track the notification arguments in
121 // the plugin process. 98 // the plugin process.
122 bool ExecuteScript(const std::string& url, const std::wstring& script, 99 bool ExecuteScript(const std::string& url, const std::wstring& script,
123 bool notify_needed, intptr_t notify_data, 100 bool notify_needed, intptr_t notify_data,
124 bool popups_allowed); 101 bool popups_allowed);
125 102
103 enum RoutingStatus {
104 ROUTED,
105 NOT_ROUTED,
106 INVALID_URL,
107 GENERAL_FAILURE
108 };
109
126 // Given a download request, check if we need to route the output to a frame. 110 // Given a download request, check if we need to route the output to a frame.
127 // Returns ROUTED if the load is done and routed to a frame, NOT_ROUTED or 111 // Returns ROUTED if the load is done and routed to a frame, NOT_ROUTED or
128 // corresponding error codes otherwise. 112 // corresponding error codes otherwise.
129 RoutingStatus RouteToFrame(const char* method, bool is_javascript_url, 113 RoutingStatus RouteToFrame(const char* method, bool is_javascript_url,
130 const char* target, unsigned int len, 114 const char* target, unsigned int len,
131 const char* buf, bool is_file_data, 115 const char* buf, bool is_file_data,
132 bool notify_needed, intptr_t notify_data, 116 bool notify_needed, intptr_t notify_data,
133 const char* url, GURL* completeURL); 117 const char* url);
134 118
135 // Cancels a pending request. 119 // Cancels a pending request.
136 void CancelResource(int id); 120 void CancelResource(int id);
137 121
138 // Returns the next avaiable resource id. 122 // Returns the next avaiable resource id.
139 int GetNextResourceId(); 123 int GetNextResourceId();
140 124
141 // Initiates HTTP GET/POST requests. 125 // Initiates HTTP GET/POST requests.
142 // Returns true on success. 126 // Returns true on success.
143 bool InitiateHTTPRequest(int resource_id, WebPluginResourceClient* client, 127 bool InitiateHTTPRequest(int resource_id, WebPluginResourceClient* client,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 virtual void didFail(WebKit::WebURLLoader* loader, const WebKit::WebURLError&) ; 172 virtual void didFail(WebKit::WebURLLoader* loader, const WebKit::WebURLError&) ;
189 173
190 // Helper function to remove the stored information about a resource 174 // Helper function to remove the stored information about a resource
191 // request given its index in m_clients. 175 // request given its index in m_clients.
192 void RemoveClient(size_t i); 176 void RemoveClient(size_t i);
193 177
194 // Helper function to remove the stored information about a resource 178 // Helper function to remove the stored information about a resource
195 // request given a handle. 179 // request given a handle.
196 void RemoveClient(WebKit::WebURLLoader* loader); 180 void RemoveClient(WebKit::WebURLLoader* loader);
197 181
198 WebCore::Frame* frame() { return webframe_ ? webframe_->frame() : NULL; }
199
200 void HandleURLRequest(const char *method, 182 void HandleURLRequest(const char *method,
201 bool is_javascript_url, 183 bool is_javascript_url,
202 const char* target, unsigned int len, 184 const char* target, unsigned int len,
203 const char* buf, bool is_file_data, 185 const char* buf, bool is_file_data,
204 bool notify, const char* url, 186 bool notify, const char* url,
205 intptr_t notify_data, bool popups_allowed); 187 intptr_t notify_data, bool popups_allowed);
206 188
207 void CancelDocumentLoad(); 189 void CancelDocumentLoad();
208 190
209 void InitiateHTTPRangeRequest(const char* url, const char* range_info, 191 void InitiateHTTPRangeRequest(const char* url, const char* range_info,
(...skipping 14 matching lines...) Expand all
224 const char* target, unsigned int len, 206 const char* target, unsigned int len,
225 const char* buf, bool is_file_data, 207 const char* buf, bool is_file_data,
226 bool notify, const char* url, 208 bool notify, const char* url,
227 intptr_t notify_data, bool popups_allowed, 209 intptr_t notify_data, bool popups_allowed,
228 bool use_plugin_src_as_referrer); 210 bool use_plugin_src_as_referrer);
229 211
230 // Tears down the existing plugin instance and creates a new plugin instance 212 // Tears down the existing plugin instance and creates a new plugin instance
231 // to handle the response identified by the loader parameter. 213 // to handle the response identified by the loader parameter.
232 bool ReinitializePluginForResponse(WebKit::WebURLLoader* loader); 214 bool ReinitializePluginForResponse(WebKit::WebURLLoader* loader);
233 215
234 // Helper functions to convert an array of names/values to a vector.
235 static void ArrayToVector(int total_values, char** values,
236 std::vector<std::string>* value_vector);
237
238 // Delayed task for downloading the plugin source URL. 216 // Delayed task for downloading the plugin source URL.
239 void OnDownloadPluginSrcUrl(); 217 void OnDownloadPluginSrcUrl();
240 218
241 // Returns the WebViewDelegate associated with webframe_;
242 WebViewDelegate* GetWebViewDelegate();
243
244 struct ClientInfo { 219 struct ClientInfo {
245 int id; 220 int id;
246 WebPluginResourceClient* client; 221 WebPluginResourceClient* client;
247 WebKit::WebURLRequest request; 222 WebKit::WebURLRequest request;
248 bool pending_failure_notification; 223 bool pending_failure_notification;
249 linked_ptr<WebKit::WebURLLoader> loader; 224 linked_ptr<WebKit::WebURLLoader> loader;
250 }; 225 };
251 226
252 // Helper functions 227 // Helper functions
253 WebPluginResourceClient* GetClientFromLoader(WebKit::WebURLLoader* loader); 228 WebPluginResourceClient* GetClientFromLoader(WebKit::WebURLLoader* loader);
254 ClientInfo* GetClientInfoFromLoader(WebKit::WebURLLoader* loader); 229 ClientInfo* GetClientInfoFromLoader(WebKit::WebURLLoader* loader);
255 230
256 std::vector<ClientInfo> clients_; 231 std::vector<ClientInfo> clients_;
257 232
258 bool windowless_; 233 bool windowless_;
259 gfx::PluginWindowHandle window_; 234 gfx::PluginWindowHandle window_;
260 WebFrameImpl* webframe_; 235 base::WeakPtr<WebPluginPageDelegate> page_delegate_;
236 WebKit::WebFrame* webframe_;
261 237
262 WebPluginDelegate* delegate_; 238 WebPluginDelegate* delegate_;
263 239
264 // This is just a weak reference. 240 // This is just a weak reference.
265 WebKit::WebPluginContainer* container_; 241 WebKit::WebPluginContainer* container_;
266 242
267 typedef std::map<WebPluginResourceClient*, 243 typedef std::map<WebPluginResourceClient*,
268 webkit_glue::MultipartResponseDelegate*> 244 webkit_glue::MultipartResponseDelegate*>
269 MultiPartResponseHandlerMap; 245 MultiPartResponseHandlerMap;
270 // Tracks HTTP multipart response handlers instantiated for 246 // Tracks HTTP multipart response handlers instantiated for
(...skipping 12 matching lines...) Expand all
283 // Set to true if the next response error should be ignored. 259 // Set to true if the next response error should be ignored.
284 bool ignore_response_error_; 260 bool ignore_response_error_;
285 261
286 // The current plugin geometry and clip rectangle. 262 // The current plugin geometry and clip rectangle.
287 gfx::Rect window_rect_; 263 gfx::Rect window_rect_;
288 gfx::Rect clip_rect_; 264 gfx::Rect clip_rect_;
289 265
290 // The mime type of the plugin. 266 // The mime type of the plugin.
291 std::string mime_type_; 267 std::string mime_type_;
292 268
293 // Holds the list of argument names passed to the plugin. 269 // Holds the list of argument names and values passed to the plugin. We keep
294 std::vector<std::string> arg_names_; 270 // these so that we can re-initialize the plugin if we need to.
295 271 char** arg_names_;
296 // Holds the list of argument values passed to the plugin. 272 char** arg_values_;
297 std::vector<std::string> arg_values_; 273 size_t arg_count_;
298 274
299 ScopedRunnableMethodFactory<WebPluginImpl> method_factory_; 275 ScopedRunnableMethodFactory<WebPluginImpl> method_factory_;
300 276
301 DISALLOW_COPY_AND_ASSIGN(WebPluginImpl); 277 DISALLOW_COPY_AND_ASSIGN(WebPluginImpl);
302 }; 278 };
303 279
280 } // namespace webkit_glue
281
304 #endif // #ifndef WEBKIT_GLUE_WEBPLUGIN_IMPL_H_ 282 #endif // #ifndef WEBKIT_GLUE_WEBPLUGIN_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698