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

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

Issue 197883011: Enable maximize mode when keyboard is open past 180 degrees. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add tests, constants, and stickiness to entering / exiting. 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
(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/wm/maximize_mode/maximize_mode_controller.h"
6
7 #include "ash/accelerometer/accelerometer_controller.h"
8 #include "ash/shell.h"
9 #include "ash/test/ash_test_base.h"
10 #include "ui/gfx/vector3d_f.h"
11
12 namespace ash {
13 namespace internal {
14
15 class MaximizeModeControllerTest : public test::AshTestBase {
16 public:
17 MaximizeModeControllerTest() {}
18 virtual ~MaximizeModeControllerTest() {}
19
20 virtual void SetUp() OVERRIDE {
21 test::AshTestBase::SetUp();
22 Shell::GetInstance()->accelerometer_controller()->RemoveObserver(
23 maximize_mode_controller());
24 }
25
26 virtual void TearDown() OVERRIDE {
27 Shell::GetInstance()->accelerometer_controller()->AddObserver(
28 maximize_mode_controller());
29 test::AshTestBase::TearDown();
30 }
31
32 MaximizeModeController* maximize_mode_controller() {
33 return Shell::GetInstance()->maximize_mode_controller();
34 }
35
36 void TriggerAccelerometerUpdate(const gfx::Vector3dF& base,
37 const gfx::Vector3dF& lid) {
38 maximize_mode_controller()->OnAccelerometerUpdated(base, lid);
39 }
40
41 bool IsMaximizeModeStarted() const {
42 return Shell::GetInstance()->IsMaximizeModeWindowManagerEnabled();
43 }
44
45 private:
46 DISALLOW_COPY_AND_ASSIGN(MaximizeModeControllerTest);
47 };
48
49 // Tests that opening the lid beyond 180 will enter touchview, and that it will
50 // exit when the lid comes back from 180. Also tests the thresholds, i.e. it
51 // will stick to the current mode.
52 TEST_F(MaximizeModeControllerTest, EnterExitThresholds) {
53 // For the simple test the base remains steady.
54 gfx::Vector3dF base(0.0f, 0.0f, 1.0f);
55
56 // Lid open 90 degrees.
57 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
58 EXPECT_FALSE(IsMaximizeModeStarted());
59
60 // Open just past 180.
61 TriggerAccelerometerUpdate(base, gfx::Vector3dF(0.05f, 0.0f, -1.0f));
62 EXPECT_FALSE(IsMaximizeModeStarted());
63
64 // Open up 270 degrees.
65 TriggerAccelerometerUpdate(base, gfx::Vector3dF(1.0f, 0.0f, 0.0f));
66 EXPECT_TRUE(IsMaximizeModeStarted());
67
68 // Open up 360 degrees and appearing to be slightly past it (i.e. as if almost
69 // closed).
70 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-0.05f, 0.0f, 1.0f));
71 EXPECT_TRUE(IsMaximizeModeStarted());
72
73 // Open just before 180.
74 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-0.05f, 0.0f, -1.0f));
75 EXPECT_TRUE(IsMaximizeModeStarted());
76
77 // Open 90 degrees.
78 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
79 EXPECT_FALSE(IsMaximizeModeStarted());
80 }
81
82 // Tests that when the hinge is nearly vertically aligned, the current state
83 // persists as the computed angle is highly inaccurate in this orientation.
84 TEST_F(MaximizeModeControllerTest, HingeAligned) {
85 // Laptop in normal orientation lid open 90 degrees.
86 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
87 gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
88 EXPECT_FALSE(IsMaximizeModeStarted());
89
90 // Completely vertical.
91 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, -1.0f, 0.0f),
92 gfx::Vector3dF(0.0f, -1.0f, 0.0f));
93 EXPECT_FALSE(IsMaximizeModeStarted());
94
95 // Close to vertical but with hinge appearing to be open 270 degrees.
96 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, -1.0f, 0.01f),
97 gfx::Vector3dF(0.01f, -1.0f, 0.0f));
98 EXPECT_FALSE(IsMaximizeModeStarted());
99
100 // Flat and open 270 degrees should start maximize mode.
101 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
102 gfx::Vector3dF(1.0f, 0.0f, 0.0f));
103 EXPECT_TRUE(IsMaximizeModeStarted());
104
105 // Normal 90 degree orientation but near vertical should stay in maximize
106 // mode.
107 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, -1.0f, 0.01f),
108 gfx::Vector3dF(-0.01f, -1.0f, 0.0f));
109 EXPECT_TRUE(IsMaximizeModeStarted());
110 }
111
112 } // namespace internal
113 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698