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

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

Issue 290563003: Revert 270746 "Suppressed screen rotation notifications triggere..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 7 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
« no previous file with comments | « trunk/src/ash/wm/maximize_mode/maximize_mode_controller.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "ash/test/ash_test_base.h" 11 #include "ash/test/ash_test_base.h"
12 #include "ash/test/display_manager_test_api.h" 12 #include "ash/test/display_manager_test_api.h"
13 #include "ash/test/test_lock_state_controller_delegate.h" 13 #include "ash/test/test_lock_state_controller_delegate.h"
14 #include "ash/test/test_screenshot_delegate.h" 14 #include "ash/test/test_screenshot_delegate.h"
15 #include "ash/test/test_system_tray_delegate.h"
16 #include "ash/test/test_volume_control_delegate.h" 15 #include "ash/test/test_volume_control_delegate.h"
17 #include "ui/aura/test/event_generator.h" 16 #include "ui/aura/test/event_generator.h"
18 #include "ui/events/event_handler.h" 17 #include "ui/events/event_handler.h"
19 #include "ui/gfx/vector3d_f.h" 18 #include "ui/gfx/vector3d_f.h"
20 #include "ui/message_center/message_center.h"
21 19
22 namespace ash { 20 namespace ash {
23 21
24 namespace { 22 namespace {
25 23
26 const float kDegreesToRadians = 3.14159265f / 180.0f; 24 const float kDegreesToRadians = 3.14159265f / 180.0f;
27 25
28 // Filter to count the number of events seen. 26 // Filter to count the number of events seen.
29 class EventCounter : public ui::EventHandler { 27 class EventCounter : public ui::EventHandler {
30 public: 28 public:
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 105
108 bool IsMaximizeModeStarted() const { 106 bool IsMaximizeModeStarted() const {
109 return Shell::GetInstance()->IsMaximizeModeWindowManagerEnabled(); 107 return Shell::GetInstance()->IsMaximizeModeWindowManagerEnabled();
110 } 108 }
111 109
112 gfx::Display::Rotation GetInternalDisplayRotation() const { 110 gfx::Display::Rotation GetInternalDisplayRotation() const {
113 return Shell::GetInstance()->display_manager()->GetDisplayInfo( 111 return Shell::GetInstance()->display_manager()->GetDisplayInfo(
114 gfx::Display::InternalDisplayId()).rotation(); 112 gfx::Display::InternalDisplayId()).rotation();
115 } 113 }
116 114
117 void SetInternalDisplayRotation(gfx::Display::Rotation rotation) const {
118 Shell::GetInstance()->display_manager()->
119 SetDisplayRotation(gfx::Display::InternalDisplayId(), rotation);
120 }
121
122 private: 115 private:
123 DISALLOW_COPY_AND_ASSIGN(MaximizeModeControllerTest); 116 DISALLOW_COPY_AND_ASSIGN(MaximizeModeControllerTest);
124 }; 117 };
125 118
126 // Tests that opening the lid beyond 180 will enter touchview, and that it will 119 // Tests that opening the lid beyond 180 will enter touchview, and that it will
127 // exit when the lid comes back from 180. Also tests the thresholds, i.e. it 120 // exit when the lid comes back from 180. Also tests the thresholds, i.e. it
128 // will stick to the current mode. 121 // will stick to the current mode.
129 TEST_F(MaximizeModeControllerTest, EnterExitThresholds) { 122 TEST_F(MaximizeModeControllerTest, EnterExitThresholds) {
130 // For the simple test the base remains steady. 123 // For the simple test the base remains steady.
131 gfx::Vector3dF base(0.0f, 0.0f, 1.0f); 124 gfx::Vector3dF base(0.0f, 0.0f, 1.0f);
(...skipping 20 matching lines...) Expand all
152 EXPECT_TRUE(IsMaximizeModeStarted()); 145 EXPECT_TRUE(IsMaximizeModeStarted());
153 146
154 // Open 90 degrees. 147 // Open 90 degrees.
155 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 148 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
156 EXPECT_FALSE(IsMaximizeModeStarted()); 149 EXPECT_FALSE(IsMaximizeModeStarted());
157 } 150 }
158 151
159 // Tests that when the hinge is nearly vertically aligned, the current state 152 // Tests that when the hinge is nearly vertically aligned, the current state
160 // persists as the computed angle is highly inaccurate in this orientation. 153 // persists as the computed angle is highly inaccurate in this orientation.
161 TEST_F(MaximizeModeControllerTest, HingeAligned) { 154 TEST_F(MaximizeModeControllerTest, HingeAligned) {
162 // Laptop in normal orientation lid open 90 degrees. 155 // Laptop in normal orientation lid open 90 degrees.
163 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f), 156 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
164 gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 157 gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
165 EXPECT_FALSE(IsMaximizeModeStarted()); 158 EXPECT_FALSE(IsMaximizeModeStarted());
166 159
167 // Completely vertical. 160 // Completely vertical.
168 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, -1.0f, 0.0f), 161 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, -1.0f, 0.0f),
169 gfx::Vector3dF(0.0f, -1.0f, 0.0f)); 162 gfx::Vector3dF(0.0f, -1.0f, 0.0f));
170 EXPECT_FALSE(IsMaximizeModeStarted()); 163 EXPECT_FALSE(IsMaximizeModeStarted());
171 164
172 // Close to vertical but with hinge appearing to be open 270 degrees. 165 // Close to vertical but with hinge appearing to be open 270 degrees.
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 331
339 event_generator.ScrollSequence( 332 event_generator.ScrollSequence(
340 gfx::Point(), base::TimeDelta::FromMilliseconds(5), 0, 100, 5, 2); 333 gfx::Point(), base::TimeDelta::FromMilliseconds(5), 0, 100, 5, 2);
341 EXPECT_EQ(0u, counter.event_count()); 334 EXPECT_EQ(0u, counter.event_count());
342 counter.reset(); 335 counter.reset();
343 336
344 event_generator.MoveMouseWheel(0, 10); 337 event_generator.MoveMouseWheel(0, 10);
345 EXPECT_EQ(0u, counter.event_count()); 338 EXPECT_EQ(0u, counter.event_count());
346 counter.reset(); 339 counter.reset();
347 340
348 // Touch should not be blocked. 341 // Touch should not be blocked.
349 event_generator.PressTouch(); 342 event_generator.PressTouch();
350 event_generator.ReleaseTouch(); 343 event_generator.ReleaseTouch();
351 EXPECT_GT(counter.event_count(), 0u); 344 EXPECT_GT(counter.event_count(), 0u);
352 counter.reset(); 345 counter.reset();
353 346
354 gfx::Vector3dF base; 347 gfx::Vector3dF base;
355 348
356 // Lid open 90 degrees. 349 // Lid open 90 degrees.
357 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f), 350 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, 1.0f),
358 gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 351 gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 496
504 // Open 90 degrees. 497 // Open 90 degrees.
505 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 498 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
506 EXPECT_FALSE(IsMaximizeModeStarted()); 499 EXPECT_FALSE(IsMaximizeModeStarted());
507 500
508 // Send an update that would not relaunch MaximizeMode. 90 degrees. 501 // Send an update that would not relaunch MaximizeMode. 90 degrees.
509 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f)); 502 TriggerAccelerometerUpdate(base, gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
510 EXPECT_FALSE(maximize_mode_controller()->rotation_locked()); 503 EXPECT_FALSE(maximize_mode_controller()->rotation_locked());
511 } 504 }
512 505
513 // Tests that the screen rotation notifications are suppressed when
514 // triggered by the accelerometer.
515 TEST_F(MaximizeModeControllerTest, BlockRotationNotifications) {
516 test::TestSystemTrayDelegate* tray_delegate =
517 static_cast<test::TestSystemTrayDelegate*>(
518 Shell::GetInstance()->system_tray_delegate());
519 tray_delegate->set_should_show_display_notification(true);
520
521 message_center::MessageCenter* message_center =
522 message_center::MessageCenter::Get();
523
524 // Make sure notifications are still displayed when
525 // adjusting the screen rotation directly when not in maximize mode
526 ASSERT_FALSE(IsMaximizeModeStarted());
527 ASSERT_NE(gfx::Display::ROTATE_180, GetInternalDisplayRotation());
528 ASSERT_EQ(0u, message_center->NotificationCount());
529 ASSERT_FALSE(message_center->HasPopupNotifications());
530 SetInternalDisplayRotation(gfx::Display::ROTATE_180);
531 EXPECT_EQ(gfx::Display::ROTATE_180, GetInternalDisplayRotation());
532 EXPECT_EQ(1u, message_center->NotificationCount());
533 EXPECT_TRUE(message_center->HasPopupNotifications());
534
535 // Reset the screen rotation.
536 SetInternalDisplayRotation(gfx::Display::ROTATE_0);
537 // Clear all notifications
538 message_center->RemoveAllNotifications(false);
539 // Trigger maximize mode by opening to 270.
540 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 0.0f, -1.0f),
541 gfx::Vector3dF(-1.0f, 0.0f, 0.0f));
542 EXPECT_TRUE(IsMaximizeModeStarted());
543 EXPECT_EQ(0u, message_center->NotificationCount());
544 EXPECT_FALSE(message_center->HasPopupNotifications());
545
546 // Make sure notifications are still displayed when
547 // adjusting the screen rotation directly when in maximize mode
548 ASSERT_NE(gfx::Display::ROTATE_270, GetInternalDisplayRotation());
549 SetInternalDisplayRotation(gfx::Display::ROTATE_270);
550 EXPECT_EQ(gfx::Display::ROTATE_270, GetInternalDisplayRotation());
551 EXPECT_EQ(1u, message_center->NotificationCount());
552 EXPECT_TRUE(message_center->HasPopupNotifications());
553
554 // Clear all notifications
555 message_center->RemoveAllNotifications(false);
556 EXPECT_EQ(0u, message_center->NotificationCount());
557 EXPECT_FALSE(message_center->HasPopupNotifications());
558
559 // Make sure notifications are blocked when adjusting the screen rotation
560 // via the accelerometer while in maximize mode
561 // Rotate the screen 90 degrees
562 ASSERT_NE(gfx::Display::ROTATE_90, GetInternalDisplayRotation());
563 TriggerAccelerometerUpdate(gfx::Vector3dF(0.0f, 1.0f, 0.0f),
564 gfx::Vector3dF(0.0f, 1.0f, 0.0f));
565 ASSERT_EQ(gfx::Display::ROTATE_90, GetInternalDisplayRotation());
566 EXPECT_EQ(0u, message_center->NotificationCount());
567 EXPECT_FALSE(message_center->HasPopupNotifications());
568 }
569
570 } // namespace ash 506 } // namespace ash
OLDNEW
« no previous file with comments | « trunk/src/ash/wm/maximize_mode/maximize_mode_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698