Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / content / common / input / gesture_event_stream_validator.cc
bloba6229f98b6995fc3c3622e46e51108debbad41a9
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_ || pinching_)
28 error_msg->append("Scroll begin during scroll\n");
29 scrolling_ = true;
30 break;
31 case WebInputEvent::GestureScrollUpdate:
32 case WebInputEvent::GestureScrollUpdateWithoutPropagation:
33 if (!scrolling_)
34 error_msg->append("Scroll update outside of scroll\n");
35 break;
36 case WebInputEvent::GestureScrollEnd:
37 case WebInputEvent::GestureFlingStart:
38 if (!scrolling_)
39 error_msg->append("Scroll end outside of scroll\n");
40 if (pinching_)
41 error_msg->append("Ending scroll while pinching\n");
42 scrolling_ = false;
43 break;
44 case WebInputEvent::GesturePinchBegin:
45 if (!scrolling_)
46 error_msg->append("Pinch begin outside of scroll\n");
47 if (pinching_)
48 error_msg->append("Pinch begin during pinch\n");
49 pinching_ = true;
50 break;
51 case WebInputEvent::GesturePinchUpdate:
52 if (!pinching_ || !scrolling_)
53 error_msg->append("Pinch update outside of pinch\n");
54 break;
55 case WebInputEvent::GesturePinchEnd:
56 if (!pinching_ || !scrolling_)
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::GestureTap:
66 case WebInputEvent::GestureTapCancel:
67 case WebInputEvent::GestureDoubleTap:
68 if (!waiting_for_tap_end_)
69 error_msg->append("Missing GestureTapDown event\n");
70 waiting_for_tap_end_ = false;
71 break;
72 default:
73 break;
75 return error_msg->empty();
78 } // namespace content