summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/webplugin_delegate_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/webplugin_delegate_impl.h')
-rw-r--r--webkit/glue/plugins/webplugin_delegate_impl.h40
1 files changed, 34 insertions, 6 deletions
diff --git a/webkit/glue/plugins/webplugin_delegate_impl.h b/webkit/glue/plugins/webplugin_delegate_impl.h
index fcb849d..61ee33c 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);
};