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

Unified Diff: trunk/src/ui/chromeos/touch_exploration_controller_unittest.cc

Issue 407073008: Revert 284819 because it introduces leaks in TestingBoundaries and (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « trunk/src/ui/chromeos/touch_exploration_controller.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/src/ui/chromeos/touch_exploration_controller_unittest.cc
===================================================================
--- trunk/src/ui/chromeos/touch_exploration_controller_unittest.cc (revision 284848)
+++ trunk/src/ui/chromeos/touch_exploration_controller_unittest.cc (working copy)
@@ -72,24 +72,6 @@
return n * Factorial(n - 1);
}
-class MockTouchExplorationControllerDelegate
- : public ui::TouchExplorationControllerDelegate {
- public:
- virtual void PlayVolumeAdjustSound() OVERRIDE {
- ++num_times_adjust_sound_played_;
- }
- virtual void SetOutputLevel(int volume) OVERRIDE {
- volume_changes_.push_back(volume);
- }
-
- const std::vector<float> VolumeChanges() { return volume_changes_; }
- const size_t NumAdjustSounds() { return num_times_adjust_sound_played_; }
-
- private:
- std::vector<float> volume_changes_;
- size_t num_times_adjust_sound_played_ = 0;
-};
-
} // namespace
class TouchExplorationControllerTestApi {
@@ -128,29 +110,12 @@
touch_exploration_controller_->GESTURE_IN_PROGRESS;
}
- bool IsInSlideGestureStateForTesting() const {
- return touch_exploration_controller_->state_ ==
- touch_exploration_controller_->SLIDE_GESTURE;
- }
-
- gfx::Rect BoundsOfRootWindowInDIPForTesting() const {
- return touch_exploration_controller_->root_window_->GetBoundsInScreen();
- }
-
// VLOGs should be suppressed in tests that generate a lot of logs,
// for example permutations of nine touch events.
void SuppressVLOGsForTesting(bool suppress) {
touch_exploration_controller_->VLOG_on_ = !suppress;
}
- float GetMaxDistanceFromEdge() const {
- return touch_exploration_controller_->kMaxDistanceFromEdge;
- }
-
- float GetSlopDistanceFromEdge() const {
- return touch_exploration_controller_->kSlopDistanceFromEdge;
- }
-
private:
scoped_ptr<TouchExplorationController> touch_exploration_controller_;
@@ -247,9 +212,8 @@
if (!on && touch_exploration_controller_.get()) {
touch_exploration_controller_.reset();
} else if (on && !touch_exploration_controller_.get()) {
- touch_exploration_controller_.reset(
- new ui::TouchExplorationControllerTestApi(
- new TouchExplorationController(root_window(), &delegate_)));
+ touch_exploration_controller_.reset(new TouchExplorationControllerTestApi(
+ new ui::TouchExplorationController(root_window())));
touch_exploration_controller_->SetEventHandlerForTesting(
&event_capturer_);
cursor_client()->ShowCursor();
@@ -292,22 +256,6 @@
->IsInGestureInProgressStateForTesting();
}
- bool IsInSlideGestureState() {
- return touch_exploration_controller_->IsInSlideGestureStateForTesting();
- }
-
- gfx::Rect BoundsOfRootWindowInDIP() {
- return touch_exploration_controller_->BoundsOfRootWindowInDIPForTesting();
- }
-
- float GetMaxDistanceFromEdge() const{
- return touch_exploration_controller_->GetMaxDistanceFromEdge();
- }
-
- float GetSlopDistanceFromEdge() const{
- return touch_exploration_controller_->GetSlopDistanceFromEdge();
- }
-
base::TimeDelta Now() {
// This is the same as what EventTimeForNow() does, but here we do it
// with our simulated clock.
@@ -319,7 +267,6 @@
ui::GestureDetector::Config gesture_detector_config_;
// Owned by |generator_|.
base::SimpleTestTickClock* simulated_clock_;
- MockTouchExplorationControllerDelegate delegate_;
private:
EventCapturer event_capturer_;
@@ -562,9 +509,6 @@
TEST_F(TouchExplorationTest, TimerFiresLateDuringTouchExploration) {
SwitchTouchExplorationMode(true);
- // Make sure the touch is not in a corner of the screen.
- generator_->MoveTouch(gfx::Point(100, 200));
-
// Send a press, then add another finger after the double-tap timeout.
generator_->PressTouchId(1);
simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(1000));
@@ -1413,11 +1357,10 @@
EXPECT_FALSE(IsInGestureInProgressState());
float distance = gesture_detector_config_.touch_slop + 1;
- ui::TouchEvent first_press(
- ui::ET_TOUCH_PRESSED, gfx::Point(100, 200), 0, Now());
+ ui::TouchEvent first_press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 1), 0, Now());
generator_->Dispatch(&first_press);
simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(10));
- gfx::Point second_location(100 + distance, 200);
+ gfx::Point second_location(distance, 1);
generator_->MoveTouch(second_location);
EXPECT_TRUE(IsInGestureInProgressState());
EXPECT_FALSE(IsInTouchToMouseMode());
@@ -1445,193 +1388,4 @@
ASSERT_EQ(0U, captured_events.size());
}
-TEST_F(TouchExplorationTest, EnterSlideGestureState) {
- SwitchTouchExplorationMode(true);
- EXPECT_FALSE(IsInTouchToMouseMode());
- EXPECT_FALSE(IsInGestureInProgressState());
-
- gfx::Rect window = BoundsOfRootWindowInDIP();
- float distance = gesture_detector_config_.touch_slop + 1;
- ui::TouchEvent first_press(
- ui::ET_TOUCH_PRESSED, gfx::Point(window.right(), 1), 0, Now());
- gfx::Point second_location(window.right(), 1 + distance / 2);
- gfx::Point third_location(window.right(), 1 + distance);
-
- generator_->Dispatch(&first_press);
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(10));
-
- // Since we haven't moved past slop yet, we should not be in slide gesture.
- generator_->MoveTouch(second_location);
- EXPECT_FALSE(IsInTouchToMouseMode());
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_FALSE(IsInSlideGestureState());
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(10));
-
- // Once we are out of slop, we should be in slide gesture since we are along
- // the edge of the screen.
- generator_->MoveTouch(third_location);
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_TRUE(IsInSlideGestureState());
- EXPECT_FALSE(IsInTouchToMouseMode());
- const ScopedVector<ui::Event>& captured_events = GetCapturedEvents();
- ASSERT_EQ(0U, captured_events.size());
-
- // Since we are at the right edge of the screen, but the sound timer has not
- // elapsed, there should have two sounds that fired and two volume
- // changes (one for each movement).
- size_t num_adjust_sounds = delegate_.NumAdjustSounds();
- ASSERT_EQ(2U, num_adjust_sounds);
- ASSERT_EQ(2U, delegate_.VolumeChanges().size());
-
- // Exit out of slide gesture once touch is lifted, but not before even if the
- // grace period is over.
-
- AdvanceSimulatedTimePastPotentialTapDelay();
- ASSERT_EQ(0U, captured_events.size());
- EXPECT_FALSE(IsInTouchToMouseMode());
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_TRUE(IsInSlideGestureState());
-
- generator_->ReleaseTouch();
- ASSERT_EQ(0U, captured_events.size());
- EXPECT_FALSE(IsInTouchToMouseMode());
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_FALSE(IsInSlideGestureState());
-}
-
-// If a press + move occurred outside the boundaries, but within the slop
-// boundaries and then moved into the boundaries of an edge, there still should
-// not be a slide gesture.
-TEST_F(TouchExplorationTest, AvoidEnteringSlideGesture) {
- SwitchTouchExplorationMode(true);
-
- gfx::Rect window = BoundsOfRootWindowInDIP();
- float distance = gesture_detector_config_.touch_slop + 1;
- ui::TouchEvent first_press(
- ui::ET_TOUCH_PRESSED,
- gfx::Point(window.right() - GetSlopDistanceFromEdge(), 1),
- 0,
- Now());
- gfx::Point out_of_slop(window.right() - GetSlopDistanceFromEdge() + distance,
- 1);
- gfx::Point into_boundaries(window.right() - GetMaxDistanceFromEdge() / 2, 1);
-
- generator_->Dispatch(&first_press);
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(10));
-
- generator_->MoveTouch(out_of_slop);
- EXPECT_FALSE(IsInTouchToMouseMode());
- EXPECT_TRUE(IsInGestureInProgressState());
- EXPECT_FALSE(IsInSlideGestureState());
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(10));
-
- // Since we did not start moving while in the boundaries, we should not be in
- // slide gestures.
- generator_->MoveTouch(into_boundaries);
- EXPECT_TRUE(IsInGestureInProgressState());
- EXPECT_FALSE(IsInSlideGestureState());
- EXPECT_FALSE(IsInTouchToMouseMode());
- const ScopedVector<ui::Event>& captured_events = GetCapturedEvents();
- ASSERT_EQ(0U, captured_events.size());
-
- generator_->ReleaseTouch();
-}
-
-// If the slide gesture begins within the boundaries and then moves
-// SlopDistanceFromEdge there should still be a sound change. If the finger
-// moves into the center screen, there should no longer be a sound change but it
-// should still be in slide gesture. If the finger moves back into the edges
-// without lifting, it should start changing sound again.
-TEST_F(TouchExplorationTest, TestingBoundaries) {
- SwitchTouchExplorationMode(true);
-
- gfx::Rect window = BoundsOfRootWindowInDIP();
- gfx::Point initial_press(window.right() - GetMaxDistanceFromEdge() / 2, 1);
- ui::TouchEvent first_press(ui::ET_TOUCH_PRESSED, initial_press, 0, Now());
- gfx::Point touch_move(initial_press.x() + gesture_detector_config_.touch_slop,
- 1);
- gfx::Point into_slop_boundaries(
- window.right() - GetSlopDistanceFromEdge() / 2, 1);
- gfx::Point center_screen(window.right() / 2, window.bottom() / 2);
-
- generator_->Dispatch(&first_press);
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(10));
-
- generator_->MoveTouch(touch_move);
- EXPECT_FALSE(IsInTouchToMouseMode());
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_FALSE(IsInSlideGestureState());
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(10));
-
- // Move the touch into slop boundaries. It should stil be in slide gestures
- // and adjust the volume.
- generator_->MoveTouch(into_slop_boundaries);
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_TRUE(IsInSlideGestureState());
- EXPECT_FALSE(IsInTouchToMouseMode());
-
- // The sound is rate limiting so it only activates every 150ms.
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(200));
-
- size_t num_adjust_sounds = delegate_.NumAdjustSounds();
- ASSERT_EQ(2U, num_adjust_sounds);
- ASSERT_EQ(2U, delegate_.VolumeChanges().size());
-
- // Move the touch into the center of the window. It should still be in slide
- // gestures, but there should not be anymore volume adjustments.
- generator_->MoveTouch(center_screen);
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_TRUE(IsInSlideGestureState());
- EXPECT_FALSE(IsInTouchToMouseMode());
-
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(200));
- num_adjust_sounds = delegate_.NumAdjustSounds();
- ASSERT_EQ(2U, num_adjust_sounds);
- ASSERT_EQ(2U, delegate_.VolumeChanges().size());
-
- // Move the touch back into slop edge distance and volume should be changing
- // again.
- generator_->MoveTouch(into_slop_boundaries);
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_TRUE(IsInSlideGestureState());
- EXPECT_FALSE(IsInTouchToMouseMode());
-
- generator_->MoveTouch(
- gfx::Point(into_slop_boundaries.x() + gesture_detector_config_.touch_slop,
- into_slop_boundaries.y()));
- simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(200));
-
- num_adjust_sounds = delegate_.NumAdjustSounds();
- ASSERT_EQ(3U, num_adjust_sounds);
- ASSERT_EQ(3U, delegate_.VolumeChanges().size());
-
- const ScopedVector<ui::Event>& captured_events = GetCapturedEvents();
- ASSERT_EQ(0U, captured_events.size());
-
- generator_->ReleaseTouch();
-}
-
-// Even if the gesture starts within bounds, if it has not moved past slop
-// within the grace period, it should go to touch exploration.
-TEST_F(TouchExplorationTest, InBoundariesTouchExploration) {
- SwitchTouchExplorationMode(true);
-
- gfx::Rect window = BoundsOfRootWindowInDIP();
- gfx::Point initial_press(window.right() - GetMaxDistanceFromEdge() / 2, 1);
- ui::TouchEvent first_press(
- ui::ET_TOUCH_PRESSED,
- initial_press,
- 0,
- Now());
- generator_->Dispatch(&first_press);
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_FALSE(IsInSlideGestureState());
- EXPECT_FALSE(IsInTouchToMouseMode());
-
- AdvanceSimulatedTimePastTapDelay();
- EXPECT_FALSE(IsInGestureInProgressState());
- EXPECT_FALSE(IsInSlideGestureState());
- EXPECT_TRUE(IsInTouchToMouseMode());
-}
-
} // namespace ui
« no previous file with comments | « trunk/src/ui/chromeos/touch_exploration_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698