| Index: webkit/glue/plugins/webplugin_delegate_impl.h | 
| diff --git a/webkit/glue/plugins/webplugin_delegate_impl.h b/webkit/glue/plugins/webplugin_delegate_impl.h | 
| index fcb849dea12af455c2a5666df27593ccf7b64ce1..61ee33ce55d361705a5e37d8cb1c72a370f1d4d6 100644 | 
| --- a/webkit/glue/plugins/webplugin_delegate_impl.h | 
| +++ b/webkit/glue/plugins/webplugin_delegate_impl.h | 
| @@ -5,6 +5,8 @@ | 
| #ifndef WEBKIT_GLUE_PLUGIN_WEBPLUGIN_DELEGATE_IMPL_H__ | 
| #define WEBKIT_GLUE_PLUGIN_WEBPLUGIN_DELEGATE_IMPL_H__ | 
|  | 
| +#include "build/build_config.h" | 
| + | 
| #include <string> | 
| #include <list> | 
|  | 
| @@ -27,12 +29,14 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| static WebPluginDelegateImpl* Create(const FilePath& filename, | 
| const std::string& mime_type, | 
| gfx::NativeView containing_view); | 
| +#if defined(OS_WIN) | 
| static bool IsPluginDelegateWindow(HWND window); | 
| static bool GetPluginNameFromWindow(HWND window, std::wstring *plugin_name); | 
|  | 
| // Returns true if the window handle passed in is that of the dummy | 
| // activation window for windowless plugins. | 
| static bool IsDummyActivationWindow(HWND window); | 
| +#endif  // OS_WIN) | 
|  | 
| // WebPluginDelegate implementation | 
| virtual void PluginDestroyed(); | 
| @@ -44,8 +48,14 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| bool load_manually); | 
| virtual void UpdateGeometry(const gfx::Rect& window_rect, | 
| const gfx::Rect& clip_rect); | 
| +#if defined(OS_WIN) | 
| virtual void Paint(HDC hdc, const gfx::Rect& rect); | 
| virtual void Print(HDC hdc); | 
| +#else | 
| +  // TODO(port): temporary workaround. | 
| +  virtual void Paint(void* dc, const gfx::Rect& rect); | 
| +  virtual void Print(void* dc); | 
| +#endif | 
| virtual void SetFocus();  // only called when windowless | 
| // only called when windowless | 
| virtual bool HandleEvent(NPEvent* event, | 
| @@ -82,6 +92,7 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| gfx::Rect rect() const { return window_rect_; } | 
| gfx::Rect clip_rect() const { return clip_rect_; } | 
|  | 
| +#if defined(OS_WIN) | 
| enum PluginQuirks { | 
| PLUGIN_QUIRK_SETWINDOW_TWICE = 1, | 
| PLUGIN_QUIRK_THROTTLE_WM_USER_PLUS_ONE = 2, | 
| @@ -93,6 +104,7 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| PLUGIN_QUIRK_PATCH_SETCURSOR = 128, | 
| PLUGIN_QUIRK_BLOCK_NONSTANDARD_GETURL_REQUESTS = 256, | 
| }; | 
| +#endif | 
|  | 
| int quirks() { return quirks_; } | 
|  | 
| @@ -122,6 +134,7 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| // See NPAPI NPP_SetWindow for more information. | 
| void WindowedSetWindow(); | 
|  | 
| +#if defined(OS_WIN) | 
| // Registers the window class for our window | 
| ATOM RegisterNativeWindowClass(); | 
|  | 
| @@ -138,12 +151,18 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| static void OnThrottleMessage(); | 
| static void ThrottleMessage(WNDPROC proc, HWND hwnd, UINT message, | 
| WPARAM wParam, LPARAM lParam); | 
| +#endif | 
|  | 
| //---------------------------- | 
| // used for windowless plugins | 
| void WindowlessUpdateGeometry(const gfx::Rect& window_rect, | 
| const gfx::Rect& clip_rect); | 
| +#if defined(OS_WIN) | 
| void WindowlessPaint(HDC hdc, const gfx::Rect& rect); | 
| +#else | 
| +  // TODO(port): implement. | 
| +  void WindowlessPaint(void* dc, const gfx::Rect& rect); | 
| +#endif | 
|  | 
| // Tells the plugin about the current state of the window. | 
| // See NPAPI NPP_SetWindow for more information. | 
| @@ -159,15 +178,19 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| void DestroyInstance(); | 
|  | 
| // used for windowed plugins | 
| -  HWND windowed_handle_; | 
| +  gfx::NativeView windowed_handle_; | 
| +#if defined(OS_WIN) | 
| bool windowed_did_set_window_; | 
| gfx::Rect windowed_last_pos_; | 
| +#endif | 
|  | 
| +#if defined(OS_WIN) | 
| // this is an optimization to avoid calling SetWindow to the plugin | 
| // when it is not necessary.  Initially, we need to call SetWindow, | 
| // and after that we only need to call it when the geometry changes. | 
| // use this flag to indicate whether we really need it or not. | 
| bool windowless_needs_set_window_; | 
| +#endif | 
|  | 
| // used by windowed and windowless plugins | 
| bool windowless_; | 
| @@ -175,20 +198,23 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| WebPlugin* plugin_; | 
| scoped_refptr<NPAPI::PluginInstance> instance_; | 
|  | 
| +#if defined(OS_WIN) | 
| // Original wndproc before we subclassed. | 
| WNDPROC plugin_wnd_proc_; | 
|  | 
| // Used to throttle WM_USER+1 messages in Flash. | 
| uint32 last_message_; | 
| bool is_calling_wndproc; | 
| +#endif // OS_WIN | 
|  | 
| -  HWND parent_; | 
| +  gfx::NativeView parent_; | 
| NPWindow window_; | 
| gfx::Rect window_rect_; | 
| gfx::Rect clip_rect_; | 
| std::vector<gfx::Rect> cutout_rects_; | 
| int quirks_; | 
|  | 
| +#if defined(OS_WIN) | 
| // Windowless plugins don't have keyboard focus causing issues with the | 
| // plugin not receiving keyboard events if the plugin enters a modal | 
| // loop like TrackPopupMenuEx or MessageBox, etc. | 
| @@ -210,7 +236,7 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| // a plugin in the course of a NPP_HandleEvent call. | 
| static LRESULT CALLBACK HandleEventMessageFilterHook(int code, WPARAM wParam, | 
| LPARAM lParam); | 
| - | 
| +#endif | 
| // Called by the message filter hook when the plugin enters a modal loop. | 
| void OnModalLoopEntered(); | 
|  | 
| @@ -220,6 +246,10 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| // Indicates the end of a user gesture period. | 
| void OnUserGestureEnd(); | 
|  | 
| +  // The url with which the plugin was instantiated. | 
| +  std::string plugin_url_; | 
| + | 
| +#if defined(OS_WIN) | 
| // Handle to the message filter hook | 
| HHOOK handle_event_message_filter_hook_; | 
|  | 
| @@ -237,9 +267,6 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
| // asynchronously. | 
| ScopedRunnableMethodFactory<WebPluginDelegateImpl> user_gesture_msg_factory_; | 
|  | 
| -  // The url with which the plugin was instantiated. | 
| -  std::string plugin_url_; | 
| - | 
| // The plugin module handle. | 
| HMODULE plugin_module_handle_; | 
|  | 
| @@ -254,6 +281,7 @@ class WebPluginDelegateImpl : public WebPluginDelegate { | 
|  | 
| // Holds the current cursor set by the windowless plugin. | 
| WebCursor current_windowless_cursor_; | 
| +#endif | 
|  | 
| DISALLOW_EVIL_CONSTRUCTORS(WebPluginDelegateImpl); | 
| }; | 
|  |