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 WEBKIT_GLUE_PLUGIN_WEBPLUGIN_DELEGATE_IMPL_H__ | 5 #ifndef WEBKIT_GLUE_PLUGIN_WEBPLUGIN_DELEGATE_IMPL_H__ |
6 #define WEBKIT_GLUE_PLUGIN_WEBPLUGIN_DELEGATE_IMPL_H__ | 6 #define WEBKIT_GLUE_PLUGIN_WEBPLUGIN_DELEGATE_IMPL_H__ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <list> | 9 #include <list> |
10 | 10 |
(...skipping 23 matching lines...) Expand all Loading... |
34 | 34 |
35 // WebPluginDelegate implementation | 35 // WebPluginDelegate implementation |
36 virtual void PluginDestroyed(); | 36 virtual void PluginDestroyed(); |
37 virtual bool Initialize(const GURL& url, | 37 virtual bool Initialize(const GURL& url, |
38 char** argn, | 38 char** argn, |
39 char** argv, | 39 char** argv, |
40 int argc, | 40 int argc, |
41 WebPlugin* plugin, | 41 WebPlugin* plugin, |
42 bool load_manually); | 42 bool load_manually); |
43 virtual void UpdateGeometry(const gfx::Rect& window_rect, | 43 virtual void UpdateGeometry(const gfx::Rect& window_rect, |
44 const gfx::Rect& clip_rect, bool visible); | 44 const gfx::Rect& clip_rect, |
| 45 const std::vector<gfx::Rect>& cutout_rects, |
| 46 bool visible); |
45 virtual void Paint(HDC hdc, const gfx::Rect& rect); | 47 virtual void Paint(HDC hdc, const gfx::Rect& rect); |
46 virtual void Print(HDC hdc); | 48 virtual void Print(HDC hdc); |
47 virtual void SetFocus(); // only called when windowless | 49 virtual void SetFocus(); // only called when windowless |
48 // only called when windowless | 50 // only called when windowless |
49 virtual bool HandleEvent(NPEvent* event, | 51 virtual bool HandleEvent(NPEvent* event, |
50 WebCursor* cursor); | 52 WebCursor* cursor); |
51 virtual NPObject* GetPluginScriptableObject(); | 53 virtual NPObject* GetPluginScriptableObject(); |
52 virtual void DidFinishLoadWithReason(NPReason reason); | 54 virtual void DidFinishLoadWithReason(NPReason reason); |
53 virtual int GetProcessId(); | 55 virtual int GetProcessId(); |
54 | 56 |
(...skipping 30 matching lines...) Expand all Loading... |
85 PLUGIN_QUIRK_DONT_CALL_WND_PROC_RECURSIVELY = 4, | 87 PLUGIN_QUIRK_DONT_CALL_WND_PROC_RECURSIVELY = 4, |
86 PLUGIN_QUIRK_DONT_SET_NULL_WINDOW_HANDLE_ON_DESTROY = 8, | 88 PLUGIN_QUIRK_DONT_SET_NULL_WINDOW_HANDLE_ON_DESTROY = 8, |
87 PLUGIN_QUIRK_DONT_ALLOW_MULTIPLE_INSTANCES = 16, | 89 PLUGIN_QUIRK_DONT_ALLOW_MULTIPLE_INSTANCES = 16, |
88 }; | 90 }; |
89 | 91 |
90 int quirks() { return quirks_; } | 92 int quirks() { return quirks_; } |
91 | 93 |
92 static void MoveWindow(HWND window, | 94 static void MoveWindow(HWND window, |
93 const gfx::Rect& window_rect, | 95 const gfx::Rect& window_rect, |
94 const gfx::Rect& clip_rect, | 96 const gfx::Rect& clip_rect, |
| 97 const std::vector<gfx::Rect>& cutout_rects, |
95 bool visible); | 98 bool visible); |
96 | 99 |
97 private: | 100 private: |
98 WebPluginDelegateImpl(HWND containing_window, | 101 WebPluginDelegateImpl(HWND containing_window, |
99 NPAPI::PluginInstance *instance); | 102 NPAPI::PluginInstance *instance); |
100 ~WebPluginDelegateImpl(); | 103 ~WebPluginDelegateImpl(); |
101 | 104 |
102 //-------------------------- | 105 //-------------------------- |
103 // used for windowed plugins | 106 // used for windowed plugins |
104 void WindowedUpdateGeometry(const gfx::Rect& window_rect, | 107 void WindowedUpdateGeometry(const gfx::Rect& window_rect, |
105 const gfx::Rect& clip_rect, bool visible); | 108 const gfx::Rect& clip_rect, |
| 109 const std::vector<gfx::Rect>& cutout_rects, |
| 110 bool visible); |
106 // Create the native window. | 111 // Create the native window. |
107 // Returns true if the window is created (or already exists). | 112 // Returns true if the window is created (or already exists). |
108 // Returns false if unable to create the window. | 113 // Returns false if unable to create the window. |
109 bool WindowedCreatePlugin(); | 114 bool WindowedCreatePlugin(); |
110 | 115 |
111 // Destroy the native window. | 116 // Destroy the native window. |
112 void WindowedDestroyWindow(); | 117 void WindowedDestroyWindow(); |
113 | 118 |
114 // Reposition the native window to be in sync with the given geometry. | 119 // Reposition the native window to be in sync with the given geometry. |
115 // Returns true if the native window has moved or been clipped differently. | 120 // Returns true if the native window has moved or been clipped differently. |
116 bool WindowedReposition(const gfx::Rect& window_rect, | 121 bool WindowedReposition(const gfx::Rect& window_rect, |
117 const gfx::Rect& clip_rect, bool visible); | 122 const gfx::Rect& clip_rect, |
| 123 const std::vector<gfx::Rect>& cutout_rects, |
| 124 bool visible); |
118 | 125 |
119 // Tells the plugin about the current state of the window. | 126 // Tells the plugin about the current state of the window. |
120 // See NPAPI NPP_SetWindow for more information. | 127 // See NPAPI NPP_SetWindow for more information. |
121 void WindowedSetWindow(); | 128 void WindowedSetWindow(); |
122 | 129 |
123 // Registers the window class for our window | 130 // Registers the window class for our window |
124 ATOM RegisterNativeWindowClass(); | 131 ATOM RegisterNativeWindowClass(); |
125 | 132 |
126 // Our WndProc functions. | 133 // Our WndProc functions. |
127 static LRESULT CALLBACK NativeWndProc( | 134 static LRESULT CALLBACK NativeWndProc( |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 WNDPROC plugin_wnd_proc_; | 186 WNDPROC plugin_wnd_proc_; |
180 | 187 |
181 // Used to throttle WM_USER+1 messages in Flash. | 188 // Used to throttle WM_USER+1 messages in Flash. |
182 uint32 last_message_; | 189 uint32 last_message_; |
183 bool is_calling_wndproc; | 190 bool is_calling_wndproc; |
184 | 191 |
185 HWND parent_; | 192 HWND parent_; |
186 NPWindow window_; | 193 NPWindow window_; |
187 gfx::Rect window_rect_; | 194 gfx::Rect window_rect_; |
188 gfx::Rect clip_rect_; | 195 gfx::Rect clip_rect_; |
| 196 std::vector<gfx::Rect> cutout_rects_; |
189 int quirks_; | 197 int quirks_; |
190 | 198 |
191 // We only move/size the plugin window once after its creation. The | 199 // We only move/size the plugin window once after its creation. The |
192 // rest of the moves are controlled by the browser. This flag controls | 200 // rest of the moves are controlled by the browser. This flag controls |
193 // this behaviour. | 201 // this behaviour. |
194 bool initial_plugin_resize_done_; | 202 bool initial_plugin_resize_done_; |
195 | 203 |
196 // Windowless plugins don't have keyboard focus causing issues with the | 204 // Windowless plugins don't have keyboard focus causing issues with the |
197 // plugin not receiving keyboard events if the plugin enters a modal | 205 // plugin not receiving keyboard events if the plugin enters a modal |
198 // loop like TrackPopupMenuEx or MessageBox, etc. | 206 // loop like TrackPopupMenuEx or MessageBox, etc. |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 bool load_manually_; | 261 bool load_manually_; |
254 | 262 |
255 // Indicates whether a geometry update sequence is the first. | 263 // Indicates whether a geometry update sequence is the first. |
256 bool first_geometry_update_; | 264 bool first_geometry_update_; |
257 | 265 |
258 DISALLOW_EVIL_CONSTRUCTORS(WebPluginDelegateImpl); | 266 DISALLOW_EVIL_CONSTRUCTORS(WebPluginDelegateImpl); |
259 }; | 267 }; |
260 | 268 |
261 #endif // #ifndef WEBKIT_GLUE_PLUGIN_WEBPLUGIN_DELEGATE_IMPL_H__ | 269 #endif // #ifndef WEBKIT_GLUE_PLUGIN_WEBPLUGIN_DELEGATE_IMPL_H__ |
262 | 270 |
OLD | NEW |