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

Side by Side Diff: content/common/input/web_touch_event_traits.cc

Issue 247433003: Mark touchcancel events as uncancelable (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clean up and add tests Created 6 years, 8 months 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 | Annotate | Revision Log
OLDNEW
(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/common/input/web_touch_event_traits.h"
6
7 #include "base/logging.h"
8
9 using blink::WebInputEvent;
10 using blink::WebTouchEvent;
11 using blink::WebTouchPoint;
12
13 namespace content {
14
15 bool WebTouchEventTraits::AllTouchPointsHaveState(const WebTouchEvent& event,
16 blink::WebTouchPoint::State state) {
17 if(!event.touchesLength)
18 return false;
19 for (size_t i = 0; i < event.touchesLength; ++i) {
20 if (event.touches[i].state != state)
21 return false;
22 }
23 return true;
24 }
25
26 bool WebTouchEventTraits::IsTouchSequenceStart(const WebTouchEvent& event) {
27 DCHECK(event.touchesLength);
28 if (event.type != WebInputEvent::TouchStart)
29 return false;
30 return AllTouchPointsHaveState(event, blink::WebTouchPoint::StatePressed);
31 }
32
33 void WebTouchEventTraits::ResetType(WebTouchEvent* event,
34 WebInputEvent::Type type,
35 double timestamp_sec,
36 WebTouchEventTraits::ResetTouchesMode resetTouchesMode) {
37 DCHECK(WebInputEvent::isTouchEventType(type));
38 event->type = type;
39 event->cancelable = (type != WebInputEvent::TouchCancel);
40 event->timeStampSeconds = timestamp_sec;
41
42 if (resetTouchesMode == RESET_TOUCHES_STATE) {
43 WebTouchPoint::State newState = WebTouchPoint::StateUndefined;
44 switch (event->type) {
45 case WebInputEvent::TouchStart:
46 newState = WebTouchPoint::StatePressed;
47 break;
48 case WebInputEvent::TouchMove:
49 newState = WebTouchPoint::StateMoved;
50 break;
51 case WebInputEvent::TouchEnd:
52 newState = WebTouchPoint::StateReleased;
53 break;
54 case WebInputEvent::TouchCancel:
55 newState = WebTouchPoint::StateCancelled;
56 break;
57 default:
58 NOTREACHED();
59 break;
60 }
61 for (size_t i = 0; i < event->touchesLength; ++i)
62 event->touches[i].state = newState;
63 }
64 }
65
66 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698