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

Side by Side Diff: ash/wm/maximize_mode/maximize_mode_controller_unittest.cc

Issue 230613004: Block keyboard and mouse input when maximize mode is activated by accelerometer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use event targeter to block keyboard and mouse events. Created 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 "ash/wm/maximize_mode/maximize_mode_controller.h" 5 #include "ash/wm/maximize_mode/maximize_mode_controller.h"
6 6
7 #include "ash/accelerometer/accelerometer_controller.h" 7 #include "ash/accelerometer/accelerometer_controller.h"
8 #include "ash/display/display_manager.h" 8 #include "ash/display/display_manager.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/test/ash_test_base.h" 10 #include "ash/test/ash_test_base.h"
11 #include "ash/test/display_manager_test_api.h" 11 #include "ash/test/display_manager_test_api.h"
12 #include "ui/aura/test/event_generator.h"
13 #include "ui/events/event_handler.h"
12 #include "ui/gfx/vector3d_f.h" 14 #include "ui/gfx/vector3d_f.h"
13 15
14 namespace ash { 16 namespace ash {
15 17
16 namespace { 18 namespace {
17 19
18 const float kDegreesToRadians = 3.14159265f / 180.0f; 20 const float kDegreesToRadians = 3.14159265f / 180.0f;
19 21
22 // Filter to count the number of events seen.
23 class EventCounter : public ui::EventHandler {
24 public:
25 EventCounter();
26 virtual ~EventCounter();
27
28 // Overridden from ui::EventHandler:
29 virtual void OnEvent(ui::Event* event) OVERRIDE;
30
31 void reset() {
32 event_count_ = 0;
33 }
34
35 size_t event_count() { return event_count_; }
oshima 2014/04/10 20:52:57 const
flackr 2014/04/10 21:24:55 Done.
36
37 private:
38 size_t event_count_;
39
40 DISALLOW_COPY_AND_ASSIGN(EventCounter);
41 };
42
43 EventCounter::EventCounter() : event_count_(0) {
44 Shell::GetInstance()->AddPreTargetHandler(this);
45 }
46
47 EventCounter::~EventCounter() {
48 Shell::GetInstance()->RemovePreTargetHandler(this);
49 }
50
51 void EventCounter::OnEvent(ui::Event* event) {
52 event_count_++;
53 }
54
20 } // namespace 55 } // namespace
21 56
22 class MaximizeModeControllerTest : public test::AshTestBase { 57 class MaximizeModeControllerTest : public test::AshTestBase {
23 public: 58 public:
24 MaximizeModeControllerTest() {} 59 MaximizeModeControllerTest() {}
25 virtual ~MaximizeModeControllerTest() {} 60 virtual ~MaximizeModeControllerTest() {}
26 61
27 virtual void SetUp() OVERRIDE { 62 virtual void SetUp() OVERRIDE {
28 test::AshTestBase::SetUp(); 63 test::AshTestBase::SetUp();
29 Shell::GetInstance()->accelerometer_controller()->RemoveObserver( 64 Shell::GetInstance()->accelerometer_controller()->RemoveObserver(
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 ASSERT_TRUE(IsMaximizeModeStarted()); 260 ASSERT_TRUE(IsMaximizeModeStarted());
226 EXPECT_EQ(gfx::Display::ROTATE_90, GetInternalDisplayRotation()); 261 EXPECT_EQ(gfx::Display::ROTATE_90, GetInternalDisplayRotation());
227 262
228 // Close lid back to 90, screen should rotate back. 263 // Close lid back to 90, screen should rotate back.
229 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.8f, 0.3f), 264 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.8f, 0.3f),
230 gfx::Vector3dF(-0.3f, 0.8f, 0.0f)); 265 gfx::Vector3dF(-0.3f, 0.8f, 0.0f));
231 ASSERT_FALSE(IsMaximizeModeStarted()); 266 ASSERT_FALSE(IsMaximizeModeStarted());
232 EXPECT_EQ(gfx::Display::ROTATE_0, GetInternalDisplayRotation()); 267 EXPECT_EQ(gfx::Display::ROTATE_0, GetInternalDisplayRotation());
233 } 268 }
234 269
270 // Tests that maximize mode blocks keyboard events but not touch events. Mouse
271 // events are blocked too but EventGenerator does not construct mouse events
272 // with a NativeEvent so they would not be blocked in testing.
273 TEST_F(MaximizeModeControllerTest, BlocksKeyboard) {
274 aura::Window* root = Shell::GetPrimaryRootWindow();
275 aura::test::EventGenerator event_generator(root, root);
276 EventCounter counter;
277
278 event_generator.PressKey(ui::VKEY_ESCAPE, 0);
279 event_generator.ReleaseKey(ui::VKEY_ESCAPE, 0);
280 EXPECT_GT(counter.event_count(), 0u);
281 counter.reset();
282
283 event_generator.PressTouch();
284 event_generator.ReleaseTouch();
285 EXPECT_GT(counter.event_count(), 0u);
286 counter.reset();
287
288 // Open up 270 degrees.
289 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
290 gfx::Vector3dF(1.0f, 0.0f, 0.0f));
291 ASSERT_TRUE(IsMaximizeModeStarted());
292
293 event_generator.PressKey(ui::VKEY_ESCAPE, 0);
294 event_generator.ReleaseKey(ui::VKEY_ESCAPE, 0);
295 EXPECT_EQ(0u, counter.event_count());
296 counter.reset();
297
298 // Touch should not be blocked.
299 event_generator.PressTouch();
300 event_generator.ReleaseTouch();
301 EXPECT_GT(counter.event_count(), 0u);
302 counter.reset();
303
304 gfx::Vector3dF base;
305
306 // Lid open 90 degrees.
307 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
308 gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
309
310 event_generator.PressKey(ui::VKEY_ESCAPE, 0);
311 event_generator.ReleaseKey(ui::VKEY_ESCAPE, 0);
312 EXPECT_GT(counter.event_count(), 0u);
313 counter.reset();
314 }
315
235 } // namespace ash 316 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/maximize_mode/maximize_mode_controller.cc ('k') | ash/wm/maximize_mode/maximize_mode_event_blocker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698