OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #include "base/scoped_handle.h" | 12 #include "base/scoped_handle.h" |
13 #include "base/scoped_ptr.h" | 13 #include "base/scoped_ptr.h" |
14 #include "base/shared_memory.h" | 14 #include "base/shared_memory.h" |
15 #include "base/timer.h" | 15 #include "base/timer.h" |
16 #include "chrome/common/ipc_message.h" | 16 #include "chrome/common/ipc_message.h" |
17 #include "chrome/common/chrome_plugin_api.h" | 17 #include "chrome/common/chrome_plugin_api.h" |
18 #include "chrome/common/transport_dib.h" | 18 #include "chrome/common/transport_dib.h" |
| 19 #include "googleurl/src/gurl.h" |
19 #include "webkit/glue/webplugin.h" | 20 #include "webkit/glue/webplugin.h" |
20 | 21 |
21 namespace base { | 22 namespace base { |
22 class WaitableEvent; | 23 class WaitableEvent; |
23 } | 24 } |
24 | 25 |
25 class PluginChannel; | 26 class PluginChannel; |
26 class WebPluginDelegate; | 27 class WebPluginDelegate; |
27 | 28 |
28 // This is an implementation of WebPlugin that proxies all calls to the | 29 // This is an implementation of WebPlugin that proxies all calls to the |
29 // renderer. | 30 // renderer. |
30 class WebPluginProxy : public WebPlugin { | 31 class WebPluginProxy : public WebPlugin { |
31 public: | 32 public: |
32 // Creates a new proxy for WebPlugin, using the given sender to send the | 33 // Creates a new proxy for WebPlugin, using the given sender to send the |
33 // marshalled WebPlugin calls. | 34 // marshalled WebPlugin calls. |
34 WebPluginProxy(PluginChannel* channel, | 35 WebPluginProxy(PluginChannel* channel, |
35 int route_id, | 36 int route_id, |
36 WebPluginDelegate* delegate); | 37 WebPluginDelegate* delegate, |
| 38 const GURL& page_url); |
37 ~WebPluginProxy(); | 39 ~WebPluginProxy(); |
38 | 40 |
39 // WebPlugin overrides | 41 // WebPlugin overrides |
40 #if defined(OS_LINUX) | 42 #if defined(OS_LINUX) |
41 gfx::PluginWindowHandle CreatePluginContainer(); | 43 gfx::PluginWindowHandle CreatePluginContainer(); |
42 #endif | 44 #endif |
43 void SetWindow(gfx::PluginWindowHandle window); | 45 void SetWindow(gfx::PluginWindowHandle window); |
44 void WillDestroyWindow(gfx::PluginWindowHandle window); | 46 void WillDestroyWindow(gfx::PluginWindowHandle window); |
45 #if defined(OS_WIN) | 47 #if defined(OS_WIN) |
46 void SetWindowlessPumpEvent(HANDLE pump_messages_event); | 48 void SetWindowlessPumpEvent(HANDLE pump_messages_event); |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 | 151 |
150 scoped_refptr<PluginChannel> channel_; | 152 scoped_refptr<PluginChannel> channel_; |
151 int route_id_; | 153 int route_id_; |
152 uint32 cp_browsing_context_; | 154 uint32 cp_browsing_context_; |
153 NPObject* window_npobject_; | 155 NPObject* window_npobject_; |
154 NPObject* plugin_element_; | 156 NPObject* plugin_element_; |
155 WebPluginDelegate* delegate_; | 157 WebPluginDelegate* delegate_; |
156 gfx::Rect damaged_rect_; | 158 gfx::Rect damaged_rect_; |
157 bool waiting_for_paint_; | 159 bool waiting_for_paint_; |
158 scoped_ptr<base::WaitableEvent> modal_dialog_event_; | 160 scoped_ptr<base::WaitableEvent> modal_dialog_event_; |
| 161 // The url of the main frame hosting the plugin. |
| 162 GURL page_url_; |
159 | 163 |
160 #if defined(OS_WIN) | 164 #if defined(OS_WIN) |
161 // Variables used for desynchronized windowless plugin painting. See note in | 165 // Variables used for desynchronized windowless plugin painting. See note in |
162 // webplugin_delegate_proxy.h for how this works. | 166 // webplugin_delegate_proxy.h for how this works. |
163 | 167 |
164 // These hold the bitmap where the plugin draws. | 168 // These hold the bitmap where the plugin draws. |
165 ScopedHandle windowless_shared_section_; | 169 ScopedHandle windowless_shared_section_; |
166 ScopedBitmap windowless_bitmap_; | 170 ScopedBitmap windowless_bitmap_; |
167 ScopedHDC windowless_hdc_; | 171 ScopedHDC windowless_hdc_; |
168 | 172 |
169 // These hold the bitmap of the background image. | 173 // These hold the bitmap of the background image. |
170 ScopedHandle background_shared_section_; | 174 ScopedHandle background_shared_section_; |
171 ScopedBitmap background_bitmap_; | 175 ScopedBitmap background_bitmap_; |
172 ScopedHDC background_hdc_; | 176 ScopedHDC background_hdc_; |
173 #endif | 177 #endif |
174 | 178 |
175 ScopedRunnableMethodFactory<WebPluginProxy> runnable_method_factory_; | 179 ScopedRunnableMethodFactory<WebPluginProxy> runnable_method_factory_; |
176 }; | 180 }; |
177 | 181 |
178 #endif // CHROME_PLUGIN_PLUGIN_WEBPLUGIN_PROXY_H__ | 182 #endif // CHROME_PLUGIN_PLUGIN_WEBPLUGIN_PROXY_H__ |
OLD | NEW |