Chromium Code Reviews| Index: remoting/client/plugin/pepper_input_handler.cc |
| diff --git a/remoting/client/plugin/pepper_input_handler.cc b/remoting/client/plugin/pepper_input_handler.cc |
| index 1fe6f6e543636ef8f19e70954a9797661fa6a28e..3857c56a25579e7e5901d82794b890eac94a3da7 100644 |
| --- a/remoting/client/plugin/pepper_input_handler.cc |
| +++ b/remoting/client/plugin/pepper_input_handler.cc |
| @@ -4,39 +4,105 @@ |
| #include "remoting/client/plugin/pepper_input_handler.h" |
| +#include "base/logging.h" |
| #include "ppapi/cpp/input_event.h" |
| #include "ppapi/cpp/point.h" |
| -#include "remoting/client/plugin/pepper_view_proxy.h" |
| +#include "remoting/proto/event.pb.h" |
| namespace remoting { |
| -using protocol::MouseEvent; |
| - |
| -PepperInputHandler::PepperInputHandler(ClientContext* context, |
| - protocol::ConnectionToHost* connection, |
| - PepperViewProxy* view) |
| - : InputHandler(context, connection, view), |
| - pepper_view_(view), |
| - wheel_ticks_x_(0), |
| - wheel_ticks_y_(0) { |
| +PepperInputHandler::PepperInputHandler(protocol::InputStub* input_stub) |
| + : input_stub_(input_stub), wheel_ticks_x_(0), wheel_ticks_y_(0) |
| +{ |
| } |
| PepperInputHandler::~PepperInputHandler() { |
| } |
| -void PepperInputHandler::Initialize() { |
| -} |
| - |
| -void PepperInputHandler::HandleKeyEvent(bool keydown, |
| - const pp::KeyboardInputEvent& event) { |
| - SendKeyEvent(keydown, event.GetKeyCode()); |
| -} |
| +bool PepperInputHandler::HandleInputEvent(const pp::InputEvent& event) { |
| + switch (event.GetType()) { |
| + case PP_INPUTEVENT_TYPE_CONTEXTMENU: { |
| + // We need to return true here or else we'll get a local (plugin) context |
| + // menu instead of the mouseup event for the right click. |
| + return true; |
| + } |
| + |
| + case PP_INPUTEVENT_TYPE_KEYDOWN: |
| + case PP_INPUTEVENT_TYPE_KEYUP: { |
| + pp::KeyboardInputEvent pp_key_event(event); |
| + protocol::KeyEvent key_event; |
| + key_event.set_keycode(pp_key_event.GetKeyCode()); |
| + key_event.set_pressed(event.GetType() == PP_INPUTEVENT_TYPE_KEYDOWN); |
| + input_stub_->InjectKeyEvent(key_event); |
| + return true; |
| + } |
| + |
| + case PP_INPUTEVENT_TYPE_MOUSEDOWN: |
| + case PP_INPUTEVENT_TYPE_MOUSEUP: { |
| + pp::MouseInputEvent pp_mouse_event(event); |
| + protocol::MouseEvent mouse_event; |
| + switch (pp_mouse_event.GetButton()) { |
| + case PP_INPUTEVENT_MOUSEBUTTON_LEFT: |
| + mouse_event.set_button(protocol::MouseEvent::BUTTON_LEFT); |
| + break; |
| + case PP_INPUTEVENT_MOUSEBUTTON_MIDDLE: |
| + mouse_event.set_button(protocol::MouseEvent::BUTTON_MIDDLE); |
| + break; |
| + case PP_INPUTEVENT_MOUSEBUTTON_RIGHT: |
| + mouse_event.set_button(protocol::MouseEvent::BUTTON_RIGHT); |
| + break; |
| + case PP_INPUTEVENT_MOUSEBUTTON_NONE: |
| + break; |
| + } |
| + if (mouse_event.has_button()) { |
| + bool is_down = (event.GetType() == PP_INPUTEVENT_TYPE_MOUSEDOWN); |
| + mouse_event.set_button_down(is_down); |
| + input_stub_->InjectMouseEvent(mouse_event); |
| + } |
| + return true; |
| + } |
| + |
| + case PP_INPUTEVENT_TYPE_MOUSEMOVE: |
| + case PP_INPUTEVENT_TYPE_MOUSEENTER: |
| + case PP_INPUTEVENT_TYPE_MOUSELEAVE: { |
| + pp::MouseInputEvent pp_mouse_event(event); |
| + protocol::MouseEvent mouse_event; |
| + mouse_event.set_x(pp_mouse_event.GetPosition().x()); |
| + mouse_event.set_y(pp_mouse_event.GetPosition().y()); |
| + input_stub_->InjectMouseEvent(mouse_event); |
| + return true; |
| + } |
| + |
| + case PP_INPUTEVENT_TYPE_WHEEL: { |
| + pp::WheelInputEvent pp_wheel_event(event); |
| + |
| + pp::FloatPoint ticks = pp_wheel_event.GetTicks(); |
| + wheel_ticks_x_ += ticks.x(); |
| + wheel_ticks_y_ += ticks.y(); |
| + |
| + int ticks_x = static_cast<int>(wheel_ticks_x_); |
| + int ticks_y = static_cast<int>(wheel_ticks_y_); |
| + if (ticks_x != 0 || ticks_y != 0) { |
| + wheel_ticks_x_ -= ticks_x; |
| + wheel_ticks_y_ -= ticks_y; |
| + protocol::MouseEvent mouse_event; |
| + mouse_event.set_wheel_offset_x(wheel_ticks_x_); |
| + mouse_event.set_wheel_offset_y(wheel_ticks_y_); |
| + input_stub_->InjectMouseEvent(mouse_event); |
| + } |
| + return true; |
| + } |
| + |
| + default: { |
| + LOG(INFO) << "Unhandled input event: " << event.GetType(); |
| + break; |
| + } |
| + } |
| -void PepperInputHandler::HandleCharacterEvent( |
| - const pp::KeyboardInputEvent& event) { |
| - // TODO(garykac): Coordinate key and char events. |
| + return false; |
| } |
| +#if 0 |
|
Sergey Ulanov
2011/12/20 00:05:35
Remove this code?
Wez
2011/12/20 07:14:14
Done.
|
| void PepperInputHandler::HandleMouseMoveEvent( |
| const pp::MouseInputEvent& event) { |
| SkIPoint p(SkIPoint::Make(event.GetPosition().x(), event.GetPosition().y())); |
| @@ -52,43 +118,6 @@ void PepperInputHandler::HandleMouseMoveEvent( |
| SendMouseMoveEvent(p.x() / horizontal_ratio, p.y() / vertical_ratio); |
| } |
| - |
| -void PepperInputHandler::HandleMouseButtonEvent( |
| - bool button_down, |
| - const pp::MouseInputEvent& event) { |
| - MouseEvent::MouseButton button = MouseEvent::BUTTON_UNDEFINED; |
| - switch (event.GetButton()) { |
| - case PP_INPUTEVENT_MOUSEBUTTON_LEFT: |
| - button = MouseEvent::BUTTON_LEFT; |
| - break; |
| - case PP_INPUTEVENT_MOUSEBUTTON_MIDDLE: |
| - button = MouseEvent::BUTTON_MIDDLE; |
| - break; |
| - case PP_INPUTEVENT_MOUSEBUTTON_RIGHT: |
| - button = MouseEvent::BUTTON_RIGHT; |
| - break; |
| - case PP_INPUTEVENT_MOUSEBUTTON_NONE: |
| - // Leave button undefined. |
| - break; |
| - } |
| - |
| - if (button != MouseEvent::BUTTON_UNDEFINED) { |
| - SendMouseButtonEvent(button_down, button); |
| - } |
| -} |
| - |
| -void PepperInputHandler::HandleMouseWheelEvent( |
| - const pp::WheelInputEvent& event) { |
| - pp::FloatPoint ticks = event.GetTicks(); |
| - wheel_ticks_x_ += ticks.x(); |
| - wheel_ticks_y_ += ticks.y(); |
| - int ticks_x = static_cast<int>(wheel_ticks_x_); |
| - int ticks_y = static_cast<int>(wheel_ticks_y_); |
| - if (ticks_x != 0 || ticks_y != 0) { |
| - wheel_ticks_x_ -= ticks_x; |
| - wheel_ticks_y_ -= ticks_y; |
| - SendMouseWheelEvent(ticks_x, ticks_y); |
| - } |
| -} |
| +#endif |
| } // namespace remoting |