OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/common/input/web_input_event_traits.h" | 5 #include "content/common/input/web_input_event_traits.h" |
6 | 6 |
7 #include <bitset> | 7 #include <bitset> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 | 198 |
199 bool CanCoalesce(const WebTouchEvent& event_to_coalesce, | 199 bool CanCoalesce(const WebTouchEvent& event_to_coalesce, |
200 const WebTouchEvent& event) { | 200 const WebTouchEvent& event) { |
201 if (event.type != event_to_coalesce.type || | 201 if (event.type != event_to_coalesce.type || |
202 event.type != WebInputEvent::TouchMove || | 202 event.type != WebInputEvent::TouchMove || |
203 event.modifiers != event_to_coalesce.modifiers || | 203 event.modifiers != event_to_coalesce.modifiers || |
204 event.touchesLength != event_to_coalesce.touchesLength || | 204 event.touchesLength != event_to_coalesce.touchesLength || |
205 event.touchesLength > WebTouchEvent::touchesLengthCap) | 205 event.touchesLength > WebTouchEvent::touchesLengthCap) |
206 return false; | 206 return false; |
207 | 207 |
208 COMPILE_ASSERT(WebTouchEvent::touchesLengthCap <= sizeof(int32_t) * 8U, | 208 static_assert(WebTouchEvent::touchesLengthCap <= sizeof(int32_t) * 8U, |
209 suboptimal_touches_length_cap_size); | 209 "suboptimal touchesLengthCap size"); |
210 // Ensure that we have a 1-to-1 mapping of pointer ids between touches. | 210 // Ensure that we have a 1-to-1 mapping of pointer ids between touches. |
211 std::bitset<WebTouchEvent::touchesLengthCap> unmatched_event_touches( | 211 std::bitset<WebTouchEvent::touchesLengthCap> unmatched_event_touches( |
212 (1 << event.touchesLength) - 1); | 212 (1 << event.touchesLength) - 1); |
213 for (unsigned i = 0; i < event_to_coalesce.touchesLength; ++i) { | 213 for (unsigned i = 0; i < event_to_coalesce.touchesLength; ++i) { |
214 int event_touch_index = | 214 int event_touch_index = |
215 GetIndexOfTouchID(event, event_to_coalesce.touches[i].id); | 215 GetIndexOfTouchID(event, event_to_coalesce.touches[i].id); |
216 if (event_touch_index == kInvalidTouchIndex) | 216 if (event_touch_index == kInvalidTouchIndex) |
217 return false; | 217 return false; |
218 if (!unmatched_event_touches[event_touch_index]) | 218 if (!unmatched_event_touches[event_touch_index]) |
219 return false; | 219 return false; |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 case WebInputEvent::TouchStart: | 479 case WebInputEvent::TouchStart: |
480 case WebInputEvent::TouchMove: | 480 case WebInputEvent::TouchMove: |
481 case WebInputEvent::TouchEnd: | 481 case WebInputEvent::TouchEnd: |
482 return !static_cast<const WebTouchEvent&>(event).cancelable; | 482 return !static_cast<const WebTouchEvent&>(event).cancelable; |
483 default: | 483 default: |
484 return false; | 484 return false; |
485 } | 485 } |
486 } | 486 } |
487 | 487 |
488 } // namespace content | 488 } // namespace content |
OLD | NEW |