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); |
}; |