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

Side by Side Diff: ui/chromeos/touch_accessibility_enabler_unittest.cc

Issue 2535723008: Revert "Toggle spoken feedback if two fingers are held down." (Closed)
Patch Set: Don't revert metrics changes Created 4 years 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 | « ui/chromeos/touch_accessibility_enabler.cc ('k') | ui/chromeos/touch_exploration_controller.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 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 "ui/chromeos/touch_accessibility_enabler.h"
6
7 #include "base/macros.h"
8 #include "base/test/simple_test_tick_clock.h"
9 #include "base/time/time.h"
10 #include "ui/aura/test/aura_test_base.h"
11 #include "ui/aura/window.h"
12 #include "ui/events/event.h"
13 #include "ui/events/event_utils.h"
14 #include "ui/events/gestures/gesture_provider_aura.h"
15 #include "ui/events/test/event_generator.h"
16 #include "ui/events/test/events_test_utils.h"
17 #include "ui/gfx/geometry/point.h"
18
19 namespace ui {
20
21 namespace {
22
23 class MockTouchAccessibilityEnablerDelegate
24 : public ui::TouchAccessibilityEnablerDelegate {
25 public:
26 MockTouchAccessibilityEnablerDelegate() {}
27 ~MockTouchAccessibilityEnablerDelegate() override {}
28
29 void PlaySpokenFeedbackToggleCountdown(int tick_count) override {
30 ++feedback_progress_sound_count_;
31 }
32 void ToggleSpokenFeedback() override { toggle_spoken_feedback_ = true; }
33
34 size_t feedback_progress_sound_count() const {
35 return feedback_progress_sound_count_;
36 }
37 bool toggle_spoken_feedback() const { return toggle_spoken_feedback_; }
38
39 private:
40 size_t feedback_progress_sound_count_ = 0;
41 bool toggle_spoken_feedback_ = false;
42
43 DISALLOW_COPY_AND_ASSIGN(MockTouchAccessibilityEnablerDelegate);
44 };
45
46 class TouchAccessibilityEnablerTest : public aura::test::AuraTestBase {
47 public:
48 TouchAccessibilityEnablerTest() {}
49 ~TouchAccessibilityEnablerTest() override {}
50
51 void SetUp() override {
52 aura::test::AuraTestBase::SetUp();
53
54 generator_.reset(new test::EventGenerator(root_window()));
55
56 simulated_clock_ = new base::SimpleTestTickClock();
57 // Tests fail if time is ever 0.
58 simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(10));
59 // ui takes ownership of the tick clock.
60 ui::SetEventTickClockForTesting(
61 std::unique_ptr<base::TickClock>(simulated_clock_));
62
63 enabler_.reset(new TouchAccessibilityEnabler(root_window(), &delegate_));
64 }
65
66 void TearDown() override {
67 enabler_.reset(nullptr);
68 ui::SetEventTickClockForTesting(nullptr);
69 aura::test::AuraTestBase::TearDown();
70 }
71
72 protected:
73 base::TimeTicks Now() {
74 // This is the same as what EventTimeForNow() does, but here we do it
75 // with our simulated clock.
76 return simulated_clock_->NowTicks();
77 }
78
79 std::unique_ptr<test::EventGenerator> generator_;
80 // Owned by |ui|.
81 base::SimpleTestTickClock* simulated_clock_ = nullptr;
82 MockTouchAccessibilityEnablerDelegate delegate_;
83 std::unique_ptr<TouchAccessibilityEnabler> enabler_;
84 ui::GestureDetector::Config gesture_detector_config_;
85
86 DISALLOW_COPY_AND_ASSIGN(TouchAccessibilityEnablerTest);
87 };
88
89 } // namespace
90
91 TEST_F(TouchAccessibilityEnablerTest, EntersOneFingerDownMode) {
92 EXPECT_TRUE(enabler_->IsInNoFingersDownForTesting());
93 EXPECT_FALSE(enabler_->IsInOneFingerDownForTesting());
94 generator_->set_current_location(gfx::Point(11, 12));
95 generator_->PressTouch();
96
97 EXPECT_FALSE(enabler_->IsInNoFingersDownForTesting());
98 EXPECT_TRUE(enabler_->IsInOneFingerDownForTesting());
99 }
100
101 TEST_F(TouchAccessibilityEnablerTest, EntersTwoFingersDownMode) {
102 EXPECT_TRUE(enabler_->IsInNoFingersDownForTesting());
103 generator_->set_current_location(gfx::Point(11, 12));
104 generator_->PressTouchId(1);
105
106 generator_->set_current_location(gfx::Point(22, 34));
107 generator_->PressTouchId(2);
108
109 EXPECT_TRUE(enabler_->IsInTwoFingersDownForTesting());
110 }
111
112 TEST_F(TouchAccessibilityEnablerTest, PlaysProgressSound) {
113 EXPECT_TRUE(enabler_->IsInNoFingersDownForTesting());
114 generator_->set_current_location(gfx::Point(11, 12));
115 generator_->PressTouchId(1);
116
117 generator_->set_current_location(gfx::Point(22, 34));
118 generator_->PressTouchId(2);
119
120 EXPECT_TRUE(enabler_->IsInTwoFingersDownForTesting());
121 EXPECT_EQ(0U, delegate_.feedback_progress_sound_count());
122
123 enabler_->TriggerOnTimerForTesting();
124 EXPECT_EQ(0U, delegate_.feedback_progress_sound_count());
125
126 simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(3000));
127 enabler_->TriggerOnTimerForTesting();
128 EXPECT_EQ(1U, delegate_.feedback_progress_sound_count());
129 }
130
131 TEST_F(TouchAccessibilityEnablerTest, TogglesSpokenFeedback) {
132 EXPECT_TRUE(enabler_->IsInNoFingersDownForTesting());
133 generator_->set_current_location(gfx::Point(11, 12));
134 generator_->PressTouchId(1);
135
136 generator_->set_current_location(gfx::Point(22, 34));
137 generator_->PressTouchId(2);
138
139 EXPECT_TRUE(enabler_->IsInTwoFingersDownForTesting());
140 EXPECT_FALSE(delegate_.toggle_spoken_feedback());
141
142 enabler_->TriggerOnTimerForTesting();
143 EXPECT_FALSE(delegate_.toggle_spoken_feedback());
144
145 simulated_clock_->Advance(base::TimeDelta::FromMilliseconds(5000));
146 enabler_->TriggerOnTimerForTesting();
147 EXPECT_TRUE(delegate_.toggle_spoken_feedback());
148 }
149
150 TEST_F(TouchAccessibilityEnablerTest, ThreeFingersCancelsDetection) {
151 EXPECT_TRUE(enabler_->IsInNoFingersDownForTesting());
152 generator_->set_current_location(gfx::Point(11, 12));
153 generator_->PressTouchId(1);
154
155 generator_->set_current_location(gfx::Point(22, 34));
156 generator_->PressTouchId(2);
157
158 EXPECT_TRUE(enabler_->IsInTwoFingersDownForTesting());
159
160 generator_->set_current_location(gfx::Point(33, 56));
161 generator_->PressTouchId(3);
162
163 EXPECT_TRUE(enabler_->IsInWaitForNoFingersForTesting());
164 }
165
166 TEST_F(TouchAccessibilityEnablerTest, MovingFingerPastSlopCancelsDetection) {
167 EXPECT_TRUE(enabler_->IsInNoFingersDownForTesting());
168 generator_->set_current_location(gfx::Point(11, 12));
169 generator_->PressTouch();
170
171 int slop = gesture_detector_config_.double_tap_slop;
172 int half_slop = slop / 2;
173
174 generator_->MoveTouch(gfx::Point(11 + half_slop, 12));
175 EXPECT_TRUE(enabler_->IsInOneFingerDownForTesting());
176
177 generator_->MoveTouch(gfx::Point(11 + slop + 1, 12));
178 EXPECT_TRUE(enabler_->IsInWaitForNoFingersForTesting());
179 }
180
181 } // namespace ui
OLDNEW
« no previous file with comments | « ui/chromeos/touch_accessibility_enabler.cc ('k') | ui/chromeos/touch_exploration_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698