OLD | NEW |
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 <math.h> | 7 #include <math.h> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 DCHECK(test_tick_clock_); | 129 DCHECK(test_tick_clock_); |
130 test_tick_clock_->Advance(delta); | 130 test_tick_clock_->Advance(delta); |
131 } | 131 } |
132 | 132 |
133 void OpenLidToAngle(float degrees) { | 133 void OpenLidToAngle(float degrees) { |
134 DCHECK(degrees >= 0.0f); | 134 DCHECK(degrees >= 0.0f); |
135 DCHECK(degrees <= 360.0f); | 135 DCHECK(degrees <= 360.0f); |
136 | 136 |
137 float radians = degrees * kDegreesToRadians; | 137 float radians = degrees * kDegreesToRadians; |
138 gfx::Vector3dF base_vector(0.0f, -kMeanGravity, 0.0f); | 138 gfx::Vector3dF base_vector(0.0f, -kMeanGravity, 0.0f); |
139 gfx::Vector3dF lid_vector(0.0f, | 139 gfx::Vector3dF lid_vector(0.0f, kMeanGravity * cos(radians), |
140 kMeanGravity * cos(radians), | |
141 kMeanGravity * sin(radians)); | 140 kMeanGravity * sin(radians)); |
142 TriggerBaseAndLidUpdate(base_vector, lid_vector); | 141 TriggerBaseAndLidUpdate(base_vector, lid_vector); |
143 } | 142 } |
144 | 143 |
145 void HoldDeviceVertical() { | 144 void HoldDeviceVertical() { |
146 gfx::Vector3dF base_vector(9.8f, 0.0f, 0.0f); | 145 gfx::Vector3dF base_vector(9.8f, 0.0f, 0.0f); |
147 gfx::Vector3dF lid_vector(9.8f, 0.0f, 0.0f); | 146 gfx::Vector3dF lid_vector(9.8f, 0.0f, 0.0f); |
148 TriggerBaseAndLidUpdate(base_vector, lid_vector); | 147 TriggerBaseAndLidUpdate(base_vector, lid_vector); |
149 } | 148 } |
150 | 149 |
151 void OpenLid() { | 150 void OpenLid() { |
152 maximize_mode_controller()->LidEventReceived(true /* open */, | 151 maximize_mode_controller()->LidEventReceived( |
153 maximize_mode_controller()->tick_clock_->NowTicks()); | 152 true /* open */, maximize_mode_controller()->tick_clock_->NowTicks()); |
154 } | 153 } |
155 | 154 |
156 void CloseLid() { | 155 void CloseLid() { |
157 maximize_mode_controller()->LidEventReceived(false /* open */, | 156 maximize_mode_controller()->LidEventReceived( |
158 maximize_mode_controller()->tick_clock_->NowTicks()); | 157 false /* open */, maximize_mode_controller()->tick_clock_->NowTicks()); |
159 } | 158 } |
160 | 159 |
161 bool WasLidOpenedRecently() { | 160 bool WasLidOpenedRecently() { |
162 return maximize_mode_controller()->WasLidOpenedRecently(); | 161 return maximize_mode_controller()->WasLidOpenedRecently(); |
163 } | 162 } |
164 | 163 |
165 void SetTabletMode(bool on) { | 164 void SetTabletMode(bool on) { |
166 maximize_mode_controller()->TabletModeEventReceived( | 165 maximize_mode_controller()->TabletModeEventReceived( |
167 on, maximize_mode_controller()->tick_clock_->NowTicks()); | 166 on, maximize_mode_controller()->tick_clock_->NowTicks()); |
168 } | 167 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 // Verify that closing the lid will exit maximize mode. | 208 // Verify that closing the lid will exit maximize mode. |
210 TEST_F(MaximizeModeControllerTest, CloseLidWhileInMaximizeMode) { | 209 TEST_F(MaximizeModeControllerTest, CloseLidWhileInMaximizeMode) { |
211 OpenLidToAngle(315.0f); | 210 OpenLidToAngle(315.0f); |
212 ASSERT_TRUE(IsMaximizeModeStarted()); | 211 ASSERT_TRUE(IsMaximizeModeStarted()); |
213 | 212 |
214 CloseLid(); | 213 CloseLid(); |
215 EXPECT_FALSE(IsMaximizeModeStarted()); | 214 EXPECT_FALSE(IsMaximizeModeStarted()); |
216 } | 215 } |
217 | 216 |
218 // Verify that maximize mode will not be entered when the lid is closed. | 217 // Verify that maximize mode will not be entered when the lid is closed. |
219 TEST_F(MaximizeModeControllerTest, | 218 TEST_F(MaximizeModeControllerTest, HingeAnglesWithLidClosed) { |
220 HingeAnglesWithLidClosed) { | |
221 AttachTickClockForTest(); | 219 AttachTickClockForTest(); |
222 | 220 |
223 CloseLid(); | 221 CloseLid(); |
224 | 222 |
225 OpenLidToAngle(270.0f); | 223 OpenLidToAngle(270.0f); |
226 EXPECT_FALSE(IsMaximizeModeStarted()); | 224 EXPECT_FALSE(IsMaximizeModeStarted()); |
227 | 225 |
228 OpenLidToAngle(315.0f); | 226 OpenLidToAngle(315.0f); |
229 EXPECT_FALSE(IsMaximizeModeStarted()); | 227 EXPECT_FALSE(IsMaximizeModeStarted()); |
230 | 228 |
231 OpenLidToAngle(355.0f); | 229 OpenLidToAngle(355.0f); |
232 EXPECT_FALSE(IsMaximizeModeStarted()); | 230 EXPECT_FALSE(IsMaximizeModeStarted()); |
233 } | 231 } |
234 | 232 |
235 // Verify the maximize mode state for unstable hinge angles when the lid was | 233 // Verify the maximize mode state for unstable hinge angles when the lid was |
236 // recently open. | 234 // recently open. |
237 TEST_F(MaximizeModeControllerTest, | 235 TEST_F(MaximizeModeControllerTest, UnstableHingeAnglesWhenLidRecentlyOpened) { |
238 UnstableHingeAnglesWhenLidRecentlyOpened) { | |
239 AttachTickClockForTest(); | 236 AttachTickClockForTest(); |
240 | 237 |
241 OpenLid(); | 238 OpenLid(); |
242 ASSERT_TRUE(WasLidOpenedRecently()); | 239 ASSERT_TRUE(WasLidOpenedRecently()); |
243 | 240 |
244 OpenLidToAngle(5.0f); | 241 OpenLidToAngle(5.0f); |
245 EXPECT_FALSE(IsMaximizeModeStarted()); | 242 EXPECT_FALSE(IsMaximizeModeStarted()); |
246 | 243 |
247 OpenLidToAngle(355.0f); | 244 OpenLidToAngle(355.0f); |
248 EXPECT_FALSE(IsMaximizeModeStarted()); | 245 EXPECT_FALSE(IsMaximizeModeStarted()); |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 class MaximizeModeControllerSwitchesTest : public MaximizeModeControllerTest { | 511 class MaximizeModeControllerSwitchesTest : public MaximizeModeControllerTest { |
515 public: | 512 public: |
516 MaximizeModeControllerSwitchesTest() {} | 513 MaximizeModeControllerSwitchesTest() {} |
517 ~MaximizeModeControllerSwitchesTest() override {} | 514 ~MaximizeModeControllerSwitchesTest() override {} |
518 | 515 |
519 void SetUp() override { | 516 void SetUp() override { |
520 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 517 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
521 switches::kAshEnableTouchViewTesting); | 518 switches::kAshEnableTouchViewTesting); |
522 MaximizeModeControllerTest::SetUp(); | 519 MaximizeModeControllerTest::SetUp(); |
523 } | 520 } |
| 521 |
524 private: | 522 private: |
525 DISALLOW_COPY_AND_ASSIGN(MaximizeModeControllerSwitchesTest); | 523 DISALLOW_COPY_AND_ASSIGN(MaximizeModeControllerSwitchesTest); |
526 }; | 524 }; |
527 | 525 |
528 // Tests that when the command line switch for testing maximize mode is on, that | 526 // Tests that when the command line switch for testing maximize mode is on, that |
529 // accelerometer updates which would normally cause it to exit do not. | 527 // accelerometer updates which would normally cause it to exit do not. |
530 TEST_F(MaximizeModeControllerSwitchesTest, IgnoreHingeAngles) { | 528 TEST_F(MaximizeModeControllerSwitchesTest, IgnoreHingeAngles) { |
531 maximize_mode_controller()->EnableMaximizeModeWindowManager(true); | 529 maximize_mode_controller()->EnableMaximizeModeWindowManager(true); |
532 | 530 |
533 // Would normally trigger an exit from maximize mode. | 531 // Would normally trigger an exit from maximize mode. |
534 OpenLidToAngle(90.0f); | 532 OpenLidToAngle(90.0f); |
535 EXPECT_TRUE(IsMaximizeModeStarted()); | 533 EXPECT_TRUE(IsMaximizeModeStarted()); |
536 } | 534 } |
537 | 535 |
538 } // namespace ash | 536 } // namespace ash |
OLD | NEW |