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

Side by Side Diff: content/renderer/npapi/webplugin_impl.h

Issue 1853793003: Remove content/renderer/npapi (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 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
OLDNEW
(Empty)
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_RENDERER_NPAPI_WEBPLUGIN_IMPL_H_
6 #define CONTENT_RENDERER_NPAPI_WEBPLUGIN_IMPL_H_
7
8 #include <stddef.h>
9 #include <stdint.h>
10
11 #include <map>
12 #include <string>
13 #include <vector>
14
15 #include "base/files/file_path.h"
16 #include "base/macros.h"
17 #include "base/memory/scoped_ptr.h"
18 #include "base/memory/weak_ptr.h"
19 #include "build/build_config.h"
20 #include "content/child/npapi/webplugin.h"
21 #include "content/common/content_export.h"
22 #include "content/common/webplugin_geometry.h"
23 #include "third_party/WebKit/public/platform/WebRect.h"
24 #include "third_party/WebKit/public/platform/WebString.h"
25 #include "third_party/WebKit/public/platform/WebURLRequest.h"
26 #include "third_party/WebKit/public/platform/WebVector.h"
27 #include "third_party/WebKit/public/web/WebPlugin.h"
28 #include "ui/gfx/native_widget_types.h"
29 #include "url/gurl.h"
30
31 namespace cc {
32 class IOSurfaceLayer;
33 }
34
35 namespace blink {
36 class WebFrame;
37 class WebLayer;
38 class WebPluginContainer;
39 class WebURLResponse;
40 class WebURLLoader;
41 class WebURLRequest;
42 struct WebPluginParams;
43 }
44
45 namespace content {
46 class MultipartResponseDelegate;
47 class RenderFrameImpl;
48 class RenderViewImpl;
49 class WebPluginDelegateProxy;
50
51 // This is the WebKit side of the plugin implementation that forwards calls,
52 // after changing out of WebCore types, to a delegate. The delegate may
53 // be in a different process.
54 class WebPluginImpl : public WebPlugin,
55 public blink::WebPlugin {
56 public:
57 WebPluginImpl(
58 blink::WebFrame* frame,
59 const blink::WebPluginParams& params,
60 const base::FilePath& file_path,
61 const base::WeakPtr<RenderViewImpl>& render_view,
62 RenderFrameImpl* render_frame);
63 ~WebPluginImpl() override;
64
65 // Helper function for sorting post data.
66 CONTENT_EXPORT static bool SetPostData(blink::WebURLRequest* request,
67 const char* buf,
68 uint32_t length);
69
70 blink::WebFrame* webframe() { return webframe_; }
71
72 // blink::WebPlugin methods:
73 bool initialize(blink::WebPluginContainer* container) override;
74 void destroy() override;
75 void updateAllLifecyclePhases() override;
76 void paint(blink::WebCanvas* canvas,
77 const blink::WebRect& paint_rect) override;
78 void updateGeometry(const blink::WebRect& window_rect,
79 const blink::WebRect& clip_rect,
80 const blink::WebRect& unobscured_rect,
81 const blink::WebVector<blink::WebRect>& cut_outs_rects,
82 bool is_visible) override;
83 void updateFocus(bool focused, blink::WebFocusType focus_type) override;
84 void updateVisibility(bool visible) override;
85 bool acceptsInputEvents() override;
86 blink::WebInputEventResult handleInputEvent(
87 const blink::WebInputEvent& event,
88 blink::WebCursorInfo& cursor_info) override;
89 void didReceiveResponse(const blink::WebURLResponse& response) override {}
90 void didReceiveData(const char* data, int data_length) override {}
91 void didFinishLoading() override {}
92 void didFailLoading(const blink::WebURLError& error) override {}
93 bool isPlaceholder() override;
94
95 // WebPlugin implementation:
96 void Invalidate() override;
97 void InvalidateRect(const gfx::Rect& rect) override;
98 bool FindProxyForUrl(const GURL& url, std::string* proxy_list) override;
99 void SetCookie(const GURL& url,
100 const GURL& first_party_for_cookies,
101 const std::string& cookie) override;
102 std::string GetCookies(const GURL& url,
103 const GURL& first_party_for_cookies) override;
104 void CancelDocumentLoad() override;
105 void DidStartLoading() override;
106 void DidStopLoading() override;
107 bool IsOffTheRecord() override;
108 #if defined(OS_MACOSX)
109 WebPluginAcceleratedSurface* GetAcceleratedSurface(
110 gfx::GpuPreference gpu_preference) override;
111 void AcceleratedPluginEnabledRendering() override;
112 void AcceleratedPluginAllocatedIOSurface(int32_t width,
113 int32_t height,
114 uint32_t surface_id) override;
115 void AcceleratedPluginSwappedIOSurface() override;
116 #endif
117
118 private:
119 // Given a (maybe partial) url, completes using the base url.
120 GURL CompleteURL(const char* url);
121
122 enum RoutingStatus {
123 ROUTED,
124 NOT_ROUTED,
125 INVALID_URL,
126 GENERAL_FAILURE
127 };
128
129 // Determines the referrer value sent along with outgoing HTTP requests
130 // issued by plugins.
131 enum ReferrerValue {
132 PLUGIN_SRC,
133 DOCUMENT_URL,
134 NO_REFERRER
135 };
136
137 // Given a download request, check if we need to route the output to a frame.
138 // Returns ROUTED if the load is done and routed to a frame, NOT_ROUTED or
139 // corresponding error codes otherwise.
140 RoutingStatus RouteToFrame(const char* url,
141 bool is_javascript_url,
142 bool popups_allowed,
143 const char* method,
144 const char* target,
145 const char* buf,
146 unsigned int len,
147 ReferrerValue referrer_flag);
148
149 // Returns the next avaiable resource id. Returns 0 if the operation fails.
150 // It may fail if the page has already been closed.
151 unsigned long GetNextResourceId();
152
153 gfx::Rect GetWindowClipRect(const gfx::Rect& rect);
154
155 // Sets the actual Widget for the plugin.
156 void SetContainer(blink::WebPluginContainer* container);
157
158 // Destroys the plugin instance.
159 // The response_handle_to_ignore parameter if not NULL indicates the
160 // resource handle to be left valid during plugin shutdown.
161 void TearDownPluginInstance(blink::WebURLLoader* loader_to_ignore);
162
163 // Tears down the existing plugin instance and creates a new plugin instance
164 // to handle the response identified by the loader parameter.
165 bool ReinitializePluginForResponse(blink::WebURLLoader* loader);
166
167
168 // Helper function to set the referrer on the request passed in.
169 void SetReferrer(blink::WebURLRequest* request, ReferrerValue referrer_flag);
170
171 // Check for invalid chars like @, ;, \ before the first / (in path).
172 bool IsValidUrl(const GURL& url, ReferrerValue referrer_flag);
173
174 #if defined(OS_MACOSX)
175 bool next_io_surface_allocated_;
176 int32_t next_io_surface_width_;
177 int32_t next_io_surface_height_;
178 uint32_t next_io_surface_id_;
179 scoped_refptr<cc::IOSurfaceLayer> io_surface_layer_;
180 scoped_ptr<blink::WebLayer> web_layer_;
181 #endif
182 RenderFrameImpl* render_frame_;
183 base::WeakPtr<RenderViewImpl> render_view_;
184 blink::WebFrame* webframe_;
185
186 WebPluginDelegateProxy* delegate_;
187
188 // This is just a weak reference.
189 blink::WebPluginContainer* container_;
190
191 // The plugin source URL.
192 GURL plugin_url_;
193
194 // Indicates if the download would be initiated by the plugin or us.
195 bool load_manually_;
196
197 // Indicates if this is the first geometry update received by the plugin.
198 bool first_geometry_update_;
199
200 // Set to true if the next response error should be ignored.
201 bool ignore_response_error_;
202
203 // The current plugin geometry and clip rectangle.
204 WebPluginGeometry geometry_;
205
206 // The location of the plugin on disk.
207 base::FilePath file_path_;
208
209 // The mime type of the plugin.
210 std::string mime_type_;
211
212 // Holds the list of argument names and values passed to the plugin. We keep
213 // these so that we can re-initialize the plugin if we need to.
214 std::vector<std::string> arg_names_;
215 std::vector<std::string> arg_values_;
216
217 DISALLOW_COPY_AND_ASSIGN(WebPluginImpl);
218 };
219
220 } // namespace content
221
222 #endif // CONTENT_RENDERER_NPAPI_WEBPLUGIN_IMPL_H_
OLDNEW
« no previous file with comments | « content/renderer/npapi/webplugin_delegate_proxy.cc ('k') | content/renderer/npapi/webplugin_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698