[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

aroben at apple.com aroben at apple.com
Wed Dec 22 12:21:21 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit baa8e64504608f06130dbd7ea2668a02308c9cc3
Author: aroben at apple.com <aroben at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Aug 19 21:23:12 2010 +0000

    Send mouse events to windowless plugins on Windows
    
    This seems to have been the last issue blocking us from playing videos
    on vimeo.com.
    
    Fixes <http://webkit.org/b/44276> <rdar://problem/8330398> Can't click
    play button in vimeo.com Flash video player in WebKit2 on Windows
    
    Reviewed by Sam Weinig.
    
    * WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp:
    (WebKit::toNP): Added. Converts a WebMouseEvent to an NPEvent. Code
    was adapted from WebCore's PluginViewWin.cpp.
    
    (WebKit::NetscapePlugin::platformHandleMouseEvent):
    (WebKit::NetscapePlugin::platformHandleMouseEnterEvent):
    (WebKit::NetscapePlugin::platformHandleMouseLeaveEvent):
    Convert the WebMouseEvent to an NPEvent and send it to the plugin.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65706 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index c61934f..ce564ae 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,26 @@
 2010-08-19  Adam Roben  <aroben at apple.com>
 
+        Send mouse events to windowless plugins on Windows
+
+        This seems to have been the last issue blocking us from playing videos
+        on vimeo.com.
+
+        Fixes <http://webkit.org/b/44276> <rdar://problem/8330398> Can't click
+        play button in vimeo.com Flash video player in WebKit2 on Windows
+
+        Reviewed by Sam Weinig.
+
+        * WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp:
+        (WebKit::toNP): Added. Converts a WebMouseEvent to an NPEvent. Code
+        was adapted from WebCore's PluginViewWin.cpp.
+
+        (WebKit::NetscapePlugin::platformHandleMouseEvent):
+        (WebKit::NetscapePlugin::platformHandleMouseEnterEvent):
+        (WebKit::NetscapePlugin::platformHandleMouseLeaveEvent):
+        Convert the WebMouseEvent to an NPEvent and send it to the plugin.
+
+2010-08-19  Adam Roben  <aroben at apple.com>
+
         Add support for painting windowless plugins on Windows
 
         This gets the video on the front page of vimeo.com painting (though
diff --git a/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp b/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
index 28423d5..61a34b5 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
@@ -26,6 +26,7 @@
 #include "NetscapePlugin.h"
 
 #include "NotImplemented.h"
+#include "WebEvent.h"
 #include <WebCore/GraphicsContext.h>
 
 using namespace WebCore;
@@ -81,10 +82,83 @@ void NetscapePlugin::platformPaint(GraphicsContext* context, const IntRect& dirt
     context->releaseWindowsContext(hdc, dirtyRect, false);
 }
 
-bool NetscapePlugin::platformHandleMouseEvent(const WebMouseEvent&)
+NPEvent toNP(const WebMouseEvent& event)
 {
-    notImplemented();
-    return false;
+    NPEvent npEvent;
+
+    npEvent.wParam = 0;
+    if (event.controlKey())
+        npEvent.wParam |= MK_CONTROL;
+    if (event.shiftKey())
+        npEvent.wParam |= MK_SHIFT;
+
+    npEvent.lParam = MAKELPARAM(event.positionX(), event.positionY());
+
+    switch (event.type()) {
+    case WebEvent::MouseMove:
+        npEvent.event = WM_MOUSEMOVE;
+        switch (event.button()) {
+        case WebMouseEvent::LeftButton:
+            npEvent.wParam |= MK_LBUTTON;
+            break;
+        case WebMouseEvent::MiddleButton:
+            npEvent.wParam |= MK_MBUTTON;
+            break;
+        case WebMouseEvent::RightButton:
+            npEvent.wParam |= MK_RBUTTON;
+            break;
+        case WebMouseEvent::NoButton:
+            break;
+        }
+        break;
+    case WebEvent::MouseDown:
+        switch (event.button()) {
+        case WebMouseEvent::LeftButton:
+            npEvent.event = WM_LBUTTONDOWN;
+            break;
+        case WebMouseEvent::MiddleButton:
+            npEvent.event = WM_MBUTTONDOWN;
+            break;
+        case WebMouseEvent::RightButton:
+            npEvent.event = WM_RBUTTONDOWN;
+            break;
+        case WebMouseEvent::NoButton:
+            ASSERT_NOT_REACHED();
+            break;
+        }
+        break;
+    case WebEvent::MouseUp:
+        switch (event.button()) {
+        case WebMouseEvent::LeftButton:
+            npEvent.event = WM_LBUTTONUP;
+            break;
+        case WebMouseEvent::MiddleButton:
+            npEvent.event = WM_MBUTTONUP;
+            break;
+        case WebMouseEvent::RightButton:
+            npEvent.event = WM_RBUTTONUP;
+            break;
+        case WebMouseEvent::NoButton:
+            ASSERT_NOT_REACHED();
+            break;
+        }
+        break;
+    default:
+        ASSERT_NOT_REACHED();
+        break;
+    }
+
+    return npEvent;
+}
+
+bool NetscapePlugin::platformHandleMouseEvent(const WebMouseEvent& event)
+{
+    if (m_isWindowed)
+        return false;
+
+    NPEvent npEvent = toNP(event);
+    NPP_HandleEvent(&npEvent);
+    return true;
 }
 
 bool NetscapePlugin::platformHandleWheelEvent(const WebWheelEvent&)
@@ -98,16 +172,24 @@ void NetscapePlugin::platformSetFocus(bool)
     notImplemented();
 }
 
-bool NetscapePlugin::platformHandleMouseEnterEvent(const WebMouseEvent&)
+bool NetscapePlugin::platformHandleMouseEnterEvent(const WebMouseEvent& event)
 {
-    notImplemented();
-    return false;
+    if (m_isWindowed)
+        return false;
+
+    NPEvent npEvent = toNP(event);
+    NPP_HandleEvent(&npEvent);
+    return true;
 }
 
-bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent&)
+bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& event)
 {
-    notImplemented();
-    return false;
+    if (m_isWindowed)
+        return false;
+
+    NPEvent npEvent = toNP(event);
+    NPP_HandleEvent(&npEvent);
+    return true;
 }
 
 } // namespace WebKit

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list