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

Side by Side Diff: chrome/plugin/webplugin_proxy.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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 CHROME_PLUGIN_PLUGIN_WEBPLUGIN_PROXY_H__ 5 #ifndef CHROME_PLUGIN_PLUGIN_WEBPLUGIN_PROXY_H__
6 #define CHROME_PLUGIN_PLUGIN_WEBPLUGIN_PROXY_H__ 6 #define CHROME_PLUGIN_PLUGIN_WEBPLUGIN_PROXY_H__
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/hash_tables.h" 10 #include "base/hash_tables.h"
11 #include "base/ref_counted.h" 11 #include "base/ref_counted.h"
12 #if defined(OS_MACOSX) 12 #if defined(OS_MACOSX)
13 #include "base/scoped_cftyperef.h" 13 #include "base/scoped_cftyperef.h"
14 #endif 14 #endif
15 #include "base/scoped_handle.h" 15 #include "base/scoped_handle.h"
16 #include "base/scoped_ptr.h" 16 #include "base/scoped_ptr.h"
17 #include "base/shared_memory.h" 17 #include "base/shared_memory.h"
18 #include "base/timer.h" 18 #include "base/timer.h"
19 #include "chrome/common/chrome_plugin_api.h" 19 #include "chrome/common/chrome_plugin_api.h"
20 #include "chrome/common/transport_dib.h" 20 #include "chrome/common/transport_dib.h"
21 #include "googleurl/src/gurl.h" 21 #include "googleurl/src/gurl.h"
22 #include "ipc/ipc_message.h" 22 #include "ipc/ipc_message.h"
23 #include "webkit/glue/webplugin.h" 23 #include "webkit/glue/webplugin.h"
24 24
25 class PluginChannel;
26
25 namespace base { 27 namespace base {
26 class WaitableEvent; 28 class WaitableEvent;
27 } 29 }
28 30
29 class PluginChannel; 31 namespace webkit_glue {
30 class WebPluginDelegate; 32 class WebPluginDelegate;
33 }
31 34
32 // This is an implementation of WebPlugin that proxies all calls to the 35 // This is an implementation of WebPlugin that proxies all calls to the
33 // renderer. 36 // renderer.
34 class WebPluginProxy : public WebPlugin { 37 class WebPluginProxy : public webkit_glue::WebPlugin {
35 public: 38 public:
36 // Creates a new proxy for WebPlugin, using the given sender to send the 39 // Creates a new proxy for WebPlugin, using the given sender to send the
37 // marshalled WebPlugin calls. 40 // marshalled WebPlugin calls.
38 WebPluginProxy(PluginChannel* channel, 41 WebPluginProxy(PluginChannel* channel,
39 int route_id, 42 int route_id,
40 WebPluginDelegate* delegate,
41 const GURL& page_url); 43 const GURL& page_url);
42 ~WebPluginProxy(); 44 ~WebPluginProxy();
43 45
46 void set_delegate(webkit_glue::WebPluginDelegate* d) { delegate_ = d; }
47
44 // WebPlugin overrides 48 // WebPlugin overrides
45 void SetWindow(gfx::PluginWindowHandle window); 49 void SetWindow(gfx::PluginWindowHandle window);
46 void WillDestroyWindow(gfx::PluginWindowHandle window); 50 void WillDestroyWindow(gfx::PluginWindowHandle window);
47 #if defined(OS_WIN) 51 #if defined(OS_WIN)
48 void SetWindowlessPumpEvent(HANDLE pump_messages_event); 52 void SetWindowlessPumpEvent(HANDLE pump_messages_event);
49 // Returns true on success. 53 // Returns true on success.
50 bool SetModalDialogEvent(HANDLE modal_dialog_event); 54 bool SetModalDialogEvent(HANDLE modal_dialog_event);
51 #endif 55 #endif
52 void CancelResource(int id); 56 void CancelResource(int id);
53 void Invalidate(); 57 void Invalidate();
(...skipping 22 matching lines...) Expand all
76 // Retrieves the browsing context associated with the renderer this plugin 80 // Retrieves the browsing context associated with the renderer this plugin
77 // is in. Calling multiple times will return the same value. 81 // is in. Calling multiple times will return the same value.
78 CPBrowsingContext GetCPBrowsingContext(); 82 CPBrowsingContext GetCPBrowsingContext();
79 83
80 // Retrieves the WebPluginProxy for the given context that was returned by 84 // Retrieves the WebPluginProxy for the given context that was returned by
81 // GetCPBrowsingContext, or NULL if not found. 85 // GetCPBrowsingContext, or NULL if not found.
82 static WebPluginProxy* FromCPBrowsingContext(CPBrowsingContext context); 86 static WebPluginProxy* FromCPBrowsingContext(CPBrowsingContext context);
83 87
84 // Returns a WebPluginResourceClient object given its id, or NULL if no 88 // Returns a WebPluginResourceClient object given its id, or NULL if no
85 // object with that id exists. 89 // object with that id exists.
86 WebPluginResourceClient* GetResourceClient(int id); 90 webkit_glue::WebPluginResourceClient* GetResourceClient(int id);
87 91
88 // Returns the process id of the renderer that contains this plugin. 92 // Returns the process id of the renderer that contains this plugin.
89 int GetRendererProcessId(); 93 int GetRendererProcessId();
90 94
91 // For windowless plugins, paints the given rectangle into the local buffer. 95 // For windowless plugins, paints the given rectangle into the local buffer.
92 void Paint(const gfx::Rect& rect); 96 void Paint(const gfx::Rect& rect);
93 97
94 // Callback from the renderer to let us know that a paint occurred. 98 // Callback from the renderer to let us know that a paint occurred.
95 void DidPaint(); 99 void DidPaint();
96 100
(...skipping 18 matching lines...) Expand all
115 void InitiateHTTPRangeRequest(const char* url, 119 void InitiateHTTPRangeRequest(const char* url,
116 const char* range_info, 120 const char* range_info,
117 intptr_t existing_stream, 121 intptr_t existing_stream,
118 bool notify_needed, 122 bool notify_needed,
119 intptr_t notify_data); 123 intptr_t notify_data);
120 124
121 void SetDeferResourceLoading(int resource_id, bool defer); 125 void SetDeferResourceLoading(int resource_id, bool defer);
122 126
123 bool IsOffTheRecord(); 127 bool IsOffTheRecord();
124 128
125 void ResourceClientDeleted(WebPluginResourceClient* resource_client); 129 void ResourceClientDeleted(
130 webkit_glue::WebPluginResourceClient* resource_client);
126 131
127 base::WaitableEvent* modal_dialog_event() { 132 base::WaitableEvent* modal_dialog_event() {
128 return modal_dialog_event_.get(); 133 return modal_dialog_event_.get();
129 } 134 }
130 135
131 private: 136 private:
132 bool Send(IPC::Message* msg); 137 bool Send(IPC::Message* msg);
133 138
134 // Handler for sending over the paint event to the plugin. 139 // Handler for sending over the paint event to the plugin.
135 void OnPaint(const gfx::Rect& damaged_rect); 140 void OnPaint(const gfx::Rect& damaged_rect);
136 141
137 // Updates the shared memory section where windowless plugins paint. 142 // Updates the shared memory section where windowless plugins paint.
138 void SetWindowlessBuffer(const TransportDIB::Handle& windowless_buffer, 143 void SetWindowlessBuffer(const TransportDIB::Handle& windowless_buffer,
139 const TransportDIB::Handle& background_buffer); 144 const TransportDIB::Handle& background_buffer);
140 145
141 #if defined(OS_WIN) 146 #if defined(OS_WIN)
142 // Converts a shared memory section handle from the renderer process into a 147 // Converts a shared memory section handle from the renderer process into a
143 // bitmap and hdc that are mapped to this process. 148 // bitmap and hdc that are mapped to this process.
144 void ConvertBuffer(const base::SharedMemoryHandle& buffer, 149 void ConvertBuffer(const base::SharedMemoryHandle& buffer,
145 ScopedHandle* shared_section, 150 ScopedHandle* shared_section,
146 ScopedBitmap* bitmap, 151 ScopedBitmap* bitmap,
147 ScopedHDC* hdc); 152 ScopedHDC* hdc);
148 #endif 153 #endif
149 154
150 // Called when a plugin's origin moves, so that we can update the world 155 // Called when a plugin's origin moves, so that we can update the world
151 // transform of the local HDC. 156 // transform of the local HDC.
152 void UpdateTransform(); 157 void UpdateTransform();
153 158
154 typedef base::hash_map<int, WebPluginResourceClient*> ResourceClientMap; 159 typedef base::hash_map<int, webkit_glue::WebPluginResourceClient*>
160 ResourceClientMap;
155 ResourceClientMap resource_clients_; 161 ResourceClientMap resource_clients_;
156 162
157 scoped_refptr<PluginChannel> channel_; 163 scoped_refptr<PluginChannel> channel_;
158 int route_id_; 164 int route_id_;
159 uint32 cp_browsing_context_; 165 uint32 cp_browsing_context_;
160 NPObject* window_npobject_; 166 NPObject* window_npobject_;
161 NPObject* plugin_element_; 167 NPObject* plugin_element_;
162 WebPluginDelegate* delegate_; 168 webkit_glue::WebPluginDelegate* delegate_;
163 gfx::Rect damaged_rect_; 169 gfx::Rect damaged_rect_;
164 bool waiting_for_paint_; 170 bool waiting_for_paint_;
165 scoped_ptr<base::WaitableEvent> modal_dialog_event_; 171 scoped_ptr<base::WaitableEvent> modal_dialog_event_;
166 // The url of the main frame hosting the plugin. 172 // The url of the main frame hosting the plugin.
167 GURL page_url_; 173 GURL page_url_;
168 174
169 #if defined(OS_WIN) 175 #if defined(OS_WIN)
170 // Variables used for desynchronized windowless plugin painting. See note in 176 // Variables used for desynchronized windowless plugin painting. See note in
171 // webplugin_delegate_proxy.h for how this works. 177 // webplugin_delegate_proxy.h for how this works.
172 178
(...skipping 15 matching lines...) Expand all
188 scoped_ptr<TransportDIB> windowless_dib_; 194 scoped_ptr<TransportDIB> windowless_dib_;
189 scoped_ptr<TransportDIB> background_dib_; 195 scoped_ptr<TransportDIB> background_dib_;
190 scoped_ptr<skia::PlatformCanvas> windowless_canvas_; 196 scoped_ptr<skia::PlatformCanvas> windowless_canvas_;
191 scoped_ptr<skia::PlatformCanvas> background_canvas_; 197 scoped_ptr<skia::PlatformCanvas> background_canvas_;
192 #endif 198 #endif
193 199
194 ScopedRunnableMethodFactory<WebPluginProxy> runnable_method_factory_; 200 ScopedRunnableMethodFactory<WebPluginProxy> runnable_method_factory_;
195 }; 201 };
196 202
197 #endif // CHROME_PLUGIN_PLUGIN_WEBPLUGIN_PROXY_H__ 203 #endif // CHROME_PLUGIN_PLUGIN_WEBPLUGIN_PROXY_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698