Chromium Code Reviews| OLD | NEW |
|---|---|
| (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_processor.h" | |
| 6 | |
| 7 #include "base/logging.h" | |
| 8 #include "blimp/common/proto/input.pb.h" | |
| 9 #include "third_party/WebKit/public/platform/WebGestureDevice.h" | |
| 10 #include "third_party/WebKit/public/web/WebInputEvent.h" | |
| 11 | |
| 12 namespace blimp { | |
| 13 namespace { | |
| 14 | |
| 15 void ProtoToBaseWebGesture(const GestureBaseProperties& proto, | |
| 16 blink::WebGestureEvent* event) { | |
| 17 event->x = proto.x(); | |
| 18 event->y = proto.y(); | |
| 19 event->globalX = proto.global_x(); | |
| 20 event->globalY = proto.global_y(); | |
| 21 event->sourceDevice = blink::WebGestureDevice::WebGestureDeviceTouchscreen; | |
| 22 } | |
| 23 | |
| 24 scoped_ptr<blink::WebInputEvent> ProtoToGestureScrollBegin( | |
| 25 const InputMessage& proto) { | |
| 26 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
|
nyquist
2015/11/24 08:12:43
Optional nit: Did you investigate if the code was
David Trainor- moved to gerrit
2015/11/24 20:08:28
Done.
| |
| 27 event->type = blink::WebInputEvent::Type::GestureScrollBegin; | |
| 28 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 29 | |
| 30 const GestureScrollBegin& details = proto.gesture_scroll_begin(); | |
| 31 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 32 event->data.scrollBegin.deltaXHint = details.delta_x_hint(); | |
| 33 event->data.scrollBegin.deltaYHint = details.delta_y_hint(); | |
| 34 event->data.scrollBegin.targetViewport = details.target_viewport(); | |
| 35 | |
| 36 return event.Pass(); | |
| 37 } | |
| 38 | |
| 39 scoped_ptr<blink::WebInputEvent> ProtoToGestureScrollEnd( | |
| 40 const InputMessage& proto) { | |
| 41 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
| 42 event->type = blink::WebInputEvent::Type::GestureScrollEnd; | |
| 43 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 44 | |
| 45 const GestureScrollEnd& details = proto.gesture_scroll_end(); | |
| 46 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 47 | |
| 48 return event.Pass(); | |
| 49 } | |
| 50 | |
| 51 scoped_ptr<blink::WebInputEvent> ProtoToGestureScrollUpdate( | |
| 52 const InputMessage& proto) { | |
| 53 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
| 54 event->type = blink::WebInputEvent::Type::GestureScrollUpdate; | |
| 55 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 56 | |
| 57 const GestureScrollUpdate& details = proto.gesture_scroll_update(); | |
| 58 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 59 event->data.scrollUpdate.deltaX = details.delta_x(); | |
| 60 event->data.scrollUpdate.deltaY = details.delta_y(); | |
| 61 event->data.scrollUpdate.velocityX = details.velocity_x(); | |
| 62 event->data.scrollUpdate.velocityY = details.velocity_y(); | |
| 63 event->data.scrollUpdate.previousUpdateInSequencePrevented = | |
| 64 details.previous_update_in_sequence_prevented(); | |
| 65 event->data.scrollUpdate.preventPropagation = details.prevent_propagation(); | |
| 66 event->data.scrollUpdate.inertial = details.inertial(); | |
| 67 | |
| 68 return event.Pass(); | |
| 69 } | |
| 70 | |
| 71 scoped_ptr<blink::WebInputEvent> ProtoToGestureFlingStart( | |
| 72 const InputMessage& proto) { | |
| 73 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
| 74 event->type = blink::WebInputEvent::Type::GestureFlingStart; | |
| 75 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 76 | |
| 77 const GestureFlingStart& details = proto.gesture_fling_start(); | |
| 78 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 79 event->data.flingStart.velocityX = details.velocity_x(); | |
| 80 event->data.flingStart.velocityY = details.velocity_y(); | |
| 81 event->data.flingStart.targetViewport = details.target_viewport(); | |
| 82 | |
| 83 return event.Pass(); | |
| 84 } | |
| 85 | |
| 86 scoped_ptr<blink::WebInputEvent> ProtoToGestureFlingCancel( | |
| 87 const InputMessage& proto) { | |
| 88 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
| 89 event->type = blink::WebInputEvent::Type::GestureFlingCancel; | |
| 90 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 91 | |
| 92 const GestureFlingCancel& details = proto.gesture_fling_cancel(); | |
| 93 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 94 event->data.flingCancel.preventBoosting = details.prevent_boosting(); | |
| 95 | |
| 96 return event.Pass(); | |
| 97 } | |
| 98 | |
| 99 scoped_ptr<blink::WebInputEvent> ProtoToGestureTap( | |
| 100 const InputMessage& proto) { | |
| 101 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
| 102 event->type = blink::WebInputEvent::Type::GestureTap; | |
| 103 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 104 | |
| 105 const GestureTap& details = proto.gesture_tap(); | |
| 106 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 107 event->data.tap.tapCount = details.tap_count(); | |
| 108 event->data.tap.width = details.width(); | |
| 109 event->data.tap.height = details.height(); | |
| 110 | |
| 111 return event.Pass(); | |
| 112 } | |
| 113 | |
| 114 scoped_ptr<blink::WebInputEvent> ProtoToGesturePinchBegin( | |
| 115 const InputMessage& proto) { | |
| 116 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
| 117 event->type = blink::WebInputEvent::Type::GesturePinchBegin; | |
| 118 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 119 | |
| 120 const GesturePinchBegin& details = proto.gesture_pinch_begin(); | |
| 121 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 122 | |
| 123 return event.Pass(); | |
| 124 } | |
| 125 | |
| 126 scoped_ptr<blink::WebInputEvent> ProtoToGesturePinchEnd( | |
| 127 const InputMessage& proto) { | |
| 128 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
| 129 event->type = blink::WebInputEvent::Type::GesturePinchEnd; | |
| 130 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 131 | |
| 132 const GesturePinchEnd& details = proto.gesture_pinch_end(); | |
| 133 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 134 | |
| 135 return event.Pass(); | |
| 136 } | |
| 137 | |
| 138 scoped_ptr<blink::WebInputEvent> ProtoToGesturePinchUpdate( | |
| 139 const InputMessage& proto) { | |
| 140 scoped_ptr<blink::WebGestureEvent> event(new blink::WebGestureEvent); | |
| 141 event->type = blink::WebInputEvent::Type::GesturePinchUpdate; | |
| 142 event->timeStampSeconds = proto.timestamp_seconds(); | |
| 143 | |
| 144 const GesturePinchUpdate& details = proto.gesture_pinch_update(); | |
| 145 ProtoToBaseWebGesture(details.base(), event.get()); | |
| 146 event->data.pinchUpdate.zoomDisabled = details.zoom_disabled(); | |
| 147 event->data.pinchUpdate.scale = details.scale(); | |
| 148 | |
| 149 return event.Pass(); | |
| 150 } | |
| 151 | |
| 152 } // namespace | |
| 153 | |
| 154 InputMessageProcessor::InputMessageProcessor() {} | |
| 155 | |
| 156 InputMessageProcessor::~InputMessageProcessor() {} | |
| 157 | |
| 158 scoped_ptr<blink::WebInputEvent> InputMessageProcessor::ProcessMessage( | |
| 159 const InputMessage& message) { | |
| 160 scoped_ptr<blink::WebInputEvent> event; | |
| 161 | |
| 162 switch (message.type()) { | |
| 163 case InputMessage::Type_GestureScrollBegin: | |
| 164 event = ProtoToGestureScrollBegin(message).Pass(); | |
| 165 break; | |
| 166 case InputMessage::Type_GestureScrollEnd: | |
| 167 event = ProtoToGestureScrollEnd(message).Pass(); | |
| 168 break; | |
| 169 case InputMessage::Type_GestureScrollUpdate: | |
| 170 event = ProtoToGestureScrollUpdate(message).Pass(); | |
| 171 break; | |
| 172 case InputMessage::Type_GestureFlingStart: | |
| 173 event = ProtoToGestureFlingStart(message).Pass(); | |
| 174 break; | |
| 175 case InputMessage::Type_GestureFlingCancel: | |
| 176 event = ProtoToGestureFlingCancel(message).Pass(); | |
| 177 break; | |
| 178 case InputMessage::Type_GestureTap: | |
| 179 event = ProtoToGestureTap(message).Pass(); | |
| 180 break; | |
| 181 case InputMessage::Type_GesturePinchBegin: | |
| 182 event = ProtoToGesturePinchBegin(message).Pass(); | |
| 183 break; | |
| 184 case InputMessage::Type_GesturePinchEnd: | |
| 185 event = ProtoToGesturePinchEnd(message).Pass(); | |
| 186 break; | |
| 187 case InputMessage::Type_GesturePinchUpdate: | |
| 188 event = ProtoToGesturePinchUpdate(message).Pass(); | |
| 189 break; | |
| 190 default: | |
| 191 // Unsupported WebInputEvent. | |
|
Wez
2015/11/23 22:41:41
Now that the UNKNOWN enum value CL has landed, let
David Trainor- moved to gerrit
2015/11/24 20:08:28
Done.
| |
| 192 return nullptr; | |
| 193 } | |
| 194 | |
| 195 return event; | |
| 196 } | |
| 197 | |
| 198 } // namespace blimp | |
| OLD | NEW |