| OLD | NEW |
| (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/renderer_host/input/gesture_event_packet.h" | |
| 6 | |
| 7 #include "base/logging.h" | |
| 8 | |
| 9 using blink::WebGestureEvent; | |
| 10 using blink::WebInputEvent; | |
| 11 using blink::WebTouchEvent; | |
| 12 using blink::WebTouchPoint; | |
| 13 | |
| 14 namespace content { | |
| 15 namespace { | |
| 16 | |
| 17 GestureEventPacket::GestureSource ToGestureSource(const WebTouchEvent& event) { | |
| 18 if (!event.touchesLength) | |
| 19 return GestureEventPacket::INVALID; | |
| 20 switch (event.type) { | |
| 21 case WebInputEvent::TouchStart: | |
| 22 for (size_t i = 0; i < event.touchesLength; i++) { | |
| 23 if (event.touches[i].state != WebTouchPoint::StatePressed) | |
| 24 return GestureEventPacket::TOUCH_START; | |
| 25 } | |
| 26 return GestureEventPacket::TOUCH_SEQUENCE_START; | |
| 27 case WebInputEvent::TouchMove: | |
| 28 return GestureEventPacket::TOUCH_MOVE; | |
| 29 case WebInputEvent::TouchEnd: | |
| 30 case WebInputEvent::TouchCancel: | |
| 31 for (size_t i = 0; i < event.touchesLength; i++) { | |
| 32 if (event.touches[i].state != WebTouchPoint::StateReleased && | |
| 33 event.touches[i].state != WebTouchPoint::StateCancelled) { | |
| 34 return GestureEventPacket::TOUCH_END; | |
| 35 } | |
| 36 } | |
| 37 return GestureEventPacket::TOUCH_SEQUENCE_END; | |
| 38 default: | |
| 39 return GestureEventPacket::INVALID; | |
| 40 } | |
| 41 } | |
| 42 | |
| 43 } // namespace | |
| 44 | |
| 45 GestureEventPacket::GestureEventPacket() | |
| 46 : gesture_count_(0), | |
| 47 gesture_source_(UNDEFINED) {} | |
| 48 | |
| 49 GestureEventPacket::GestureEventPacket(GestureSource source) | |
| 50 : gesture_count_(0), | |
| 51 gesture_source_(source) { | |
| 52 DCHECK_NE(gesture_source_, UNDEFINED); | |
| 53 } | |
| 54 | |
| 55 GestureEventPacket::GestureEventPacket(const GestureEventPacket& other) | |
| 56 : gesture_count_(other.gesture_count_), | |
| 57 gesture_source_(other.gesture_source_) { | |
| 58 std::copy(other.gestures_, other.gestures_ + other.gesture_count_, gestures_); | |
| 59 } | |
| 60 | |
| 61 GestureEventPacket::~GestureEventPacket() {} | |
| 62 | |
| 63 GestureEventPacket& GestureEventPacket::operator=( | |
| 64 const GestureEventPacket& other) { | |
| 65 gesture_count_ = other.gesture_count_; | |
| 66 gesture_source_ = other.gesture_source_; | |
| 67 std::copy(other.gestures_, other.gestures_ + other.gesture_count_, gestures_); | |
| 68 return *this; | |
| 69 } | |
| 70 | |
| 71 void GestureEventPacket::Push(const blink::WebGestureEvent& gesture) { | |
| 72 DCHECK(WebInputEvent::isGestureEventType(gesture.type)); | |
| 73 CHECK_LT(gesture_count_, static_cast<size_t>(kMaxGesturesPerTouch)); | |
| 74 gestures_[gesture_count_++] = gesture; | |
| 75 } | |
| 76 | |
| 77 GestureEventPacket GestureEventPacket::FromTouch(const WebTouchEvent& event) { | |
| 78 return GestureEventPacket(ToGestureSource(event)); | |
| 79 } | |
| 80 | |
| 81 GestureEventPacket GestureEventPacket::FromTouchTimeout( | |
| 82 const WebGestureEvent& event) { | |
| 83 GestureEventPacket packet(TOUCH_TIMEOUT); | |
| 84 packet.Push(event); | |
| 85 return packet; | |
| 86 } | |
| 87 | |
| 88 } // namespace content | |
| OLD | NEW |