diff options
Diffstat (limited to 'webkit/glue/plugins/plugin_web_event_converter_mac.h')
-rw-r--r-- | webkit/glue/plugins/plugin_web_event_converter_mac.h | 66 |
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_ |