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

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

Issue 2808053004: Fire accessibilityPrivate events on two-finger hold gesture. (Closed)
Patch Set: Address feedback Created 3 years, 8 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 2016 The Chromium Authors. All rights reserved. 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 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/chromeos/touch_accessibility_enabler.h" 5 #include "ui/chromeos/touch_accessibility_enabler.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 return; 102 return;
103 } 103 }
104 104
105 if (state_ == NO_FINGERS_DOWN && event.type() == ui::ET_TOUCH_PRESSED) { 105 if (state_ == NO_FINGERS_DOWN && event.type() == ui::ET_TOUCH_PRESSED) {
106 state_ = ONE_FINGER_DOWN; 106 state_ = ONE_FINGER_DOWN;
107 } else if (state_ == ONE_FINGER_DOWN && 107 } else if (state_ == ONE_FINGER_DOWN &&
108 event.type() == ui::ET_TOUCH_PRESSED) { 108 event.type() == ui::ET_TOUCH_PRESSED) {
109 state_ = TWO_FINGERS_DOWN; 109 state_ = TWO_FINGERS_DOWN;
110 two_finger_start_time_ = Now(); 110 two_finger_start_time_ = Now();
111 StartTimer(); 111 StartTimer();
112 delegate_->OnTwoFingerTouchStart();
112 } 113 }
113 } 114 }
114 115
115 base::TimeTicks TouchAccessibilityEnabler::Now() { 116 base::TimeTicks TouchAccessibilityEnabler::Now() {
116 if (tick_clock_) { 117 if (tick_clock_) {
117 // This is the same as what EventTimeForNow() does, but here we do it 118 // This is the same as what EventTimeForNow() does, but here we do it
118 // with a clock that can be replaced with a simulated clock for tests. 119 // with a clock that can be replaced with a simulated clock for tests.
119 return tick_clock_->NowTicks(); 120 return tick_clock_->NowTicks();
120 } 121 }
121 return ui::EventTimeForNow(); 122 return ui::EventTimeForNow();
122 } 123 }
123 124
124 void TouchAccessibilityEnabler::StartTimer() { 125 void TouchAccessibilityEnabler::StartTimer() {
125 if (timer_.IsRunning()) 126 if (timer_.IsRunning())
126 return; 127 return;
127 128
128 timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(kTimerDelayInMS), 129 timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(kTimerDelayInMS),
129 this, &ui::TouchAccessibilityEnabler::OnTimer); 130 this, &ui::TouchAccessibilityEnabler::OnTimer);
130 } 131 }
131 132
132 void TouchAccessibilityEnabler::CancelTimer() { 133 void TouchAccessibilityEnabler::CancelTimer() {
133 if (timer_.IsRunning()) 134 if (timer_.IsRunning()) {
134 timer_.Stop(); 135 timer_.Stop();
136 delegate_->OnTwoFingerTouchStop();
137 }
135 } 138 }
136 139
137 void TouchAccessibilityEnabler::OnTimer() { 140 void TouchAccessibilityEnabler::OnTimer() {
138 base::TimeTicks now = Now(); 141 base::TimeTicks now = Now();
139 double tick_count_f = 142 double tick_count_f =
140 (now - two_finger_start_time_).InMillisecondsF() / kTimerDelayInMS; 143 (now - two_finger_start_time_).InMillisecondsF() / kTimerDelayInMS;
141 int tick_count = roundf(tick_count_f); 144 int tick_count = roundf(tick_count_f);
142 145
143 if (tick_count == kTimerTicksOfFirstSoundFeedback) { 146 if (tick_count == kTimerTicksOfFirstSoundFeedback) {
144 base::RecordAction( 147 base::RecordAction(
145 base::UserMetricsAction("Accessibility.TwoFingersHeldDown")); 148 base::UserMetricsAction("Accessibility.TwoFingersHeldDown"));
146 } 149 }
147 150
148 if (tick_count >= kTimerTicksOfFirstSoundFeedback && 151 if (tick_count >= kTimerTicksOfFirstSoundFeedback &&
149 tick_count < kTimerTicksToToggleSpokenFeedback) { 152 tick_count < kTimerTicksToToggleSpokenFeedback) {
150 delegate_->PlaySpokenFeedbackToggleCountdown(tick_count); 153 delegate_->PlaySpokenFeedbackToggleCountdown(tick_count);
151 } 154 }
152 if (tick_count == kTimerTicksToToggleSpokenFeedback) { 155 if (tick_count == kTimerTicksToToggleSpokenFeedback) {
153 delegate_->ToggleSpokenFeedback(); 156 delegate_->ToggleSpokenFeedback();
154 state_ = WAIT_FOR_NO_FINGERS; 157 state_ = WAIT_FOR_NO_FINGERS;
155 } 158 }
156 } 159 }
157 160
158 } // namespace ui 161 } // namespace ui
OLDNEW
« no previous file with comments | « ui/chromeos/touch_accessibility_enabler.h ('k') | ui/chromeos/touch_accessibility_enabler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698