summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/plugin_web_event_converter_mac.h
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/plugin_web_event_converter_mac.h')
-rw-r--r--webkit/glue/plugins/plugin_web_event_converter_mac.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/webkit/glue/plugins/plugin_web_event_converter_mac.h b/webkit/glue/plugins/plugin_web_event_converter_mac.h
new file mode 100644
index 0000000..02f113a
--- /dev/null
+++ b/webkit/glue/plugins/plugin_web_event_converter_mac.h
@@ -0,0 +1,66 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WEBKIT_GLUE_PLUGIN_PLUGIN_WEB_EVENT_CONVERTER_MAC_H_
+#define WEBKIT_GLUE_PLUGIN_PLUGIN_WEB_EVENT_CONVERTER_MAC_H_
+
+#include "third_party/npapi/bindings/npapi.h"
+
+namespace WebKit {
+class WebInputEvent;
+class WebKeyboardEvent;
+class WebMouseEvent;
+class WebMouseWheelEvent;
+}
+
+// Utility class to translating WebInputEvent structs to equivalent structures
+// suitable for sending to Mac plugins (via NPP_HandleEvent).
+class PluginWebEventConverter {
+ public:
+ PluginWebEventConverter() {}
+ virtual ~PluginWebEventConverter() {}
+
+ // Initializes a converter for the given web event. Returns false if the event
+ // could not be converted.
+ virtual bool InitWithEvent(const WebKit::WebInputEvent& web_event);
+
+ // Sets a zoom level to apply to mouse coordinates. Must be called after
+ // InitWithEvent.
+ // TODO(stuartmorgan): Re-evaluate whether this is necessary when
+ // http://crbug.com/9996 is fixed.
+ virtual void SetZoomLevel(float zoom) = 0;
+
+ // Returns a pointer to a plugin event--suitable for passing to
+ // NPP_HandleEvent--corresponding to the the web event this converter was
+ // created with. The pointer is valid only as long as this object is.
+ // Returns NULL iff InitWithEvent returned false.
+ virtual void* plugin_event() = 0;
+
+protected:
+ // To be overridden by subclasses to store a converted plugin representation
+ // of the given web event, suitable for returning from plugin_event.
+ // Returns true if the event was successfully converted.
+ virtual bool ConvertKeyboardEvent(
+ const WebKit::WebKeyboardEvent& web_event) = 0;
+ virtual bool ConvertMouseEvent(const WebKit::WebMouseEvent& web_event) = 0;
+ virtual bool ConvertMouseWheelEvent(
+ const WebKit::WebMouseWheelEvent& web_event) = 0;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(PluginWebEventConverter);
+};
+
+// Factory for generating PluginWebEventConverter objects by event model.
+class PluginWebEventConverterFactory {
+ public:
+ // Returns a new PluginWebEventConverter corresponding to the given plugin
+ // event model.
+ static PluginWebEventConverter*
+ CreateConverterForModel(NPEventModel event_model);
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(PluginWebEventConverterFactory);
+};
+
+#endif // WEBKIT_GLUE_PLUGIN_PLUGIN_WEB_EVENT_CONVERTER_MAC_H_