Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Side by Side Diff: content/browser/devtools/protocol/input_handler.cc

Issue 508973003: DevTools: Protocol handler generator for content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/devtools/protocol/input_handler.h"
6
7 #include "base/strings/stringprintf.h"
8 #include "content/browser/renderer_host/render_view_host_impl.h"
9 #include "third_party/WebKit/public/web/WebInputEvent.h"
10
11 namespace content {
12 namespace devtools {
13 namespace input {
14
15 typedef DevToolsProtocolFrontend::Response Response;
16
17 InputHandler::InputHandler()
18 : host_(NULL) {
19 }
20
21 InputHandler::~InputHandler() {
22 }
23
24 void InputHandler::OnClientDetached() {
25 }
26
27 void InputHandler::SetRenderViewHost(RenderViewHostImpl* host) {
28 host_ = host;
29 }
30
31 Response InputHandler::EmulateTouchFromMouseEvent(std::string type,
32 int x,
33 int y,
34 double* delta_x,
35 double* delta_y,
36 int* modifiers,
37 double* timestamp,
38 std::string* button,
39 int* click_count) {
40 using namespace emulate_touch_from_mouse_event;
dgozman 2014/09/12 11:48:45 Let's not |using namespace|.
vkuzkokov 2014/09/12 14:22:52 Done.
41
42 blink::WebMouseWheelEvent wheel_event;
43 blink::WebMouseEvent mouse_event;
44 blink::WebMouseEvent* event = &mouse_event;
45
46 if (type == kTypeMousePressed) {
47 event->type = blink::WebInputEvent::MouseDown;
48 } else if (type == kTypeMouseReleased) {
49 event->type = blink::WebInputEvent::MouseUp;
50 } else if (type == kTypeMouseMoved) {
51 event->type = blink::WebInputEvent::MouseMove;
52 } else if (type == kTypeMouseWheel) {
53 if (!delta_x || !delta_y) {
54 return Response::InvalidParams(
55 "'deltaX' and 'deltaY' are expected for mouseWheel event");
56 }
57 wheel_event.deltaX = static_cast<float>(*delta_x);
58 wheel_event.deltaY = static_cast<float>(*delta_y);
59 event = &wheel_event;
60 event->type = blink::WebInputEvent::MouseWheel;
61 } else {
62 return Response::InvalidParams(
63 base::StringPrintf("Unexpected event type '%s'", type.c_str()));
64 }
65
66 if (modifiers) {
67 if (*modifiers & 1)
68 event->modifiers |= blink::WebInputEvent::AltKey;
69 if (*modifiers & 2)
70 event->modifiers |= blink::WebInputEvent::ControlKey;
71 if (*modifiers & 4)
72 event->modifiers |= blink::WebInputEvent::MetaKey;
73 if (*modifiers & 8)
74 event->modifiers |= blink::WebInputEvent::ShiftKey;
75 }
76
77 if (timestamp)
78 event->timeStampSeconds = *timestamp;
79
80 event->x = x;
81 event->y = y;
82 event->windowX = x;
83 event->windowY = y;
84 event->globalX = x;
85 event->globalY = y;
86
87 if (click_count)
88 event->clickCount = *click_count;
89
90 // TODO(vkuzkokov): make not optional
dgozman 2014/09/12 11:48:45 full stop please
vkuzkokov 2014/09/12 14:22:52 removed TODO - done.
91 if (!button)
92 return Response::InvalidParams("'button' parameter missing");
93
94 if (*button == "none") {
dgozman 2014/09/12 11:48:45 kButtonNone
vkuzkokov 2014/09/12 14:22:52 Done.
95 event->button = blink::WebMouseEvent::ButtonNone;
96 } else if (*button == kButtonLeft) {
97 event->button = blink::WebMouseEvent::ButtonLeft;
98 event->modifiers |= blink::WebInputEvent::LeftButtonDown;
99 } else if (*button == kButtonMiddle) {
100 event->button = blink::WebMouseEvent::ButtonMiddle;
101 event->modifiers |= blink::WebInputEvent::MiddleButtonDown;
102 } else if (*button == kButtonRight) {
103 event->button = blink::WebMouseEvent::ButtonRight;
104 event->modifiers |= blink::WebInputEvent::RightButtonDown;
105 } else {
106 return Response::InvalidParams(
107 base::StringPrintf("Unexpected mouse button '%s'", button->c_str()));
108 }
109
110 if (!host_)
111 return Response::ServerError("Could not connect to view");
112
113 if (event->type == blink::WebInputEvent::MouseWheel)
114 host_->ForwardWheelEvent(wheel_event);
115 else
116 host_->ForwardMouseEvent(mouse_event);
117 return Response::OK();
118 }
119
120 } // namespace input
121 } // namespace devtools
122 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698