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

Side by Side Diff: ui/events/gesture_detection/gesture_detector.cc

Issue 2595943003: Null check secondary_pointer_down_event_ (Closed)
Patch Set: Created 3 years, 12 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 // MSVC++ requires this to be set before any other includes to get M_PI. 5 // MSVC++ requires this to be set before any other includes to get M_PI.
6 #define _USE_MATH_DEFINES 6 #define _USE_MATH_DEFINES
7 7
8 #include "ui/events/gesture_detection/gesture_detector.h" 8 #include "ui/events/gesture_detection/gesture_detector.h"
9 9
10 #include <stddef.h> 10 #include <stddef.h>
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 const float scroll_x = last_focus_x_ - focus_x; 304 const float scroll_x = last_focus_x_ - focus_x;
305 const float scroll_y = last_focus_y_ - focus_y; 305 const float scroll_y = last_focus_y_ - focus_y;
306 if (is_double_tapping_) { 306 if (is_double_tapping_) {
307 // Give the move events of the double-tap. 307 // Give the move events of the double-tap.
308 DCHECK(double_tap_listener_); 308 DCHECK(double_tap_listener_);
309 handled |= double_tap_listener_->OnDoubleTapEvent(ev); 309 handled |= double_tap_listener_->OnDoubleTapEvent(ev);
310 } else if (all_pointers_within_slop_regions_) { 310 } else if (all_pointers_within_slop_regions_) {
311 if (!IsWithinTouchSlop(ev)) { 311 if (!IsWithinTouchSlop(ev)) {
312 handled = listener_->OnScroll( 312 handled = listener_->OnScroll(
313 *current_down_event_, ev, 313 *current_down_event_, ev,
314 (maximum_pointer_count_ > 1 ? *secondary_pointer_down_event_ 314 (maximum_pointer_count_ > 1 && secondary_pointer_down_event_)
315 : ev), 315 ? *secondary_pointer_down_event_
316 : ev,
316 scroll_x, scroll_y); 317 scroll_x, scroll_y);
317 last_focus_x_ = focus_x; 318 last_focus_x_ = focus_x;
318 last_focus_y_ = focus_y; 319 last_focus_y_ = focus_y;
319 all_pointers_within_slop_regions_ = false; 320 all_pointers_within_slop_regions_ = false;
320 timeout_handler_->Stop(); 321 timeout_handler_->Stop();
321 } 322 }
322 323
323 const float delta_x = focus_x - down_focus_x_; 324 const float delta_x = focus_x - down_focus_x_;
324 const float delta_y = focus_y - down_focus_y_; 325 const float delta_y = focus_y - down_focus_y_;
325 const float distance_square = delta_x * delta_x + delta_y * delta_y; 326 const float distance_square = delta_x * delta_x + delta_y * delta_y;
326 if (distance_square > double_tap_touch_slop_square_) 327 if (distance_square > double_tap_touch_slop_square_)
327 always_in_bigger_tap_region_ = false; 328 always_in_bigger_tap_region_ = false;
328 } else if (std::abs(scroll_x) > kScrollEpsilon || 329 } else if (std::abs(scroll_x) > kScrollEpsilon ||
329 std::abs(scroll_y) > kScrollEpsilon) { 330 std::abs(scroll_y) > kScrollEpsilon) {
330 handled = listener_->OnScroll( 331 handled = listener_->OnScroll(
331 *current_down_event_, ev, 332 *current_down_event_, ev,
332 (maximum_pointer_count_ > 1 ? *secondary_pointer_down_event_ 333 (maximum_pointer_count_ > 1 && secondary_pointer_down_event_)
333 : ev), 334 ? *secondary_pointer_down_event_
335 : ev,
334 scroll_x, scroll_y); 336 scroll_x, scroll_y);
335 last_focus_x_ = focus_x; 337 last_focus_x_ = focus_x;
336 last_focus_y_ = focus_y; 338 last_focus_y_ = focus_y;
337 } 339 }
338 340
339 if (!two_finger_tap_allowed_for_gesture_) 341 if (!two_finger_tap_allowed_for_gesture_)
340 break; 342 break;
341 343
342 // Two-finger tap should be prevented if either pointer exceeds its 344 // Two-finger tap should be prevented if either pointer exceeds its
343 // (independent) slop region. 345 // (independent) slop region.
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 bool GestureDetector::IsWithinTouchSlop(const MotionEvent& ev) { 548 bool GestureDetector::IsWithinTouchSlop(const MotionEvent& ev) {
547 // If there have been more than two down pointers in the touch sequence, 549 // If there have been more than two down pointers in the touch sequence,
548 // tapping is not possible. Slop region check is not needed. 550 // tapping is not possible. Slop region check is not needed.
549 if (maximum_pointer_count_ > 2) 551 if (maximum_pointer_count_ > 2)
550 return false; 552 return false;
551 553
552 for (size_t i = 0; i < ev.GetPointerCount(); i++) { 554 for (size_t i = 0; i < ev.GetPointerCount(); i++) {
553 const int pointer_id = ev.GetPointerId(i); 555 const int pointer_id = ev.GetPointerId(i);
554 const MotionEvent* source_pointer_down_event = GetSourcePointerDownEvent( 556 const MotionEvent* source_pointer_down_event = GetSourcePointerDownEvent(
555 *current_down_event_, 557 *current_down_event_,
556 maximum_pointer_count_ > 1 ? *secondary_pointer_down_event_ 558 (maximum_pointer_count_ > 1 && secondary_pointer_down_event_)
557 : *current_down_event_, 559 ? *secondary_pointer_down_event_
560 : *current_down_event_,
558 pointer_id); 561 pointer_id);
559 DCHECK(source_pointer_down_event); 562 DCHECK(source_pointer_down_event);
560 if (!source_pointer_down_event) 563 if (!source_pointer_down_event)
561 return false; 564 return false;
562 565
563 int source_index = 566 int source_index =
564 source_pointer_down_event->FindPointerIndexOfId(pointer_id); 567 source_pointer_down_event->FindPointerIndexOfId(pointer_id);
565 DCHECK_GE(source_index, 0); 568 DCHECK_GE(source_index, 0);
566 if (source_index < 0) 569 if (source_index < 0)
567 return false; 570 return false;
(...skipping 17 matching lines...) Expand all
585 for (size_t i = 0; i < secondary_pointer_down_event.GetPointerCount(); i++) { 588 for (size_t i = 0; i < secondary_pointer_down_event.GetPointerCount(); i++) {
586 if (secondary_pointer_down_event.GetPointerId(i) == pointer_id) 589 if (secondary_pointer_down_event.GetPointerId(i) == pointer_id)
587 return &secondary_pointer_down_event; 590 return &secondary_pointer_down_event;
588 } 591 }
589 592
590 NOTREACHED(); 593 NOTREACHED();
591 return nullptr; 594 return nullptr;
592 } 595 }
593 596
594 } // namespace ui 597 } // namespace ui
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698