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)