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

Side by Side Diff: ash/magnifier/magnifier_key_scroller_unittest.cc

Issue 155493002: Add key based scrolling on magnified screen for kiosk mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 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 "ash/magnifier/magnifier_key_scroller.h"
6
7 #include "ash/magnifier/magnification_controller.h"
8 #include "ash/shell.h"
9 #include "ash/test/ash_test_base.h"
10 #include "ash/wm/window_util.h"
11 #include "ui/aura/test/event_generator.h"
12 #include "ui/aura/test/test_window_delegate.h"
13
14 namespace ash {
15 namespace {
16
17 class KeyEventDelegate : public aura::test::TestWindowDelegate {
18 public:
19 KeyEventDelegate() {}
20 virtual ~KeyEventDelegate() {}
21
22 // ui::EventHandler overrides:
23 virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE {
24 key_event.reset(new ui::KeyEvent(
25 event->type(), event->key_code(), event->flags(), false));
26 }
27
28 const ui::KeyEvent* event() const { return key_event.get(); }
29 void reset() { key_event.reset(); }
30
31 private:
32 scoped_ptr<ui::KeyEvent> key_event;
33
34 DISALLOW_COPY_AND_ASSIGN(KeyEventDelegate);
35 };
36
37 } // namespace
38
39 typedef ash::test::AshTestBase MagnifierKeyScrollerTest;
40
41 TEST_F(MagnifierKeyScrollerTest, Basic) {
42 KeyEventDelegate delegate;
43 scoped_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate(
44 &delegate,
45 0,
46 gfx::Rect(10, 10, 100, 100)));
47 wm::ActivateWindow(window.get());
48
49 MagnifierKeyScroller::ScopedEnablerForTest scoped;
50 Shell* shell = Shell::GetInstance();
51 MagnificationController* controller = shell->magnification_controller();
52 controller->SetEnabled(true);
53
54 EXPECT_EQ("200,150", controller->GetWindowPosition().ToString());
55 aura::test::EventGenerator& generator = GetEventGenerator();
56
57 // Click and Release generates the press event upon release.
58 generator.PressKey(ui::VKEY_DOWN, ui::EF_SHIFT_DOWN);
59 EXPECT_EQ("200,150", controller->GetWindowPosition().ToString());
60 EXPECT_FALSE(delegate.event());
61
62 generator.ReleaseKey(ui::VKEY_DOWN, 0);
63 EXPECT_EQ("200,150", controller->GetWindowPosition().ToString());
64 RunAllPendingInMessageLoop();
65 EXPECT_TRUE(delegate.event());
66 EXPECT_EQ(ui::ET_KEY_PRESSED, delegate.event()->type());
67 delegate.reset();
68
69 // Click and hold scrolls the magnifier screen.
70 generator.PressKey(ui::VKEY_DOWN, ui::EF_SHIFT_DOWN);
71 EXPECT_EQ("200,150", controller->GetWindowPosition().ToString());
72 EXPECT_FALSE(delegate.event());
73
74 generator.PressKey(ui::VKEY_DOWN, ui::EF_SHIFT_DOWN);
75 EXPECT_EQ("200,300", controller->GetWindowPosition().ToString());
76 EXPECT_FALSE(delegate.event());
77
78 generator.ReleaseKey(ui::VKEY_DOWN, 0);
79 EXPECT_EQ("200,300", controller->GetWindowPosition().ToString());
80 EXPECT_FALSE(delegate.event());
81
82 // Events are passed normally when the magnifier is off.
83 controller->SetEnabled(false);
84
85 generator.PressKey(ui::VKEY_DOWN, ui::EF_SHIFT_DOWN);
86 EXPECT_TRUE(delegate.event());
87 EXPECT_EQ(ui::ET_KEY_PRESSED, delegate.event()->type());
88 delegate.reset();
89
90 generator.ReleaseKey(ui::VKEY_DOWN, 0);
91 EXPECT_TRUE(delegate.event());
92 EXPECT_EQ(ui::ET_KEY_RELEASED, delegate.event()->type());
93 delegate.reset();
94
95 generator.PressKey(ui::VKEY_DOWN, ui::EF_SHIFT_DOWN);
96 EXPECT_TRUE(delegate.event());
97 EXPECT_EQ(ui::ET_KEY_PRESSED, delegate.event()->type());
98 delegate.reset();
99
100 generator.PressKey(ui::VKEY_DOWN, ui::EF_SHIFT_DOWN);
101 EXPECT_TRUE(delegate.event());
102 EXPECT_EQ(ui::ET_KEY_PRESSED, delegate.event()->type());
103 delegate.reset();
104
105 generator.ReleaseKey(ui::VKEY_DOWN, 0);
106 EXPECT_TRUE(delegate.event());
107 EXPECT_EQ(ui::ET_KEY_RELEASED, delegate.event()->type());
108 delegate.reset();
109 }
110
111 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698