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

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

Issue 412013002: Prevent entering maximize mode when the lid is closed or has recently opened. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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
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/system/tray/system_tray_delegate.h" 10 #include "ash/system/tray/system_tray_delegate.h"
(...skipping 27 matching lines...) Expand all
38 extern const float kAccelerometerLaptopModeTestData[]; 38 extern const float kAccelerometerLaptopModeTestData[];
39 extern const size_t kAccelerometerLaptopModeTestDataLength; 39 extern const size_t kAccelerometerLaptopModeTestDataLength;
40 40
41 // Test accelerometer data taken with the lid open 360 degrees while 41 // Test accelerometer data taken with the lid open 360 degrees while
42 // shaking the device around. The data is to be interpreted in groups of 6 where 42 // shaking the device around. The data is to be interpreted in groups of 6 where
43 // each 6 values corresponds to the X, Y, and Z readings from the base and lid 43 // each 6 values corresponds to the X, Y, and Z readings from the base and lid
44 // accelerometers in this order. 44 // accelerometers in this order.
45 extern const float kAccelerometerFullyOpenTestData[]; 45 extern const float kAccelerometerFullyOpenTestData[];
46 extern const size_t kAccelerometerFullyOpenTestDataLength; 46 extern const size_t kAccelerometerFullyOpenTestDataLength;
47 47
48 // Test vectors that can be used to make the hinge appear to be near a given
49 // angle. Use TriggerAccelerometerUpdate(kHingeBaseVector, k<#>DegreeVector)
50 // where <#> in k<#>DegreeVector is the desired angle.
51 // Note the <#> values are approximations and are within +/-1 degree.
52 const gfx::Vector3dF kHingeBaseVector(1.0f, 0.0f, 0.0f);
53 const gfx::Vector3dF kHingeLidVector_5(1.0f, 0.0f, 0.1f);
54 const gfx::Vector3dF kHingeLidVector_45(0.75f, 0.0f, 0.75f);
55 const gfx::Vector3dF kHingeLidVector_90(0.0f, 0.0f, 1.0f);
56 const gfx::Vector3dF kHingeLidVector_180(-1.0f, 0.0f, 0.0f);
57 const gfx::Vector3dF kHingeLidVector_270(0.0f, 0.0f, -1.0f);
58 const gfx::Vector3dF kHingeLidVector_315(0.75f, 0.0f, -0.75f);
59 const gfx::Vector3dF kHingeLidVector_355(1.0f, 0.0f, -0.1f);
60
48 class MaximizeModeControllerTest : public test::AshTestBase { 61 class MaximizeModeControllerTest : public test::AshTestBase {
49 public: 62 public:
50 MaximizeModeControllerTest() {} 63 MaximizeModeControllerTest() : time_tick_provider_stub_(NULL) {}
51 virtual ~MaximizeModeControllerTest() {} 64 virtual ~MaximizeModeControllerTest() {}
52 65
66 // A test double that allows the current TimeTicks to be explicitly set.
67 class TimeTickProviderStub
68 : public ash::MaximizeModeController::TimeTickProvider {
69 public:
70 TimeTickProviderStub() : TimeTickProvider(), now_() {}
71 virtual ~TimeTickProviderStub() {}
72
73 virtual void SetNow(const base::TimeTicks& now) { now_ = now; }
74
75 // ash::MaximizeModeController::TimeTickProvider:
76 virtual base::TimeTicks Now() const OVERRIDE { return now_; }
77
78 private:
79 base::TimeTicks now_;
80
81 DISALLOW_COPY_AND_ASSIGN(TimeTickProviderStub);
82 };
83
53 virtual void SetUp() OVERRIDE { 84 virtual void SetUp() OVERRIDE {
54 test::AshTestBase::SetUp(); 85 test::AshTestBase::SetUp();
55 Shell::GetInstance()->accelerometer_controller()->RemoveObserver( 86 Shell::GetInstance()->accelerometer_controller()->RemoveObserver(
56 maximize_mode_controller()); 87 maximize_mode_controller());
57 88
58 // Set the first display to be the internal display for the accelerometer 89 // Set the first display to be the internal display for the accelerometer
59 // screen rotation tests. 90 // screen rotation tests.
60 test::DisplayManagerTestApi(Shell::GetInstance()->display_manager()). 91 test::DisplayManagerTestApi(Shell::GetInstance()->display_manager()).
61 SetFirstDisplayAsInternalDisplay(); 92 SetFirstDisplayAsInternalDisplay();
62 } 93 }
(...skipping 20 matching lines...) Expand all
83 gfx::Display::Rotation GetInternalDisplayRotation() const { 114 gfx::Display::Rotation GetInternalDisplayRotation() const {
84 return Shell::GetInstance()->display_manager()->GetDisplayInfo( 115 return Shell::GetInstance()->display_manager()->GetDisplayInfo(
85 gfx::Display::InternalDisplayId()).rotation(); 116 gfx::Display::InternalDisplayId()).rotation();
86 } 117 }
87 118
88 void SetInternalDisplayRotation(gfx::Display::Rotation rotation) const { 119 void SetInternalDisplayRotation(gfx::Display::Rotation rotation) const {
89 Shell::GetInstance()->display_manager()-> 120 Shell::GetInstance()->display_manager()->
90 SetDisplayRotation(gfx::Display::InternalDisplayId(), rotation); 121 SetDisplayRotation(gfx::Display::InternalDisplayId(), rotation);
91 } 122 }
92 123
124 // Attaches a TimeTickProviderStub to the MaximizeModeController with a
125 // non null value initial value.
126 void AttachTimeTicksProviderStub() {
127 time_tick_provider_stub_ = new TimeTickProviderStub();
128 time_tick_provider_stub_->SetNow(base::TimeTicks::FromInternalValue(1));
129 maximize_mode_controller()->SetTimeTickProviderForTest(
130 time_tick_provider_stub_);
131 }
132
133 void SetTimeTicksNow(const base::TimeTicks& now) {
134 DCHECK(time_tick_provider_stub_);
135 time_tick_provider_stub_->SetNow(now);
136 }
137
138 void AddToTimeTicks(const base::TimeDelta delta) {
139 DCHECK(time_tick_provider_stub_);
140 time_tick_provider_stub_->SetNow(
141 time_tick_provider_stub_->Now() + delta);
142 }
143
144 void OpenLid() {
145 maximize_mode_controller()->LidEventReceived(true /* open */,
146 maximize_mode_controller()->time_tick_provider_->Now());
147 }
148
149 void CloseLid() {
150 maximize_mode_controller()->LidEventReceived(false /* open */,
151 maximize_mode_controller()->time_tick_provider_->Now());
152 }
153
154 bool WasLidOpenedRecently() {
155 return maximize_mode_controller()->WasLidOpenedRecently();
156 }
157
93 private: 158 private:
159 TimeTickProviderStub* time_tick_provider_stub_;
160
94 DISALLOW_COPY_AND_ASSIGN(MaximizeModeControllerTest); 161 DISALLOW_COPY_AND_ASSIGN(MaximizeModeControllerTest);
95 }; 162 };
96 163
97 // Tests that opening the lid beyond 180 will enter touchview, and that it will 164 // Verify that closing the lid will exit maximize mode.
98 // exit when the lid comes back from 180. Also tests the thresholds, i.e. it 165 TEST_F(MaximizeModeControllerTest, CloseLidWhileInMaximizeMode) {
99 // will stick to the current mode. 166 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_315);
100 TEST_F(MaximizeModeControllerTest, EnterExitThresholds) { 167 ASSERT_TRUE(IsMaximizeModeStarted());
101 // For the simple test the base remains steady.
102 gfx::Vector3dF base(0.0f, 0.0f, 1.0f);
103 168
104 // Lid open 90 degrees. 169 CloseLid();
105 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 170 EXPECT_FALSE(IsMaximizeModeStarted());
171 }
172
173 // Verify the WasLidOpenedRecently signal with respect to time.
174 TEST_F(MaximizeModeControllerTest, WasLidOpenedRecently) {
175 AttachTimeTicksProviderStub();
176
177 // No lid open time initially.
178 ASSERT_FALSE(WasLidOpenedRecently());
179
180 CloseLid();
181 EXPECT_FALSE(WasLidOpenedRecently());
182
183 OpenLid();
184 EXPECT_TRUE(WasLidOpenedRecently());
185
186 // 1 second after lid open.
187 AddToTimeTicks(base::TimeDelta::FromSeconds(1));
188 EXPECT_TRUE(WasLidOpenedRecently());
189
190 // 2 seconds after lid open.
191 AddToTimeTicks(base::TimeDelta::FromSeconds(1));
192 EXPECT_TRUE(WasLidOpenedRecently());
193
194 // 3 seconds after lid open.
195 AddToTimeTicks(base::TimeDelta::FromSeconds(1));
196 EXPECT_FALSE(WasLidOpenedRecently());
197 }
198
199 // Verify that maximize mode will not be entered when the lid is closed.
200 TEST_F(MaximizeModeControllerTest,
201 HingeAnglesWithLidClosed) {
202 AttachTimeTicksProviderStub();
203
204 CloseLid();
205
206 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_5);
106 EXPECT_FALSE(IsMaximizeModeStarted()); 207 EXPECT_FALSE(IsMaximizeModeStarted());
107 208
108 // Open just past 180. 209 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_45);
109 TriggerAccelerometerUpdate(base, gfx::Vector3dF(0.05f, 0.0f, -1.0f));
110 EXPECT_FALSE(IsMaximizeModeStarted()); 210 EXPECT_FALSE(IsMaximizeModeStarted());
111 211
112 // Open up 270 degrees. 212 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_90);
113 TriggerAccelerometerUpdate(base, gfx::Vector3dF(1.0f, 0.0f, 0.0f)); 213 EXPECT_FALSE(IsMaximizeModeStarted());
214
215 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_180);
216 EXPECT_FALSE(IsMaximizeModeStarted());
217
218 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_270);
219 EXPECT_FALSE(IsMaximizeModeStarted());
220
221 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_315);
222 EXPECT_FALSE(IsMaximizeModeStarted());
223
224 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_355);
225 EXPECT_FALSE(IsMaximizeModeStarted());
226 }
227
228 // Verify the maximize mode enter/exit thresholds for stable angles.
229 TEST_F(MaximizeModeControllerTest, StableHingeAnglesWithLidOpened) {
230 ASSERT_FALSE(IsMaximizeModeStarted());
231 ASSERT_FALSE(WasLidOpenedRecently());
232
233 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_180);
234 EXPECT_FALSE(IsMaximizeModeStarted());
235
236 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_315);
114 EXPECT_TRUE(IsMaximizeModeStarted()); 237 EXPECT_TRUE(IsMaximizeModeStarted());
115 238
116 // Open up 360 degrees and appearing to be slightly past it (i.e. as if almost 239 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_180);
117 // closed).
118 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-0.05f, 0.0f, 1.0f));
119 EXPECT_TRUE(IsMaximizeModeStarted()); 240 EXPECT_TRUE(IsMaximizeModeStarted());
120 241
121 // Open just before 180. 242 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_45);
122 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-0.05f, 0.0f, -1.0f)); 243 EXPECT_FALSE(IsMaximizeModeStarted());
244
245 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_270);
123 EXPECT_TRUE(IsMaximizeModeStarted()); 246 EXPECT_TRUE(IsMaximizeModeStarted());
124 247
125 // Open 90 degrees. 248 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_90);
126 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
127 EXPECT_FALSE(IsMaximizeModeStarted()); 249 EXPECT_FALSE(IsMaximizeModeStarted());
128 } 250 }
129 251
252 // Verify the maximize mode state for unstable hinge angles when the lid
253 // was recently open.
254 TEST_F(MaximizeModeControllerTest,
255 UnstableHingeAnglesWhenLidRecentlyOpened) {
256 AttachTimeTicksProviderStub();
257
258 OpenLid();
259 ASSERT_TRUE(WasLidOpenedRecently());
260
261 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_5);
262 EXPECT_FALSE(IsMaximizeModeStarted());
263
264 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_355);
265 EXPECT_FALSE(IsMaximizeModeStarted());
266
267 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_5);
268 EXPECT_FALSE(IsMaximizeModeStarted());
269
270 // This is a stable reading and should clear the last lid opened time.
271 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_45);
272 EXPECT_FALSE(IsMaximizeModeStarted());
273 EXPECT_FALSE(WasLidOpenedRecently());
274
275 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_355);
276 EXPECT_TRUE(IsMaximizeModeStarted());
277
278 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_5);
279 EXPECT_TRUE(IsMaximizeModeStarted());
280 }
281
282 // Verify the maximize mode state for unstable hinge angles when the lid
283 // is open but not recently.
284 TEST_F(MaximizeModeControllerTest, UnstableHingeAnglesWithLidOpened) {
285 AttachTimeTicksProviderStub();
286
287 OpenLid();
288 AddToTimeTicks(base::TimeDelta::FromSeconds(10));
289 ASSERT_FALSE(WasLidOpenedRecently());
290 ASSERT_FALSE(IsMaximizeModeStarted());
291
292 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_5);
293 EXPECT_FALSE(IsMaximizeModeStarted());
294
295 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_355);
296 EXPECT_TRUE(IsMaximizeModeStarted());
297
298 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_5);
299 EXPECT_TRUE(IsMaximizeModeStarted());
300 }
301
130 // Tests that when the hinge is nearly vertically aligned, the current state 302 // Tests that when the hinge is nearly vertically aligned, the current state
131 // persists as the computed angle is highly inaccurate in this orientation. 303 // persists as the computed angle is highly inaccurate in this orientation.
132 TEST_F(MaximizeModeControllerTest, HingeAligned) { 304 TEST_F(MaximizeModeControllerTest, HingeAligned) {
133 // Laptop in normal orientation lid open 90 degrees. 305 // Laptop in normal orientation lid open 90 degrees.
134 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f), 306 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
135 gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 307 gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
136 EXPECT_FALSE(IsMaximizeModeStarted()); 308 EXPECT_FALSE(IsMaximizeModeStarted());
137 309
138 // Completely vertical. 310 // Completely vertical.
139 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, -1.0f, 0.0f), 311 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, -1.0f, 0.0f),
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 // and pressing power. 440 // and pressing power.
269 TEST_F(MaximizeModeControllerTest, Screenshot) { 441 TEST_F(MaximizeModeControllerTest, Screenshot) {
270 Shell::GetInstance()->lock_state_controller()->SetDelegate( 442 Shell::GetInstance()->lock_state_controller()->SetDelegate(
271 new test::TestLockStateControllerDelegate); 443 new test::TestLockStateControllerDelegate);
272 aura::Window* root = Shell::GetPrimaryRootWindow(); 444 aura::Window* root = Shell::GetPrimaryRootWindow();
273 aura::test::EventGenerator event_generator(root, root); 445 aura::test::EventGenerator event_generator(root, root);
274 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); 446 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate();
275 delegate->set_can_take_screenshot(true); 447 delegate->set_can_take_screenshot(true);
276 448
277 // Open up 270 degrees. 449 // Open up 270 degrees.
278 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f), 450 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_270);
279 gfx::Vector3dF(1.0f, 0.0f, 0.0f));
280 ASSERT_TRUE(IsMaximizeModeStarted()); 451 ASSERT_TRUE(IsMaximizeModeStarted());
281 452
282 // Pressing power alone does not take a screenshot. 453 // Pressing power alone does not take a screenshot.
283 event_generator.PressKey(ui::VKEY_POWER, 0); 454 event_generator.PressKey(ui::VKEY_POWER, 0);
284 event_generator.ReleaseKey(ui::VKEY_POWER, 0); 455 event_generator.ReleaseKey(ui::VKEY_POWER, 0);
285 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); 456 EXPECT_EQ(0, delegate->handle_take_screenshot_count());
286 457
287 // Holding volume down and pressing power takes a screenshot. 458 // Holding volume down and pressing power takes a screenshot.
288 event_generator.PressKey(ui::VKEY_VOLUME_DOWN, 0); 459 event_generator.PressKey(ui::VKEY_VOLUME_DOWN, 0);
289 event_generator.PressKey(ui::VKEY_POWER, 0); 460 event_generator.PressKey(ui::VKEY_POWER, 0);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 EXPECT_EQ(gfx::Display::ROTATE_0, GetInternalDisplayRotation()); 527 EXPECT_EQ(gfx::Display::ROTATE_0, GetInternalDisplayRotation());
357 528
358 maximize_mode_controller()->SetRotationLocked(false); 529 maximize_mode_controller()->SetRotationLocked(false);
359 TriggerAccelerometerUpdate(gravity, gravity); 530 TriggerAccelerometerUpdate(gravity, gravity);
360 EXPECT_EQ(gfx::Display::ROTATE_90, GetInternalDisplayRotation()); 531 EXPECT_EQ(gfx::Display::ROTATE_90, GetInternalDisplayRotation());
361 } 532 }
362 533
363 // Tests that when MaximizeModeController turns off MaximizeMode that on the 534 // Tests that when MaximizeModeController turns off MaximizeMode that on the
364 // next accelerometer update the rotation lock is cleared. 535 // next accelerometer update the rotation lock is cleared.
365 TEST_F(MaximizeModeControllerTest, ExitingMaximizeModeClearRotationLock) { 536 TEST_F(MaximizeModeControllerTest, ExitingMaximizeModeClearRotationLock) {
366 // The base remains steady.
367 gfx::Vector3dF base(0.0f, 0.0f, 1.0f);
368
369 // Trigger maximize mode by opening to 270. 537 // Trigger maximize mode by opening to 270.
370 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, -1.0f), 538 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_270);
371 gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
372 ASSERT_TRUE(IsMaximizeModeStarted()); 539 ASSERT_TRUE(IsMaximizeModeStarted());
373 540
374 maximize_mode_controller()->SetRotationLocked(true); 541 maximize_mode_controller()->SetRotationLocked(true);
375 542
376 // Open 90 degrees. 543 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_90);
377 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
378 EXPECT_FALSE(IsMaximizeModeStarted()); 544 EXPECT_FALSE(IsMaximizeModeStarted());
379 545
380 // Send an update that would not relaunch MaximizeMode. 90 degrees. 546 // Send an update that would not relaunch MaximizeMode.
381 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 547 TriggerAccelerometerUpdate(kHingeBaseVector, kHingeLidVector_90);
382 EXPECT_FALSE(maximize_mode_controller()->rotation_locked()); 548 EXPECT_FALSE(maximize_mode_controller()->rotation_locked());
383 } 549 }
384 550
385 // The TrayDisplay class that is responsible for adding/updating MessageCenter 551 // The TrayDisplay class that is responsible for adding/updating MessageCenter
386 // notifications is only added to the SystemTray on ChromeOS. 552 // notifications is only added to the SystemTray on ChromeOS.
387 #if defined(OS_CHROMEOS) 553 #if defined(OS_CHROMEOS)
388 // Tests that the screen rotation notifications are suppressed when 554 // Tests that the screen rotation notifications are suppressed when
389 // triggered by the accelerometer. 555 // triggered by the accelerometer.
390 TEST_F(MaximizeModeControllerTest, BlockRotationNotifications) { 556 TEST_F(MaximizeModeControllerTest, BlockRotationNotifications) {
391 test::TestSystemTrayDelegate* tray_delegate = 557 test::TestSystemTrayDelegate* tray_delegate =
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 // User sets rotation to the same rotation that the display was at when 656 // User sets rotation to the same rotation that the display was at when
491 // maximize mode was activated. 657 // maximize mode was activated.
492 SetInternalDisplayRotation(gfx::Display::ROTATE_0); 658 SetInternalDisplayRotation(gfx::Display::ROTATE_0);
493 // Exit maximize mode 659 // Exit maximize mode
494 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f), 660 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
495 gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 661 gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
496 EXPECT_EQ(gfx::Display::ROTATE_0, GetInternalDisplayRotation()); 662 EXPECT_EQ(gfx::Display::ROTATE_0, GetInternalDisplayRotation());
497 } 663 }
498 664
499 } // namespace ash 665 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698