[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
andersca at apple.com
andersca at apple.com
Wed Dec 22 14:04:49 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 769334bc04739f61a4252d4bc4c6ba9a4ec2838d
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Sun Oct 3 21:02:19 2010 +0000
Send keyboard events to plug-ins
https://bugs.webkit.org/show_bug.cgi?id=47064
<rdar://problem/8507148>
Reviewed by Sam Weinig.
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
(WebKit::NetscapePlugin::handleKeyboardEvent):
Call platformHandleKeyboardEvent.
* WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
(WebKit::modifierFlags):
Return the modifier flags given a WebKeyboardEvent.
(WebKit::initializeKeyboardEvent):
Initialize an NPCocoaEvent from a WebKeyboardEvent.
(WebKit::NetscapePlugin::platformHandleKeyboardEvent):
Initialize the event and dispatch it using NPP_HandleEvent.
* WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp:
(WebKit::NetscapePlugin::platformHandleKeyboardEvent):
Add stub.
* WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp:
(WebKit::NetscapePlugin::platformHandleKeyboardEvent):
Add stub.
* WebProcess/Plugins/Plugin.h:
Add handleKeyboardEvent.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::handleEvent):
Call Plugin::handleKeyboardEvent if we see a keydown or keyup event.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68988 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 46cecf0..4c266e4 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,40 @@
+2010-10-03 Anders Carlsson <andersca at apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Send keyboard events to plug-ins
+ https://bugs.webkit.org/show_bug.cgi?id=47064
+ <rdar://problem/8507148>
+
+ * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
+ (WebKit::NetscapePlugin::handleKeyboardEvent):
+ Call platformHandleKeyboardEvent.
+
+ * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
+ (WebKit::modifierFlags):
+ Return the modifier flags given a WebKeyboardEvent.
+
+ (WebKit::initializeKeyboardEvent):
+ Initialize an NPCocoaEvent from a WebKeyboardEvent.
+
+ (WebKit::NetscapePlugin::platformHandleKeyboardEvent):
+ Initialize the event and dispatch it using NPP_HandleEvent.
+
+ * WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp:
+ (WebKit::NetscapePlugin::platformHandleKeyboardEvent):
+ Add stub.
+
+ * WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp:
+ (WebKit::NetscapePlugin::platformHandleKeyboardEvent):
+ Add stub.
+
+ * WebProcess/Plugins/Plugin.h:
+ Add handleKeyboardEvent.
+
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::handleEvent):
+ Call Plugin::handleKeyboardEvent if we see a keydown or keyup event.
+
2010-10-01 Mark Rowe <mrowe at apple.com>
Build fix.
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
index 2220069..65fcace 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
@@ -537,6 +537,11 @@ bool NetscapePlugin::handleMouseLeaveEvent(const WebMouseEvent& mouseEvent)
return platformHandleMouseLeaveEvent(mouseEvent);
}
+bool NetscapePlugin::handleKeyboardEvent(const WebKeyboardEvent& keyboardEvent)
+{
+ return platformHandleKeyboardEvent(keyboardEvent);
+}
+
void NetscapePlugin::setFocus(bool hasFocus)
{
platformSetFocus(hasFocus);
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
index cfec376..60fc29e 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
@@ -115,6 +115,7 @@ private:
bool platformHandleWheelEvent(const WebWheelEvent&);
bool platformHandleMouseEnterEvent(const WebMouseEvent&);
bool platformHandleMouseLeaveEvent(const WebMouseEvent&);
+ bool platformHandleKeyboardEvent(const WebKeyboardEvent&);
void platformSetFocus(bool);
// Plugin
@@ -143,6 +144,7 @@ private:
virtual bool handleWheelEvent(const WebWheelEvent&);
virtual bool handleMouseEnterEvent(const WebMouseEvent&);
virtual bool handleMouseLeaveEvent(const WebMouseEvent&);
+ virtual bool handleKeyboardEvent(const WebKeyboardEvent&);
virtual void setFocus(bool);
virtual NPObject* pluginScriptableNPObject();
diff --git a/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm b/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm
index f2d8fe7..1636ab2 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm
+++ b/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm
@@ -298,7 +298,7 @@ bool NetscapePlugin::platformHandleMouseEnterEvent(const WebMouseEvent& mouseEve
return false;
}
-
+
bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& mouseEvent)
{
switch (m_eventModel) {
@@ -316,6 +316,63 @@ bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& mouseEve
return false;
}
+static unsigned modifierFlags(const WebKeyboardEvent& keyboardEvent)
+{
+ unsigned modifierFlags = 0;
+
+ if (keyboardEvent.shiftKey())
+ modifierFlags |= NSShiftKeyMask;
+ if (keyboardEvent.controlKey())
+ modifierFlags |= NSControlKeyMask;
+ if (keyboardEvent.altKey())
+ modifierFlags |= NSAlternateKeyMask;
+ if (keyboardEvent.metaKey())
+ modifierFlags |= NSCommandKeyMask;
+
+ return modifierFlags;
+}
+
+static NPCocoaEvent initializeKeyboardEvent(const WebKeyboardEvent& keyboardEvent)
+{
+ NPCocoaEventType eventType;
+
+ switch (keyboardEvent.type()) {
+ case WebEvent::KeyDown:
+ eventType = NPCocoaEventKeyDown;
+ break;
+ case WebEvent::KeyUp:
+ eventType = NPCocoaEventKeyUp;
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ return NPCocoaEvent();
+ }
+
+ NPCocoaEvent event = initializeEvent(eventType);
+ event.data.key.modifierFlags = modifierFlags(keyboardEvent);
+ event.data.key.characters = reinterpret_cast<NPNSString*>(static_cast<NSString*>(keyboardEvent.text()));
+ event.data.key.charactersIgnoringModifiers = reinterpret_cast<NPNSString*>(static_cast<NSString*>(keyboardEvent.unmodifiedText()));
+ event.data.key.isARepeat = keyboardEvent.isAutoRepeat();
+ event.data.key.keyCode = keyboardEvent.nativeVirtualKeyCode();
+
+ return event;
+}
+
+bool NetscapePlugin::platformHandleKeyboardEvent(const WebKeyboardEvent& keyboardEvent)
+{
+ switch (m_eventModel) {
+ case NPEventModelCocoa: {
+ NPCocoaEvent event = initializeKeyboardEvent(keyboardEvent);
+ return NPP_HandleEvent(&event);
+ }
+
+ default:
+ ASSERT_NOT_REACHED();
+ }
+
+ return false;
+}
+
void NetscapePlugin::platformSetFocus(bool hasFocus)
{
switch (m_eventModel) {
diff --git a/WebKit2/WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp b/WebKit2/WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp
index 67ac7ea..206859a 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp
@@ -105,4 +105,10 @@ bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& event)
return true;
}
+bool NetscapePlugin::platformHandleKeyboardEvent(const WebKeyboardEvent&)
+{
+ notImplemented();
+ return false;
+}
+
} // namespace WebKit
diff --git a/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp b/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
index 0589c01..6087fe3 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
@@ -255,4 +255,10 @@ bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& event)
return true;
}
+bool NetscapePlugin::platformHandleKeyboardEvent(const WebKeyboardEvent&)
+{
+ notImplemented();
+ return false;
+}
+
} // namespace WebKit
diff --git a/WebKit2/WebProcess/Plugins/Plugin.h b/WebKit2/WebProcess/Plugins/Plugin.h
index 0a88c77..825eddc 100644
--- a/WebKit2/WebProcess/Plugins/Plugin.h
+++ b/WebKit2/WebProcess/Plugins/Plugin.h
@@ -45,6 +45,7 @@ namespace WebCore {
namespace WebKit {
+class WebKeyboardEvent;
class WebMouseEvent;
class WebWheelEvent;
@@ -131,6 +132,9 @@ public:
// Tells the plug-in to handle the passed in mouse leave event. The plug-in should return true if it processed the event.
virtual bool handleMouseLeaveEvent(const WebMouseEvent&) = 0;
+ // Tells the plug-in to handle the passed in keyboard event. The plug-in should return true if it processed the event.
+ virtual bool handleKeyboardEvent(const WebKeyboardEvent&) = 0;
+
// Tells the plug-in about focus changes.
virtual void setFocus(bool) = 0;
diff --git a/WebKit2/WebProcess/Plugins/PluginView.cpp b/WebKit2/WebProcess/Plugins/PluginView.cpp
index cfb66e1..5f04c0b 100644
--- a/WebKit2/WebProcess/Plugins/PluginView.cpp
+++ b/WebKit2/WebProcess/Plugins/PluginView.cpp
@@ -478,7 +478,7 @@ void PluginView::handleEvent(Event* event)
bool didHandleEvent = false;
- if ((event->type() == eventNames().mousemoveEvent && currentEvent->type() == WebEvent::MouseMove)
+ if ((event->type() == eventNames().mousemoveEvent && currentEvent->type() == WebEvent::MouseMove)
|| (event->type() == eventNames().mousedownEvent && currentEvent->type() == WebEvent::MouseDown)
|| (event->type() == eventNames().mouseupEvent && currentEvent->type() == WebEvent::MouseUp)) {
// We have a mouse event.
@@ -495,6 +495,10 @@ void PluginView::handleEvent(Event* event)
} else if (event->type() == eventNames().mouseoutEvent && currentEvent->type() == WebEvent::MouseMove) {
// We have a mouse leave event.
didHandleEvent = m_plugin->handleMouseLeaveEvent(static_cast<const WebMouseEvent&>(*currentEvent));
+ } else if ((event->type() == eventNames().keydownEvent && currentEvent->type() == WebEvent::KeyDown)
+ || (event->type() == eventNames().keyupEvent && currentEvent->type() == WebEvent::KeyUp)) {
+ // We have a keyboard event.
+ didHandleEvent = m_plugin->handleKeyboardEvent(static_cast<const WebKeyboardEvent&>(*currentEvent));
}
if (didHandleEvent)
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list