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

Unified Diff: ui/chromeos/touch_exploration_controller_unittest.cc

Issue 1953613002: Make touch accessibility gestures work with ChromeVox Next (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 7 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
Index: ui/chromeos/touch_exploration_controller_unittest.cc
diff --git a/ui/chromeos/touch_exploration_controller_unittest.cc b/ui/chromeos/touch_exploration_controller_unittest.cc
index 4cacfff026cfc96d8e176d32e55452f6e1f4df6b..651dd12ac2e92fcb447ccc99225e0291da52fa82 100644
--- a/ui/chromeos/touch_exploration_controller_unittest.cc
+++ b/ui/chromeos/touch_exploration_controller_unittest.cc
@@ -4,6 +4,7 @@
#include "ui/chromeos/touch_exploration_controller.h"
+#include <math.h>
#include <stddef.h>
#include "base/macros.h"
@@ -78,15 +79,17 @@ class MockTouchExplorationControllerDelegate
void PlayPassthroughEarcon() override { ++num_times_passthrough_played_; }
void PlayExitScreenEarcon() override { ++num_times_exit_screen_played_; }
void PlayEnterScreenEarcon() override { ++num_times_enter_screen_played_; }
-
- const std::vector<float> VolumeChanges() { return volume_changes_; }
- size_t NumAdjustSounds() { return num_times_adjust_sound_played_; }
- size_t NumPassthroughSounds() { return num_times_passthrough_played_; }
- size_t NumExitScreenSounds() { return num_times_exit_screen_played_; }
- size_t NumEnterScreenSounds() {
- return num_times_enter_screen_played_;
+ void HandleAccessibilityGesture(ui::AXGesture gesture) override {
+ last_gesture_ = gesture;
}
+ const std::vector<float> VolumeChanges() const { return volume_changes_; }
+ size_t NumAdjustSounds() const { return num_times_adjust_sound_played_; }
+ size_t NumPassthroughSounds() const { return num_times_passthrough_played_; }
+ size_t NumExitScreenSounds() const { return num_times_exit_screen_played_; }
+ size_t NumEnterScreenSounds() const { return num_times_enter_screen_played_; }
+ ui::AXGesture GetLastGesture() const { return last_gesture_; }
+
void ResetCountersToZero() {
num_times_adjust_sound_played_ = 0;
num_times_passthrough_played_ = 0;
@@ -100,6 +103,7 @@ class MockTouchExplorationControllerDelegate
size_t num_times_passthrough_played_ = 0;
size_t num_times_exit_screen_played_ = 0;
size_t num_times_enter_screen_played_ = 0;
+ ui::AXGesture last_gesture_ = ui::AX_GESTURE_NONE;
};
} // namespace
@@ -459,31 +463,6 @@ void ConfirmEventsAreKeyAndEqual(ui::Event* e1, ui::Event* e2) {
// events when running these tests as part of ui_base_unittests. We do get them
// when the tests are run as part of ash unit tests.
-// If a swipe has been successfully completed, then six key events will be
-// dispatched that correspond to shift+search+direction
-void AssertDirectionalNavigationEvents(const ScopedVector<ui::Event>& events,
- ui::KeyboardCode direction) {
- ASSERT_EQ(6U, events.size());
- ui::KeyEvent shift_pressed(
- ui::ET_KEY_PRESSED, ui::VKEY_SHIFT, ui::EF_SHIFT_DOWN);
- ui::KeyEvent search_pressed(
- ui::ET_KEY_PRESSED, ui::VKEY_LWIN, ui::EF_SHIFT_DOWN);
- ui::KeyEvent direction_pressed(
- ui::ET_KEY_PRESSED, direction, ui::EF_SHIFT_DOWN);
- ui::KeyEvent direction_released(
- ui::ET_KEY_RELEASED, direction, ui::EF_SHIFT_DOWN);
- ui::KeyEvent search_released(
- ui::ET_KEY_RELEASED, VKEY_LWIN, ui::EF_SHIFT_DOWN);
- ui::KeyEvent shift_released(
- ui::ET_KEY_RELEASED, ui::VKEY_SHIFT, ui::EF_NONE);
- CONFIRM_EVENTS_ARE_KEY_AND_EQUAL(&shift_pressed, events[0]);
- CONFIRM_EVENTS_ARE_KEY_AND_EQUAL(&search_pressed, events[1]);
- CONFIRM_EVENTS_ARE_KEY_AND_EQUAL(&direction_pressed, events[2]);
- CONFIRM_EVENTS_ARE_KEY_AND_EQUAL(&direction_released, events[3]);
- CONFIRM_EVENTS_ARE_KEY_AND_EQUAL(&search_released, events[4]);
- CONFIRM_EVENTS_ARE_KEY_AND_EQUAL(&shift_released, events[5]);
-}
-
TEST_F(TouchExplorationTest, EntersTouchToMouseModeAfterPressAndDelay) {
SwitchTouchExplorationMode(true);
EXPECT_FALSE(IsInTouchToMouseMode());
@@ -1292,79 +1271,61 @@ TEST_F(TouchExplorationTest, EnterGestureInProgressState) {
// keyboard event.
TEST_F(TouchExplorationTest, GestureSwipe) {
SwitchTouchExplorationMode(true);
- std::vector<ui::KeyboardCode> directions;
- directions.push_back(ui::VKEY_RIGHT);
- directions.push_back(ui::VKEY_LEFT);
- directions.push_back(ui::VKEY_UP);
- directions.push_back(ui::VKEY_DOWN);
+
+ // Test all four swipe directions with 1 to 4 fingers.
+ struct GestureInfo {
+ int move_x;
+ int move_y;
+ int num_fingers;
+ ui::AXGesture expected_gesture;
+ } gestures_to_test[] = {
+ {-1, 0, 1, ui::AX_GESTURE_SWIPE_LEFT_1},
+ {0, -1, 1, ui::AX_GESTURE_SWIPE_UP_1},
+ {1, 0, 1, ui::AX_GESTURE_SWIPE_RIGHT_1},
+ {0, 1, 1, ui::AX_GESTURE_SWIPE_DOWN_1},
+ {-1, 0, 2, ui::AX_GESTURE_SWIPE_LEFT_2},
+ {0, -1, 2, ui::AX_GESTURE_SWIPE_UP_2},
+ {1, 0, 2, ui::AX_GESTURE_SWIPE_RIGHT_2},
+ {0, 1, 2, ui::AX_GESTURE_SWIPE_DOWN_2},
+ {-1, 0, 3, ui::AX_GESTURE_SWIPE_LEFT_3},
+ {0, -1, 3, ui::AX_GESTURE_SWIPE_UP_3},
+ {1, 0, 3, ui::AX_GESTURE_SWIPE_RIGHT_3},
+ {0, 1, 3, ui::AX_GESTURE_SWIPE_DOWN_3},
+ {-1, 0, 4, ui::AX_GESTURE_SWIPE_LEFT_4},
+ {0, -1, 4, ui::AX_GESTURE_SWIPE_UP_4},
+ {1, 0, 4, ui::AX_GESTURE_SWIPE_RIGHT_4},
+ {0, 1, 4, ui::AX_GESTURE_SWIPE_DOWN_4},
+ };
// This value was taken from gesture_recognizer_unittest.cc in a swipe
// detector test, since it seems to be about the right amount to get a swipe.
const int kSteps = 15;
- // There are gestures supported with up to four fingers.
- for (int num_fingers = 1; num_fingers <= 4; num_fingers++) {
+ for (size_t i = 0; i < arraysize(gestures_to_test); ++i) {
+ const float distance = 2 * gesture_detector_config_.touch_slop + 1;
+ int move_x = gestures_to_test[i].move_x * distance;
+ int move_y = gestures_to_test[i].move_y * distance;
+ int num_fingers = gestures_to_test[i].num_fingers;
+ ui::AXGesture expected_gesture = gestures_to_test[i].expected_gesture;
+
std::vector<gfx::Point> start_points;
for (int j = 0; j < num_fingers; j++) {
start_points.push_back(gfx::Point(j * 10 + 100, j * 10 + 200));
}
gfx::Point* start_points_array = &start_points[0];
- const float distance = gesture_detector_config_.touch_slop + 1;
- // Iterate through each swipe direction for this number of fingers.
- for (std::vector<ui::KeyboardCode>::const_iterator it = directions.begin();
- it != directions.end();
- ++it) {
- int move_x = 0;
- int move_y = 0;
- ui::KeyboardCode direction = *it;
- switch (direction) {
- case ui::VKEY_RIGHT:
- move_x = distance;
- break;
- case ui::VKEY_LEFT:
- move_x = 0 - distance;
- break;
- case ui::VKEY_UP:
- move_y = 0 - distance;
- break;
- case ui::VKEY_DOWN:
- move_y = distance;
- break;
- default:
- return;
- }
- // A swipe is made when a fling starts
- float delta_time =
- distance / gesture_detector_config_.maximum_fling_velocity;
- // delta_time is in seconds, so we convert to ms.
- int delta_time_ms = floor(delta_time * 1000);
- generator_->GestureMultiFingerScroll(num_fingers,
- start_points_array,
- delta_time_ms,
- kSteps,
- move_x * 2,
- move_y * 2);
-
- // The swipe registered and sent the appropriate key events.
- const ScopedVector<ui::Event>& captured_events = GetCapturedEvents();
- if (num_fingers == 1)
- AssertDirectionalNavigationEvents(captured_events, direction);
- else {
- // Most of the time this is 2 right now, but two of the two finger
- // swipes are mapped to chromevox commands which dispatch 6 key events,
- // and these will probably be remapped a lot as we're developing.
- ASSERT_GE(captured_events.size(), 2U);
- std::vector<ui::Event>::size_type i;
- for (i = 0; i != captured_events.size(); i++) {
- EXPECT_TRUE(captured_events[i]->IsKeyEvent());
- }
- }
- EXPECT_TRUE(IsInNoFingersDownState());
- EXPECT_FALSE(IsInTouchToMouseMode());
- EXPECT_FALSE(IsInGestureInProgressState());
- ClearCapturedEvents();
- }
+ // A swipe is made when a fling starts
+ float delta_time =
+ distance / gesture_detector_config_.maximum_fling_velocity;
+ // delta_time is in seconds, so we convert to ms.
+ int delta_time_ms = floor(delta_time * 1000);
+ generator_->GestureMultiFingerScroll(num_fingers, start_points_array,
+ delta_time_ms, kSteps, move_x, move_y);
+ EXPECT_EQ(expected_gesture, delegate_.GetLastGesture());
+ EXPECT_TRUE(IsInNoFingersDownState());
+ EXPECT_FALSE(IsInTouchToMouseMode());
+ EXPECT_FALSE(IsInGestureInProgressState());
+ ClearCapturedEvents();
}
}
« ui/accessibility/ax_enums.idl ('K') | « ui/chromeos/touch_exploration_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698