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

Side by Side Diff: ui/views/controls/slider_unittest.cc

Issue 2717583002: Improve views::Slider keyboard handling. (Closed)
Patch Set: add test coverage Created 3 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
« no previous file with comments | « ui/views/controls/slider.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/views/controls/slider.h" 5 #include "ui/views/controls/slider.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 9
10 #include "base/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 slider()->SetValue(0.5); 255 slider()->SetValue(0.5);
256 event_generator()->GestureTapAt(gfx::Point(0.75 * max_x(), 0.75 * max_y())); 256 event_generator()->GestureTapAt(gfx::Point(0.75 * max_x(), 0.75 * max_y()));
257 EXPECT_NEAR(0.75, slider()->value(), 0.03); 257 EXPECT_NEAR(0.75, slider()->value(), 0.03);
258 } 258 }
259 259
260 // Test the slider location after a scroll gesture. 260 // Test the slider location after a scroll gesture.
261 TEST_F(SliderTest, SliderValueForScrollGesture) { 261 TEST_F(SliderTest, SliderValueForScrollGesture) {
262 // Scroll below the minimum. 262 // Scroll below the minimum.
263 slider()->SetValue(0.5); 263 slider()->SetValue(0.5);
264 event_generator()->GestureScrollSequence( 264 event_generator()->GestureScrollSequence(
265 gfx::Point(0.5 * max_x(), 0.5 * max_y()), 265 gfx::Point(0.5 * max_x(), 0.5 * max_y()), gfx::Point(0, 0),
266 gfx::Point(0, 0), 266 base::TimeDelta::FromMilliseconds(10), 5 /* steps */);
267 base::TimeDelta::FromMilliseconds(10),
268 5 /* steps */);
269 EXPECT_EQ(0, slider()->value()); 267 EXPECT_EQ(0, slider()->value());
270 268
271 // Scroll above the maximum. 269 // Scroll above the maximum.
272 slider()->SetValue(0.5); 270 slider()->SetValue(0.5);
273 event_generator()->GestureScrollSequence( 271 event_generator()->GestureScrollSequence(
274 gfx::Point(0.5 * max_x(), 0.5 * max_y()), gfx::Point(max_x(), max_y()), 272 gfx::Point(0.5 * max_x(), 0.5 * max_y()), gfx::Point(max_x(), max_y()),
275 base::TimeDelta::FromMilliseconds(10), 5 /* steps */); 273 base::TimeDelta::FromMilliseconds(10), 5 /* steps */);
276 EXPECT_EQ(1, slider()->value()); 274 EXPECT_EQ(1, slider()->value());
277 275
278 // Scroll somewhere in the middle. 276 // Scroll somewhere in the middle.
279 slider()->SetValue(0.25); 277 slider()->SetValue(0.25);
280 event_generator()->GestureScrollSequence( 278 event_generator()->GestureScrollSequence(
281 gfx::Point(0.25 * max_x(), 0.25 * max_y()), 279 gfx::Point(0.25 * max_x(), 0.25 * max_y()),
282 gfx::Point(0.75 * max_x(), 0.75 * max_y()), 280 gfx::Point(0.75 * max_x(), 0.75 * max_y()),
283 base::TimeDelta::FromMilliseconds(10), 281 base::TimeDelta::FromMilliseconds(10), 5 /* steps */);
284 5 /* steps */);
285 EXPECT_NEAR(0.75, slider()->value(), 0.03); 282 EXPECT_NEAR(0.75, slider()->value(), 0.03);
286 } 283 }
287 284
288 // Test the slider location by adjusting it using keyboard. 285 // Test the slider location by adjusting it using keyboard.
289 TEST_F(SliderTest, SliderValueForKeyboard) { 286 TEST_F(SliderTest, SliderValueForKeyboard) {
290 float value = 0.5; 287 float value = 0.5;
291 slider()->SetValue(value); 288 slider()->SetValue(value);
292 slider()->RequestFocus(); 289 slider()->RequestFocus();
293 event_generator()->PressKey(ui::VKEY_RIGHT, 0); 290 event_generator()->PressKey(ui::VKEY_RIGHT, 0);
294 EXPECT_GT(slider()->value(), value); 291 EXPECT_GT(slider()->value(), value);
295 292
296 slider()->SetValue(value); 293 slider()->SetValue(value);
297 event_generator()->PressKey(ui::VKEY_LEFT, 0); 294 event_generator()->PressKey(ui::VKEY_LEFT, 0);
298 EXPECT_LT(slider()->value(), value); 295 EXPECT_LT(slider()->value(), value);
296
297 slider()->SetValue(value);
298 event_generator()->PressKey(ui::VKEY_UP, 0);
299 EXPECT_GT(slider()->value(), value);
300
301 slider()->SetValue(value);
302 event_generator()->PressKey(ui::VKEY_DOWN, 0);
303 EXPECT_LT(slider()->value(), value);
304
305 // RTL reverse left/right but not up/down.
306 base::i18n::SetICUDefaultLocale("he");
307 EXPECT_TRUE(base::i18n::IsRTL());
308
309 event_generator()->PressKey(ui::VKEY_RIGHT, 0);
310 EXPECT_LT(slider()->value(), value);
311
312 slider()->SetValue(value);
313 event_generator()->PressKey(ui::VKEY_LEFT, 0);
314 EXPECT_GT(slider()->value(), value);
315
316 slider()->SetValue(value);
317 event_generator()->PressKey(ui::VKEY_UP, 0);
318 EXPECT_GT(slider()->value(), value);
319
320 slider()->SetValue(value);
321 event_generator()->PressKey(ui::VKEY_DOWN, 0);
322 EXPECT_LT(slider()->value(), value);
299 } 323 }
300 324
301 // Verifies the correct SliderListener events are raised for a tap gesture. 325 // Verifies the correct SliderListener events are raised for a tap gesture.
302 TEST_F(SliderTest, SliderListenerEventsForTapGesture) { 326 TEST_F(SliderTest, SliderListenerEventsForTapGesture) {
303 test::SliderTestApi slider_test_api(slider()); 327 test::SliderTestApi slider_test_api(slider());
304 slider_test_api.SetListener(&slider_listener()); 328 slider_test_api.SetListener(&slider_listener());
305 329
306 event_generator()->GestureTapAt(gfx::Point(0, 0)); 330 event_generator()->GestureTapAt(gfx::Point(0, 0));
307 EXPECT_EQ(1, slider_listener().last_drag_started_epoch()); 331 EXPECT_EQ(1, slider_listener().last_drag_started_epoch());
308 EXPECT_EQ(2, slider_listener().last_drag_ended_epoch()); 332 EXPECT_EQ(2, slider_listener().last_drag_ended_epoch());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 EXPECT_EQ(1, slider_listener().last_drag_started_epoch()); 367 EXPECT_EQ(1, slider_listener().last_drag_started_epoch());
344 EXPECT_GT(slider_listener().last_drag_ended_epoch(), 368 EXPECT_GT(slider_listener().last_drag_ended_epoch(),
345 slider_listener().last_drag_started_epoch()); 369 slider_listener().last_drag_started_epoch());
346 EXPECT_EQ(slider(), slider_listener().last_drag_started_sender()); 370 EXPECT_EQ(slider(), slider_listener().last_drag_started_sender());
347 EXPECT_EQ(slider(), slider_listener().last_drag_ended_sender()); 371 EXPECT_EQ(slider(), slider_listener().last_drag_ended_sender());
348 } 372 }
349 373
350 #endif // !defined(OS_MACOSX) || defined(USE_AURA) 374 #endif // !defined(OS_MACOSX) || defined(USE_AURA)
351 375
352 } // namespace views 376 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/slider.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698