Revert of Integrate SIMD optimisations for zlib (patchset #14 id:280001 of https...
[chromium-blink-merge.git] / content / common / input / gesture_event_stream_validator.cc
blobeccdbe0079f362d4392fe93365b88f4563cfbdcf
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.
5 #include "content/common/input/gesture_event_stream_validator.h"
7 #include "base/logging.h"
8 #include "third_party/WebKit/public/web/WebInputEvent.h"
10 using blink::WebInputEvent;
12 namespace content {
14 GestureEventStreamValidator::GestureEventStreamValidator()
15 : scrolling_(false), pinching_(false), waiting_for_tap_end_(false) {
18 GestureEventStreamValidator::~GestureEventStreamValidator() {
21 bool GestureEventStreamValidator::Validate(const blink::WebGestureEvent& event,
22 std::string* error_msg) {
23 DCHECK(error_msg);
24 error_msg->clear();
25 switch (event.type) {
26 case WebInputEvent::GestureScrollBegin:
27 if (scrolling_)
28 error_msg->append("Scroll begin during scroll\n");
29 if (pinching_)
30 error_msg->append("Scroll begin during pinch\n");
31 scrolling_ = true;
32 break;
33 case WebInputEvent::GestureScrollUpdate:
34 case WebInputEvent::GestureScrollUpdateWithoutPropagation:
35 if (!scrolling_)
36 error_msg->append("Scroll update outside of scroll\n");
37 break;
38 case WebInputEvent::GestureScrollEnd:
39 case WebInputEvent::GestureFlingStart:
40 if (!scrolling_)
41 error_msg->append("Scroll end outside of scroll\n");
42 if (pinching_)
43 error_msg->append("Ending scroll while pinching\n");
44 scrolling_ = false;
45 break;
46 case WebInputEvent::GesturePinchBegin:
47 if (pinching_)
48 error_msg->append("Pinch begin during pinch\n");
49 pinching_ = true;
50 break;
51 case WebInputEvent::GesturePinchUpdate:
52 if (!pinching_)
53 error_msg->append("Pinch update outside of pinch\n");
54 break;
55 case WebInputEvent::GesturePinchEnd:
56 if (!pinching_)
57 error_msg->append("Pinch end outside of pinch\n");
58 pinching_ = false;
59 break;
60 case WebInputEvent::GestureTapDown:
61 if (waiting_for_tap_end_)
62 error_msg->append("Missing tap end event\n");
63 waiting_for_tap_end_ = true;
64 break;
65 case WebInputEvent::GestureTapUnconfirmed:
66 if (!waiting_for_tap_end_)
67 error_msg->append("Missing TapDown event before TapUnconfirmed\n");
68 break;
69 case WebInputEvent::GestureTapCancel:
70 if (!waiting_for_tap_end_)
71 error_msg->append("Missing TapDown event before TapCancel\n");
72 waiting_for_tap_end_ = false;
73 break;
74 case WebInputEvent::GestureTap:
75 case WebInputEvent::GestureDoubleTap:
76 // Both Tap and DoubleTap gestures may be synthetically inserted, and do
77 // not require a preceding TapDown.
78 waiting_for_tap_end_ = false;
79 break;
80 default:
81 break;
83 return error_msg->empty();
86 } // namespace content