15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#ifndef CONTENT_RENDERER_PEPPER_EVENT_CONVERSION_H_
6bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#define CONTENT_RENDERER_PEPPER_EVENT_CONVERSION_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/linked_ptr.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/common/content_export.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/ppb_input_event.h"
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebInputEvent.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_InputEvent;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct InputEventData;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebGamepads;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebInputEvent;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2658e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochnamespace content {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Converts the given WebKit event to one or possibly multiple PP_InputEvents.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The generated events will be filled into the given vector. On failure, no
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// events will ge generated and the vector will be empty.
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciCONTENT_EXPORT void CreateInputEventData(
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const blink::WebInputEvent& event,
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    std::vector<ppapi::InputEventData>* pp_events);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates a WebInputEvent from the given PP_InputEvent.  If it fails, returns
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NULL.  The caller owns the created object on success.
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciCONTENT_EXPORT blink::WebInputEvent* CreateWebInputEvent(
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const ppapi::InputEventData& event);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates an array of WebInputEvents to make the given event look like a user
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// input event on all platforms. |plugin_x| and |plugin_y| should be the
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// coordinates of a point within the plugin's area on the page.
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::vector<linked_ptr<blink::WebInputEvent> > CreateSimulatedWebInputEvents(
44ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    const ppapi::InputEventData& event,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int plugin_x,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int plugin_y);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns the PPAPI event class for the given WebKit event type. The given
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// type should not be "Undefined" since there's no corresponding PPAPI class.
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PP_InputEvent_Class ClassifyInputEvent(blink::WebInputEvent::Type type);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch}  // namespace content
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#endif  // CONTENT_RENDERER_PEPPER_EVENT_CONVERSION_H_
55