Adding mouse events to the plugin API
diff --git a/WebCore/plugins/android/PluginViewAndroid.cpp b/WebCore/plugins/android/PluginViewAndroid.cpp
index 51dd4e9..ff2f04b 100644
--- a/WebCore/plugins/android/PluginViewAndroid.cpp
+++ b/WebCore/plugins/android/PluginViewAndroid.cpp
@@ -237,14 +237,21 @@
void PluginView::handleMouseEvent(MouseEvent* event)
{
const AtomicString& type = event->type();
- bool isOver = (eventNames().mouseoverEvent == type);
bool isOut = (eventNames().mouseoutEvent == type);
+ bool isUp = (eventNames().mouseupEvent == type);
+ bool isDown = (eventNames().mousedownEvent == type);
ANPEvent evt;
- if (isOver || isOut) {
+ if (isOut) {
SkANP::InitEvent(&evt, kLifecycle_ANPEventType);
- evt.data.lifecycle.action = isOver ? kGainFocus_ANPLifecycleAction : kLooseFocus_ANPLifecycleAction;
+ evt.data.lifecycle.action = kLooseFocus_ANPLifecycleAction;
+ }
+ else if (isUp || isDown) {
+ SkANP::InitEvent(&evt, kMouse_ANPEventType);
+ evt.data.mouse.action = isUp ? kUp_ANPMouseAction : kDown_ANPMouseAction;
+ evt.data.mouse.x = event->x();
+ evt.data.mouse.y = event->y();
}
else {
return;
diff --git a/WebKit/android/plugins/android_npapi.h b/WebKit/android/plugins/android_npapi.h
index b5f5783..c11d448 100644
--- a/WebKit/android/plugins/android_npapi.h
+++ b/WebKit/android/plugins/android_npapi.h
@@ -700,10 +700,11 @@
enum ANPEventTypes {
kNull_ANPEventType = 0,
kKey_ANPEventType = 1,
- kTouch_ANPEventType = 2,
- kDraw_ANPEventType = 3,
- kLifecycle_ANPEventType = 4,
- kVisibleRect_ANPEventType = 5,
+ kMouse_ANPEventType = 2,
+ kTouch_ANPEventType = 3,
+ kDraw_ANPEventType = 4,
+ kLifecycle_ANPEventType = 5,
+ kVisibleRect_ANPEventType = 6,
};
typedef int32_t ANPEventType;
@@ -723,6 +724,12 @@
// bit-field containing some number of ANPKeyModifier bits
typedef uint32_t ANPKeyModifier;
+enum ANPMouseActions {
+ kDown_ANPMouseAction = 0,
+ kUp_ANPMouseAction = 1,
+};
+typedef int32_t ANPMouseAction;
+
enum ANPTouchActions {
kDown_ANPTouchAction = 0,
kUp_ANPTouchAction = 1,
@@ -755,6 +762,11 @@
int32_t unichar; // 0 if there is no value
} key;
struct {
+ ANPMouseAction action;
+ int32_t x; // relative to your "window" (0...width)
+ int32_t y; // relative to your "window" (0...height)
+ } mouse;
+ struct {
ANPTouchAction action;
ANPKeyModifier modifiers;
int32_t x; // relative to your "window" (0...width)