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

Side by Side Diff: ui/aura/gestures/gesture_sequence.cc

Issue 9751011: Gesture recognition constants should all be stored in the GestureConfiguration object. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Protect unit tests from changes in GestureConfiguration. Created 8 years, 9 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/aura/gestures/gesture_sequence.h" 5 #include "ui/aura/gestures/gesture_sequence.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "ui/aura/event.h" 10 #include "ui/aura/event.h"
11 #include "ui/aura/root_window.h" 11 #include "ui/aura/root_window.h"
12 #include "ui/aura/gestures/gesture_configuration.h" 12 #include "ui/aura/gestures/gesture_configuration.h"
13 #include "ui/base/events.h" 13 #include "ui/base/events.h"
14 14
15 namespace {
16
17 // TODO(girard): Make these configurable in sync with this CL
18 // http://crbug.com/100773
19 const float kMinimumPinchUpdateDistance = 5; // in pixels
20 const float kMinimumDistanceForPinchScroll = 20;
21 const float kLongPressTimeInMilliseconds = 500;
22
23 } // namespace
24
25 namespace aura { 15 namespace aura {
26 16
27 namespace { 17 namespace {
28 18
29 // ui::EventType is mapped to TouchState so it can fit into 3 bits of 19 // ui::EventType is mapped to TouchState so it can fit into 3 bits of
30 // Signature. 20 // Signature.
31 enum TouchState { 21 enum TouchState {
32 TS_RELEASED, 22 TS_RELEASED,
33 TS_PRESSED, 23 TS_PRESSED,
34 TS_MOVED, 24 TS_MOVED,
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 Reset(); 475 Reset();
486 return false; 476 return false;
487 } 477 }
488 478
489 bool GestureSequence::TouchDown(const TouchEvent& event, 479 bool GestureSequence::TouchDown(const TouchEvent& event,
490 const GesturePoint& point, Gestures* gestures) { 480 const GesturePoint& point, Gestures* gestures) {
491 DCHECK(state_ == GS_NO_GESTURE); 481 DCHECK(state_ == GS_NO_GESTURE);
492 AppendTapDownGestureEvent(point, gestures); 482 AppendTapDownGestureEvent(point, gestures);
493 long_press_timer_->Start( 483 long_press_timer_->Start(
494 FROM_HERE, 484 FROM_HERE,
495 base::TimeDelta::FromMilliseconds(kLongPressTimeInMilliseconds), 485 base::TimeDelta::FromMilliseconds(
486 GestureConfiguration::long_press_time_in_ms()),
496 this, 487 this,
497 &GestureSequence::AppendLongPressGestureEvent); 488 &GestureSequence::AppendLongPressGestureEvent);
498 return true; 489 return true;
499 } 490 }
500 491
501 void GestureSequence::AppendLongPressGestureEvent() { 492 void GestureSequence::AppendLongPressGestureEvent() {
502 const GesturePoint* point = GetPointByPointId(0); 493 const GesturePoint* point = GetPointByPointId(0);
503 GestureEvent gesture( 494 GestureEvent gesture(
504 ui::ET_GESTURE_LONG_PRESS, 495 ui::ET_GESTURE_LONG_PRESS,
505 point->first_touch_position().x(), 496 point->first_touch_position().x(),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 538
548 bool GestureSequence::PinchUpdate(const TouchEvent& event, 539 bool GestureSequence::PinchUpdate(const TouchEvent& event,
549 const GesturePoint& point, Gestures* gestures) { 540 const GesturePoint& point, Gestures* gestures) {
550 DCHECK(state_ == GS_PINCH); 541 DCHECK(state_ == GS_PINCH);
551 542
552 const GesturePoint* point1 = GetPointByPointId(0); 543 const GesturePoint* point1 = GetPointByPointId(0);
553 const GesturePoint* point2 = GetPointByPointId(1); 544 const GesturePoint* point2 = GetPointByPointId(1);
554 545
555 float distance = point1->Distance(*point2); 546 float distance = point1->Distance(*point2);
556 if (abs(distance - pinch_distance_current_) < 547 if (abs(distance - pinch_distance_current_) <
557 GestureConfiguration::minimum_pinch_update_distance_in_pixels()) { 548 GestureConfiguration::min_pinch_update_distance_in_pixels()) {
558 // The fingers didn't move towards each other, or away from each other, 549 // The fingers didn't move towards each other, or away from each other,
559 // enough to constitute a pinch. But perhaps they moved enough in the same 550 // enough to constitute a pinch. But perhaps they moved enough in the same
560 // direction to do a two-finger scroll. 551 // direction to do a two-finger scroll.
561 if (!point1->DidScroll(event, 552 if (!point1->DidScroll(event,
562 GestureConfiguration::minimum_distance_for_pinch_scroll_in_pixels()) || 553 GestureConfiguration::min_distance_for_pinch_scroll_in_pixels()) ||
563 !point2->DidScroll(event, 554 !point2->DidScroll(event,
564 GestureConfiguration::minimum_distance_for_pinch_scroll_in_pixels())) 555 GestureConfiguration::min_distance_for_pinch_scroll_in_pixels()))
565 return false; 556 return false;
566 557
567 gfx::Point center = point1->last_touch_position().Middle( 558 gfx::Point center = point1->last_touch_position().Middle(
568 point2->last_touch_position()); 559 point2->last_touch_position());
569 AppendScrollGestureUpdate(point, center, gestures); 560 AppendScrollGestureUpdate(point, center, gestures);
570 } else { 561 } else {
571 AppendPinchGestureUpdate(*point1, *point2, 562 AppendPinchGestureUpdate(*point1, *point2,
572 distance / pinch_distance_current_, gestures); 563 distance / pinch_distance_current_, gestures);
573 pinch_distance_current_ = distance; 564 pinch_distance_current_ = distance;
574 } 565 }
(...skipping 10 matching lines...) Expand all
585 float distance = point1->Distance(*point2); 576 float distance = point1->Distance(*point2);
586 AppendPinchGestureEnd(*point1, *point2, 577 AppendPinchGestureEnd(*point1, *point2,
587 distance / pinch_distance_start_, gestures); 578 distance / pinch_distance_start_, gestures);
588 579
589 pinch_distance_start_ = 0; 580 pinch_distance_start_ = 0;
590 pinch_distance_current_ = 0; 581 pinch_distance_current_ = 0;
591 return true; 582 return true;
592 } 583 }
593 584
594 } // namespace aura 585 } // namespace aura
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698