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

Side by Side Diff: blimp/net/input_message_generator.cc

Issue 1426993008: Serialize a subset of WebInputEvents to protobufs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re-add fatal log. Created 5 years 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
« no previous file with comments | « blimp/net/input_message_generator.h ('k') | blimp/net/input_message_processor.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 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 "blimp/net/input_message_generator.h"
6
7 #include "base/logging.h"
8 #include "blimp/common/proto/blimp_message.pb.h"
9 #include "blimp/common/proto/input.pb.h"
10 #include "blimp/net/blimp_message_processor.h"
11 #include "third_party/WebKit/public/platform/WebGestureDevice.h"
12 #include "third_party/WebKit/public/web/WebInputEvent.h"
13
14 namespace blimp {
15 namespace {
16
17 void CommonWebGestureToProto(const blink::WebGestureEvent& event,
18 InputMessage::Type type,
19 InputMessage* proto) {
20 proto->set_type(type);
21 proto->set_timestamp_seconds(event.timeStampSeconds);
22
23 GestureCommon* common = proto->mutable_gesture_common();
24 common->set_x(event.x);
25 common->set_y(event.y);
26 common->set_global_x(event.globalX);
27 common->set_global_y(event.globalY);
28 }
29
30 void GestureScrollBeginToProto(const blink::WebGestureEvent& event,
31 InputMessage* proto) {
32 CommonWebGestureToProto(event, InputMessage::Type_GestureScrollBegin, proto);
33
34 GestureScrollBegin* details = proto->mutable_gesture_scroll_begin();
35 details->set_delta_x_hint(event.data.scrollBegin.deltaXHint);
36 details->set_delta_y_hint(event.data.scrollBegin.deltaYHint);
37 details->set_target_viewport(event.data.scrollBegin.targetViewport);
38 }
39
40 void GestureScrollEndToProto(const blink::WebGestureEvent& event,
41 InputMessage* proto) {
42 CommonWebGestureToProto(event, InputMessage::Type_GestureScrollEnd, proto);
43 }
44
45 void GestureScrollUpdateToProto(const blink::WebGestureEvent& event,
46 InputMessage* proto) {
47 CommonWebGestureToProto(event, InputMessage::Type_GestureScrollUpdate, proto);
48
49 GestureScrollUpdate* details = proto->mutable_gesture_scroll_update();
50 details->set_delta_x(event.data.scrollUpdate.deltaX);
51 details->set_delta_y(event.data.scrollUpdate.deltaY);
52 details->set_velocity_x(event.data.scrollUpdate.velocityX);
53 details->set_velocity_y(event.data.scrollUpdate.velocityY);
54 details->set_previous_update_in_sequence_prevented(
55 event.data.scrollUpdate.previousUpdateInSequencePrevented);
56 details->set_prevent_propagation(
57 event.data.scrollUpdate.preventPropagation);
58 details->set_inertial(event.data.scrollUpdate.inertial);
59 }
60
61 void GestureFlingStartToProto(const blink::WebGestureEvent& event,
62 InputMessage* proto) {
63 CommonWebGestureToProto(event, InputMessage::Type_GestureFlingStart, proto);
64
65 GestureFlingStart* details = proto->mutable_gesture_fling_start();
66 details->set_velocity_x(event.data.flingStart.velocityX);
67 details->set_velocity_y(event.data.flingStart.velocityY);
68 details->set_target_viewport(event.data.flingStart.targetViewport);
69 }
70
71 void GestureFlingCancelToProto(const blink::WebGestureEvent& event,
72 InputMessage* proto) {
73 CommonWebGestureToProto(event, InputMessage::Type_GestureFlingCancel, proto);
74
75 GestureFlingCancel* details = proto->mutable_gesture_fling_cancel();
76 details->set_prevent_boosting(event.data.flingCancel.preventBoosting);
77 }
78
79 void GestureTapToProto(const blink::WebGestureEvent& event,
80 InputMessage* proto) {
81 CommonWebGestureToProto(event, InputMessage::Type_GestureTap, proto);
82
83 GestureTap* details = proto->mutable_gesture_tap();
84 details->set_tap_count(event.data.tap.tapCount);
85 details->set_width(event.data.tap.width);
86 details->set_height(event.data.tap.height);
87 }
88
89 void GesturePinchBeginToProto(const blink::WebGestureEvent& event,
90 InputMessage* proto) {
91 CommonWebGestureToProto(event, InputMessage::Type_GesturePinchBegin, proto);
92 }
93
94 void GesturePinchEndToProto(const blink::WebGestureEvent& event,
95 InputMessage* proto) {
96 CommonWebGestureToProto(event, InputMessage::Type_GesturePinchEnd, proto);
97 }
98
99 void GesturePinchUpdateToProto(const blink::WebGestureEvent& event,
100 InputMessage* proto) {
101 CommonWebGestureToProto(event, InputMessage::Type_GesturePinchUpdate, proto);
102
103 GesturePinchUpdate* details = proto->mutable_gesture_pinch_update();
104 details->set_zoom_disabled(event.data.pinchUpdate.zoomDisabled);
105 details->set_scale(event.data.pinchUpdate.scale);
106 }
107
108 } // namespace
109
110 InputMessageGenerator::InputMessageGenerator() {}
111
112 InputMessageGenerator::~InputMessageGenerator() {}
113
114 scoped_ptr<BlimpMessage> InputMessageGenerator::GenerateMessage(
115 const blink::WebInputEvent& event) {
116 scoped_ptr<BlimpMessage> message(new BlimpMessage);
117 message->set_type(BlimpMessage::INPUT);
118 InputMessage* details = message->mutable_input();
119
120 switch (event.type) {
121 case blink::WebInputEvent::Type::GestureScrollBegin:
122 GestureScrollBeginToProto(
123 static_cast<const blink::WebGestureEvent&>(event),
124 details);
125 break;
126 case blink::WebInputEvent::Type::GestureScrollEnd:
127 GestureScrollEndToProto(static_cast<const blink::WebGestureEvent&>(event),
128 details);
129 break;
130 case blink::WebInputEvent::Type::GestureScrollUpdate:
131 GestureScrollUpdateToProto(
132 static_cast<const blink::WebGestureEvent&>(event),
133 details);
134 break;
135 case blink::WebInputEvent::Type::GestureFlingStart:
136 GestureFlingStartToProto(
137 static_cast<const blink::WebGestureEvent&>(event),
138 details);
139 break;
140 case blink::WebInputEvent::Type::GestureFlingCancel:
141 GestureFlingCancelToProto(
142 static_cast<const blink::WebGestureEvent&>(event),
143 details);
144 break;
145 case blink::WebInputEvent::Type::GestureTap:
146 GestureTapToProto(static_cast<const blink::WebGestureEvent&>(event),
147 details);
148 break;
149 case blink::WebInputEvent::Type::GesturePinchBegin:
150 GesturePinchBeginToProto(
151 static_cast<const blink::WebGestureEvent&>(event),
152 details);
153 break;
154 case blink::WebInputEvent::Type::GesturePinchEnd:
155 GesturePinchEndToProto(static_cast<const blink::WebGestureEvent&>(event),
156 details);
157 break;
158 case blink::WebInputEvent::Type::GesturePinchUpdate:
159 GesturePinchUpdateToProto(
160 static_cast<const blink::WebGestureEvent&>(event),
161 details);
162 break;
163 // Unsupported types:
164 case blink::WebInputEvent::Type::Undefined:
165 case blink::WebInputEvent::Type::MouseDown:
166 case blink::WebInputEvent::Type::MouseUp:
167 case blink::WebInputEvent::Type::MouseMove:
168 case blink::WebInputEvent::Type::MouseEnter:
169 case blink::WebInputEvent::Type::MouseLeave:
170 case blink::WebInputEvent::Type::ContextMenu:
171 case blink::WebInputEvent::Type::MouseWheel:
172 case blink::WebInputEvent::Type::RawKeyDown:
173 case blink::WebInputEvent::Type::KeyDown:
174 case blink::WebInputEvent::Type::KeyUp:
175 case blink::WebInputEvent::Type::Char:
176 case blink::WebInputEvent::Type::GestureShowPress:
177 case blink::WebInputEvent::Type::GestureTapUnconfirmed:
178 case blink::WebInputEvent::Type::GestureTapDown:
179 case blink::WebInputEvent::Type::GestureTapCancel:
180 case blink::WebInputEvent::Type::GestureDoubleTap:
181 case blink::WebInputEvent::Type::GestureTwoFingerTap:
182 case blink::WebInputEvent::Type::GestureLongPress:
183 case blink::WebInputEvent::Type::GestureLongTap:
184 case blink::WebInputEvent::Type::TouchStart:
185 case blink::WebInputEvent::Type::TouchMove:
186 case blink::WebInputEvent::Type::TouchEnd:
187 case blink::WebInputEvent::Type::TouchCancel:
188 NOTIMPLEMENTED();
189 return nullptr;
190 }
191
192 return message;
193 }
194
195 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/net/input_message_generator.h ('k') | blimp/net/input_message_processor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698