blob: 9969d2797bdc6034e6ffcfd7467d5f67175ef98b [file] [log] [blame]
[email protected]806d94e2012-12-16 20:31:261// Copyright (c) 2012 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/magnifier/magnification_controller.h"
6#include "ash/shell.h"
7#include "ash/system/tray/system_tray.h"
[email protected]806d94e2012-12-16 20:31:268#include "ash/system/tray_accessibility.h"
9#include "ash/system/user/login_status.h"
10#include "base/command_line.h"
[email protected]3853a4c2013-02-11 17:15:5711#include "base/prefs/pref_service.h"
[email protected]806d94e2012-12-16 20:31:2612#include "chrome/browser/browser_process.h"
[email protected]1dfebfc2013-06-04 03:14:3213#include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
[email protected]806d94e2012-12-16 20:31:2614#include "chrome/browser/chromeos/accessibility/magnification_manager.h"
15#include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h"
16#include "chrome/browser/chromeos/login/helper.h"
17#include "chrome/browser/chromeos/login/login_utils.h"
[email protected]aa8328fb2013-04-19 15:09:0618#include "chrome/browser/chromeos/login/startup_utils.h"
[email protected]806d94e2012-12-16 20:31:2619#include "chrome/browser/chromeos/login/user_manager.h"
20#include "chrome/browser/chromeos/login/user_manager_impl.h"
[email protected]5ace0c232013-05-29 00:48:4121#include "chrome/browser/policy/browser_policy_connector.h"
22#include "chrome/browser/policy/mock_configuration_policy_provider.h"
23#include "chrome/browser/policy/policy_map.h"
24#include "chrome/browser/policy/policy_types.h"
[email protected]806d94e2012-12-16 20:31:2625#include "chrome/browser/profiles/profile.h"
26#include "chrome/browser/profiles/profile_manager.h"
27#include "chrome/common/chrome_notification_types.h"
28#include "chrome/common/chrome_switches.h"
29#include "chrome/common/pref_names.h"
30#include "chrome/test/base/testing_profile.h"
[email protected]931d1042013-04-05 17:50:4431#include "chromeos/chromeos_switches.h"
[email protected]57999022013-06-07 12:52:0332#include "chromeos/login/login_state.h"
[email protected]806d94e2012-12-16 20:31:2633#include "content/public/test/test_utils.h"
[email protected]5ace0c232013-05-29 00:48:4134#include "policy/policy_constants.h"
[email protected]806d94e2012-12-16 20:31:2635#include "testing/gtest/include/gtest/gtest.h"
36#include "ui/views/widget/widget.h"
37
[email protected]5ace0c232013-05-29 00:48:4138using testing::AnyNumber;
39using testing::Return;
40using testing::_;
41using testing::WithParamInterface;
42
[email protected]806d94e2012-12-16 20:31:2643namespace chromeos {
44
[email protected]5ace0c232013-05-29 00:48:4145enum PrefSettingMechanism {
46 PREF_SERVICE,
47 POLICY,
48};
49
[email protected]7585f4c2013-01-10 18:26:4150void SetMagnifierEnabled(bool enabled) {
51 MagnificationManager::Get()->SetMagnifierEnabled(enabled);
[email protected]806d94e2012-12-16 20:31:2652}
53
[email protected]5ace0c232013-05-29 00:48:4154class TrayAccessibilityTest
55 : public CrosInProcessBrowserTest,
56 public WithParamInterface<PrefSettingMechanism> {
[email protected]806d94e2012-12-16 20:31:2657 protected:
58 TrayAccessibilityTest() {}
59 virtual ~TrayAccessibilityTest() {}
[email protected]25cf28e2013-03-25 19:26:2560
[email protected]5ace0c232013-05-29 00:48:4161 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
62 EXPECT_CALL(provider_, IsInitializationComplete(_))
63 .WillRepeatedly(Return(true));
64 EXPECT_CALL(provider_, RegisterPolicyDomain(_)).Times(AnyNumber());
65 policy::BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_);
66 }
67
[email protected]806d94e2012-12-16 20:31:2668 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
69 command_line->AppendSwitch(switches::kLoginManager);
70 command_line->AppendSwitchASCII(switches::kLoginProfile,
71 TestingProfile::kTestUserProfileDir);
72 }
73
[email protected]25cf28e2013-03-25 19:26:2574 virtual void RunTestOnMainThreadLoop() OVERRIDE {
75 // Need to mark oobe completed to show detailed views.
[email protected]aa8328fb2013-04-19 15:09:0676 StartupUtils::MarkOobeCompleted();
[email protected]25cf28e2013-03-25 19:26:2577 CrosInProcessBrowserTest::RunTestOnMainThreadLoop();
78 }
79
[email protected]5ace0c232013-05-29 00:48:4180 void SetShowAccessibilityOptionsInSystemTrayMenu(bool value) {
81 if (GetParam() == PREF_SERVICE) {
82 Profile* profile = ProfileManager::GetDefaultProfile();
83 PrefService* prefs = profile->GetPrefs();
84 prefs->SetBoolean(prefs::kShouldAlwaysShowAccessibilityMenu, value);
85 } else if (GetParam() == POLICY) {
86 policy::PolicyMap policy_map;
87 policy_map.Set(policy::key::kShowAccessibilityOptionsInSystemTrayMenu,
88 policy::POLICY_LEVEL_MANDATORY,
89 policy::POLICY_SCOPE_USER,
90 base::Value::CreateBooleanValue(value));
91 provider_.UpdateChromePolicy(policy_map);
92 base::RunLoop().RunUntilIdle();
93 } else {
94 FAIL() << "Unknown test parameterization";
95 }
96 }
97
[email protected]806d94e2012-12-16 20:31:2698 ash::internal::TrayAccessibility* tray() {
99 return ash::Shell::GetInstance()->GetPrimarySystemTray()->
100 GetTrayAccessibilityForTest();
101 }
102
103 bool IsTrayIconVisible() {
104 return tray()->tray_icon_visible_;
105 }
106
107 views::View* CreateMenuItem() {
108 return tray()->CreateDefaultView(GetLoginStatus());
109 }
110
111 void DestroyMenuItem() {
112 return tray()->DestroyDefaultView();
113 }
114
115 bool CanCreateMenuItem() {
116 views::View* menu_item_view = CreateMenuItem();
117 DestroyMenuItem();
118 return menu_item_view != NULL;
119 }
120
121 void SetLoginStatus(ash::user::LoginStatus status) {
122 tray()->UpdateAfterLoginStatusChange(status);
123 }
124
125 ash::user::LoginStatus GetLoginStatus() {
126 return tray()->login_;
127 }
128
129 bool CreateDetailedMenu() {
130 tray()->PopupDetailedView(0, false);
131 return tray()->detailed_menu_ != NULL;
132 }
133
134 void CloseDetailMenu() {
135 CHECK(tray()->detailed_menu_);
136 tray()->DestroyDetailedView();
137 tray()->detailed_menu_ = NULL;
138 }
139
140 void ClickSpokenFeedbackOnDetailMenu() {
141 views::View* button = tray()->detailed_menu_->spoken_feedback_view_;
[email protected]acd0fd7a2013-03-04 22:00:53142 tray()->detailed_menu_->OnViewClicked(button);
[email protected]806d94e2012-12-16 20:31:26143 }
144
145 void ClickHighContrastOnDetailMenu() {
146 views::View* button = tray()->detailed_menu_->high_contrast_view_;
147 EXPECT_TRUE(button);
[email protected]acd0fd7a2013-03-04 22:00:53148 tray()->detailed_menu_->OnViewClicked(button);
[email protected]806d94e2012-12-16 20:31:26149 }
150
151 void ClickScreenMagnifierOnDetailMenu() {
152 views::View* button = tray()->detailed_menu_->screen_magnifier_view_;
153 EXPECT_TRUE(button);
[email protected]acd0fd7a2013-03-04 22:00:53154 tray()->detailed_menu_->OnViewClicked(button);
[email protected]806d94e2012-12-16 20:31:26155 }
156
157 bool IsSpokenFeedbackEnabledOnDetailMenu() {
158 return tray()->detailed_menu_->spoken_feedback_enabled_;
159 }
160
161 bool IsHighContrastEnabledOnDetailMenu() {
162 return tray()->detailed_menu_->high_contrast_enabled_;
163 }
164
165 bool IsScreenMagnifierEnabledOnDetailMenu() {
166 return tray()->detailed_menu_->screen_magnifier_enabled_;
167 }
[email protected]5ace0c232013-05-29 00:48:41168
[email protected]57999022013-06-07 12:52:03169 bool IsLargeCursorEnabledOnDetailMenu() {
170 return tray()->detailed_menu_->large_cursor_enabled_;
171 }
172
173 bool IsSpokenFeedbackMenuShownOnDetailMenu() {
174 return tray()->detailed_menu_->spoken_feedback_view_;
175 }
176
177 bool IsHighContrastMenuShownOnDetailMenu() {
178 return tray()->detailed_menu_->high_contrast_view_;
179 }
180
181 bool IsScreenMagnifierMenuShownOnDetailMenu() {
182 return tray()->detailed_menu_->screen_magnifier_view_;
183 }
184
185 bool IsLargeCursorMenuShownOnDetailMenu() {
186 return tray()->detailed_menu_->large_cursor_view_;
187 }
188
[email protected]5ace0c232013-05-29 00:48:41189 policy::MockConfigurationPolicyProvider provider_;
[email protected]806d94e2012-12-16 20:31:26190};
191
[email protected]5ace0c232013-05-29 00:48:41192IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, LoginStatus) {
[email protected]806d94e2012-12-16 20:31:26193 EXPECT_EQ(ash::user::LOGGED_IN_NONE, GetLoginStatus());
194
[email protected]40429592013-03-29 17:52:33195 UserManager::Get()->UserLoggedIn(
196 "[email protected]", "[email protected]", true);
[email protected]806d94e2012-12-16 20:31:26197 UserManager::Get()->SessionStarted();
198
199 EXPECT_EQ(ash::user::LOGGED_IN_USER, GetLoginStatus());
200}
201
[email protected]5ace0c232013-05-29 00:48:41202IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, ShowTrayIcon) {
[email protected]806d94e2012-12-16 20:31:26203 SetLoginStatus(ash::user::LOGGED_IN_NONE);
204
205 // Confirms that the icon is invisible before login.
206 EXPECT_FALSE(IsTrayIconVisible());
207
[email protected]40429592013-03-29 17:52:33208 UserManager::Get()->UserLoggedIn(
209 "[email protected]", "[email protected]", true);
[email protected]806d94e2012-12-16 20:31:26210 UserManager::Get()->SessionStarted();
211
212 // Confirms that the icon is invisible just after login.
213 EXPECT_FALSE(IsTrayIconVisible());
214
[email protected]1dfebfc2013-06-04 03:14:32215 // Toggling spoken feedback changes the visibillity of the icon.
216 AccessibilityManager::Get()->EnableSpokenFeedback(
217 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26218 EXPECT_TRUE(IsTrayIconVisible());
[email protected]1dfebfc2013-06-04 03:14:32219 AccessibilityManager::Get()->EnableSpokenFeedback(
220 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26221 EXPECT_FALSE(IsTrayIconVisible());
222
[email protected]1dfebfc2013-06-04 03:14:32223 // Toggling high contrast the visibillity of the icon.
224 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26225 EXPECT_TRUE(IsTrayIconVisible());
[email protected]1dfebfc2013-06-04 03:14:32226 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26227 EXPECT_FALSE(IsTrayIconVisible());
228
[email protected]5ace0c232013-05-29 00:48:41229 // Toggling magnifier the visibility of the icon.
[email protected]7585f4c2013-01-10 18:26:41230 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26231 EXPECT_TRUE(IsTrayIconVisible());
[email protected]7585f4c2013-01-10 18:26:41232 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26233 EXPECT_FALSE(IsTrayIconVisible());
234
235 // Enabling all accessibility features.
[email protected]7585f4c2013-01-10 18:26:41236 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26237 EXPECT_TRUE(IsTrayIconVisible());
[email protected]1dfebfc2013-06-04 03:14:32238 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26239 EXPECT_TRUE(IsTrayIconVisible());
[email protected]1dfebfc2013-06-04 03:14:32240 AccessibilityManager::Get()->EnableSpokenFeedback(
241 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26242 EXPECT_TRUE(IsTrayIconVisible());
[email protected]1dfebfc2013-06-04 03:14:32243 AccessibilityManager::Get()->EnableSpokenFeedback(
244 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26245 EXPECT_TRUE(IsTrayIconVisible());
[email protected]1dfebfc2013-06-04 03:14:32246 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26247 EXPECT_TRUE(IsTrayIconVisible());
[email protected]7585f4c2013-01-10 18:26:41248 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26249 EXPECT_FALSE(IsTrayIconVisible());
250
251 // Confirms that prefs::kShouldAlwaysShowAccessibilityMenu doesn't affect
252 // the icon on the tray.
[email protected]5ace0c232013-05-29 00:48:41253 SetShowAccessibilityOptionsInSystemTrayMenu(true);
[email protected]1dfebfc2013-06-04 03:14:32254 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26255 EXPECT_TRUE(IsTrayIconVisible());
[email protected]1dfebfc2013-06-04 03:14:32256 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26257 EXPECT_FALSE(IsTrayIconVisible());
258}
259
[email protected]5ace0c232013-05-29 00:48:41260IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, ShowMenu) {
[email protected]806d94e2012-12-16 20:31:26261 // Login
[email protected]40429592013-03-29 17:52:33262 UserManager::Get()->UserLoggedIn(
263 "[email protected]", "[email protected]", true);
[email protected]806d94e2012-12-16 20:31:26264 UserManager::Get()->SessionStarted();
265
[email protected]5ace0c232013-05-29 00:48:41266 SetShowAccessibilityOptionsInSystemTrayMenu(false);
[email protected]806d94e2012-12-16 20:31:26267
268 // Confirms that the menu is hidden.
269 EXPECT_FALSE(CanCreateMenuItem());
270
[email protected]1dfebfc2013-06-04 03:14:32271 // Toggling spoken feedback changes the visibillity of the menu.
272 AccessibilityManager::Get()->EnableSpokenFeedback(
273 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26274 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32275 AccessibilityManager::Get()->EnableSpokenFeedback(
276 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26277 EXPECT_FALSE(CanCreateMenuItem());
278
[email protected]1dfebfc2013-06-04 03:14:32279 // Toggling high contrast changes the visibillity of the menu.
280 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26281 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32282 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26283 EXPECT_FALSE(CanCreateMenuItem());
284
[email protected]5ace0c232013-05-29 00:48:41285 // Toggling screen magnifier changes the visibility of the menu.
[email protected]7585f4c2013-01-10 18:26:41286 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26287 EXPECT_TRUE(CanCreateMenuItem());
[email protected]7585f4c2013-01-10 18:26:41288 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26289 EXPECT_FALSE(CanCreateMenuItem());
290
291 // Enabling all accessibility features.
[email protected]7585f4c2013-01-10 18:26:41292 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26293 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32294 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26295 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32296 AccessibilityManager::Get()->EnableSpokenFeedback(
297 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26298 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32299 AccessibilityManager::Get()->EnableSpokenFeedback(
300 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26301 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32302 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26303 EXPECT_TRUE(CanCreateMenuItem());
[email protected]7585f4c2013-01-10 18:26:41304 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26305 EXPECT_FALSE(CanCreateMenuItem());
306}
307
[email protected]5ace0c232013-05-29 00:48:41308IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, ShowMenuWithShowMenuOption) {
[email protected]806d94e2012-12-16 20:31:26309 // Login
[email protected]40429592013-03-29 17:52:33310 UserManager::Get()->UserLoggedIn(
311 "[email protected]", "[email protected]", true);
[email protected]806d94e2012-12-16 20:31:26312 UserManager::Get()->SessionStarted();
313
[email protected]5ace0c232013-05-29 00:48:41314 SetShowAccessibilityOptionsInSystemTrayMenu(true);
[email protected]806d94e2012-12-16 20:31:26315
316 // Confirms that the menu is visible.
317 EXPECT_TRUE(CanCreateMenuItem());
318
319 // The menu is keeping visible regardless of toggling spoken feedback.
[email protected]1dfebfc2013-06-04 03:14:32320 AccessibilityManager::Get()->EnableSpokenFeedback(
321 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26322 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32323 AccessibilityManager::Get()->EnableSpokenFeedback(
324 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26325 EXPECT_TRUE(CanCreateMenuItem());
326
327 // The menu is keeping visible regardless of toggling high contrast.
[email protected]1dfebfc2013-06-04 03:14:32328 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26329 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32330 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26331 EXPECT_TRUE(CanCreateMenuItem());
332
333 // The menu is keeping visible regardless of toggling screen magnifier.
[email protected]7585f4c2013-01-10 18:26:41334 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26335 EXPECT_TRUE(CanCreateMenuItem());
[email protected]7585f4c2013-01-10 18:26:41336 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26337 EXPECT_TRUE(CanCreateMenuItem());
338
339 // Enabling all accessibility features.
[email protected]7585f4c2013-01-10 18:26:41340 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26341 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32342 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26343 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32344 AccessibilityManager::Get()->EnableSpokenFeedback(
345 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26346 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32347 AccessibilityManager::Get()->EnableSpokenFeedback(
348 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26349 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32350 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26351 EXPECT_TRUE(CanCreateMenuItem());
[email protected]7585f4c2013-01-10 18:26:41352 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26353 EXPECT_TRUE(CanCreateMenuItem());
354
[email protected]5ace0c232013-05-29 00:48:41355 SetShowAccessibilityOptionsInSystemTrayMenu(false);
[email protected]806d94e2012-12-16 20:31:26356
357 // Confirms that the menu is invisible.
358 EXPECT_FALSE(CanCreateMenuItem());
359}
360
[email protected]5ace0c232013-05-29 00:48:41361IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, ShowMenuWithShowOnLoginScreen) {
[email protected]806d94e2012-12-16 20:31:26362 SetLoginStatus(ash::user::LOGGED_IN_NONE);
363
364 // Confirms that the menu is visible.
365 EXPECT_TRUE(CanCreateMenuItem());
366
367 // The menu is keeping visible regardless of toggling spoken feedback.
[email protected]1dfebfc2013-06-04 03:14:32368 AccessibilityManager::Get()->EnableSpokenFeedback(
369 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26370 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32371 AccessibilityManager::Get()->EnableSpokenFeedback(
372 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26373 EXPECT_TRUE(CanCreateMenuItem());
374
375 // The menu is keeping visible regardless of toggling high contrast.
[email protected]1dfebfc2013-06-04 03:14:32376 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26377 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32378 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26379 EXPECT_TRUE(CanCreateMenuItem());
380
381 // The menu is keeping visible regardless of toggling screen magnifier.
[email protected]7585f4c2013-01-10 18:26:41382 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26383 EXPECT_TRUE(CanCreateMenuItem());
[email protected]7585f4c2013-01-10 18:26:41384 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26385 EXPECT_TRUE(CanCreateMenuItem());
386
387 // Enabling all accessibility features.
[email protected]7585f4c2013-01-10 18:26:41388 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26389 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32390 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26391 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32392 AccessibilityManager::Get()->EnableSpokenFeedback(
393 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26394 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32395 AccessibilityManager::Get()->EnableSpokenFeedback(
396 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26397 EXPECT_TRUE(CanCreateMenuItem());
[email protected]1dfebfc2013-06-04 03:14:32398 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26399 EXPECT_TRUE(CanCreateMenuItem());
[email protected]7585f4c2013-01-10 18:26:41400 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26401 EXPECT_TRUE(CanCreateMenuItem());
402
[email protected]5ace0c232013-05-29 00:48:41403 SetShowAccessibilityOptionsInSystemTrayMenu(true);
[email protected]806d94e2012-12-16 20:31:26404
405 // Confirms that the menu is keeping visible.
406 EXPECT_TRUE(CanCreateMenuItem());
407
[email protected]5ace0c232013-05-29 00:48:41408 SetShowAccessibilityOptionsInSystemTrayMenu(false);
[email protected]806d94e2012-12-16 20:31:26409
410 // Confirms that the menu is keeping visible.
411 EXPECT_TRUE(CanCreateMenuItem());
412}
413
[email protected]5ace0c232013-05-29 00:48:41414IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, KeepMenuVisibilityOnLockScreen) {
[email protected]14c95c82013-01-30 06:30:29415 // Enables high contrast mode.
[email protected]1dfebfc2013-06-04 03:14:32416 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]14c95c82013-01-30 06:30:29417 EXPECT_TRUE(CanCreateMenuItem());
418
419 // Locks the screen.
420 SetLoginStatus(ash::user::LOGGED_IN_LOCKED);
421 EXPECT_TRUE(CanCreateMenuItem());
422
423 // Disables high contrast mode.
[email protected]1dfebfc2013-06-04 03:14:32424 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]14c95c82013-01-30 06:30:29425
426 // Confirms that the menu is still visible.
427 EXPECT_TRUE(CanCreateMenuItem());
428}
429
[email protected]8bacb662013-02-27 03:15:24430#if defined(OS_CHROMEOS)
431#define MAYBE_ClickDetailMenu DISABLED_ClickDetailMenu
432#else
433#define MAYBE_ClickDetailMenu ClickDetailMenu
434#endif
435
[email protected]5ace0c232013-05-29 00:48:41436IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, MAYBE_ClickDetailMenu) {
[email protected]806d94e2012-12-16 20:31:26437 // Confirms that the check item toggles the spoken feedback.
[email protected]1dfebfc2013-06-04 03:14:32438 EXPECT_FALSE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
[email protected]806d94e2012-12-16 20:31:26439
440 EXPECT_TRUE(CreateDetailedMenu());
441 ClickSpokenFeedbackOnDetailMenu();
[email protected]1dfebfc2013-06-04 03:14:32442 EXPECT_TRUE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
[email protected]806d94e2012-12-16 20:31:26443
444 EXPECT_TRUE(CreateDetailedMenu());
445 ClickSpokenFeedbackOnDetailMenu();
[email protected]1dfebfc2013-06-04 03:14:32446 EXPECT_FALSE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
[email protected]806d94e2012-12-16 20:31:26447
448 // Confirms that the check item toggles the high contrast.
[email protected]1dfebfc2013-06-04 03:14:32449 EXPECT_FALSE(AccessibilityManager::Get()->IsHighContrastEnabled());
[email protected]806d94e2012-12-16 20:31:26450
451 EXPECT_TRUE(CreateDetailedMenu());
452 ClickHighContrastOnDetailMenu();
[email protected]1dfebfc2013-06-04 03:14:32453 EXPECT_TRUE(AccessibilityManager::Get()->IsHighContrastEnabled());
[email protected]806d94e2012-12-16 20:31:26454
455 EXPECT_TRUE(CreateDetailedMenu());
456 ClickHighContrastOnDetailMenu();
[email protected]1dfebfc2013-06-04 03:14:32457 EXPECT_FALSE(AccessibilityManager::Get()->IsHighContrastEnabled());
[email protected]806d94e2012-12-16 20:31:26458
459 // Confirms that the check item toggles the magnifier.
[email protected]1dfebfc2013-06-04 03:14:32460 EXPECT_FALSE(AccessibilityManager::Get()->IsHighContrastEnabled());
[email protected]806d94e2012-12-16 20:31:26461
[email protected]7585f4c2013-01-10 18:26:41462 EXPECT_FALSE(MagnificationManager::Get()->IsMagnifierEnabled());
[email protected]806d94e2012-12-16 20:31:26463 EXPECT_TRUE(CreateDetailedMenu());
464 ClickScreenMagnifierOnDetailMenu();
[email protected]7585f4c2013-01-10 18:26:41465 EXPECT_TRUE(MagnificationManager::Get()->IsMagnifierEnabled());
[email protected]806d94e2012-12-16 20:31:26466
467 EXPECT_TRUE(CreateDetailedMenu());
468 ClickScreenMagnifierOnDetailMenu();
[email protected]7585f4c2013-01-10 18:26:41469 EXPECT_FALSE(MagnificationManager::Get()->IsMagnifierEnabled());
[email protected]806d94e2012-12-16 20:31:26470}
471
[email protected]5ace0c232013-05-29 00:48:41472IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, CheckMarksOnDetailMenu) {
[email protected]57999022013-06-07 12:52:03473 SetLoginStatus(ash::user::LOGGED_IN_NONE);
474
[email protected]806d94e2012-12-16 20:31:26475 // At first, all of the check is unchecked.
476 EXPECT_TRUE(CreateDetailedMenu());
477 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
478 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
479 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03480 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26481 CloseDetailMenu();
482
483 // Enabling spoken feedback.
[email protected]1dfebfc2013-06-04 03:14:32484 AccessibilityManager::Get()->EnableSpokenFeedback(
485 true, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26486 EXPECT_TRUE(CreateDetailedMenu());
487 EXPECT_TRUE(IsSpokenFeedbackEnabledOnDetailMenu());
488 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
489 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03490 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26491 CloseDetailMenu();
492
493 // Disabling spoken feedback.
[email protected]1dfebfc2013-06-04 03:14:32494 AccessibilityManager::Get()->EnableSpokenFeedback(
495 false, NULL, ash::A11Y_NOTIFICATION_NONE);
[email protected]806d94e2012-12-16 20:31:26496 EXPECT_TRUE(CreateDetailedMenu());
497 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
498 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
499 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03500 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26501 CloseDetailMenu();
502
503 // Enabling high contrast.
[email protected]1dfebfc2013-06-04 03:14:32504 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]806d94e2012-12-16 20:31:26505 EXPECT_TRUE(CreateDetailedMenu());
506 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
507 EXPECT_TRUE(IsHighContrastEnabledOnDetailMenu());
508 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03509 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26510 CloseDetailMenu();
511
512 // Disabling high contrast.
[email protected]1dfebfc2013-06-04 03:14:32513 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]806d94e2012-12-16 20:31:26514 EXPECT_TRUE(CreateDetailedMenu());
515 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
516 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
517 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03518 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26519 CloseDetailMenu();
520
521 // Enabling full screen magnifier.
[email protected]7585f4c2013-01-10 18:26:41522 SetMagnifierEnabled(true);
[email protected]806d94e2012-12-16 20:31:26523 EXPECT_TRUE(CreateDetailedMenu());
524 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
525 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
526 EXPECT_TRUE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03527 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26528 CloseDetailMenu();
529
530 // Disabling screen magnifier.
[email protected]7585f4c2013-01-10 18:26:41531 SetMagnifierEnabled(false);
[email protected]806d94e2012-12-16 20:31:26532 EXPECT_TRUE(CreateDetailedMenu());
533 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
534 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
535 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03536 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
537 CloseDetailMenu();
538
539 // Enabling large cursor.
540 AccessibilityManager::Get()->EnableLargeCursor(true);
541 EXPECT_TRUE(CreateDetailedMenu());
542 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
543 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
544 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
545 EXPECT_TRUE(IsLargeCursorEnabledOnDetailMenu());
546 CloseDetailMenu();
547
548 // Disabling large cursor.
549 AccessibilityManager::Get()->EnableLargeCursor(false);
550 EXPECT_TRUE(CreateDetailedMenu());
551 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
552 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
553 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
554 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26555 CloseDetailMenu();
556
557 // Enabling all of the a11y features.
[email protected]1dfebfc2013-06-04 03:14:32558 AccessibilityManager::Get()->EnableSpokenFeedback(
559 true, NULL, ash::A11Y_NOTIFICATION_NONE);
560 AccessibilityManager::Get()->EnableHighContrast(true);
[email protected]7585f4c2013-01-10 18:26:41561 SetMagnifierEnabled(true);
[email protected]57999022013-06-07 12:52:03562 AccessibilityManager::Get()->EnableLargeCursor(true);
[email protected]806d94e2012-12-16 20:31:26563 EXPECT_TRUE(CreateDetailedMenu());
564 EXPECT_TRUE(IsSpokenFeedbackEnabledOnDetailMenu());
565 EXPECT_TRUE(IsHighContrastEnabledOnDetailMenu());
566 EXPECT_TRUE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03567 EXPECT_TRUE(IsLargeCursorEnabledOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26568 CloseDetailMenu();
569
570 // Disabling all of the a11y features.
[email protected]1dfebfc2013-06-04 03:14:32571 AccessibilityManager::Get()->EnableSpokenFeedback(
572 false, NULL, ash::A11Y_NOTIFICATION_NONE);
573 AccessibilityManager::Get()->EnableHighContrast(false);
[email protected]7585f4c2013-01-10 18:26:41574 SetMagnifierEnabled(false);
[email protected]57999022013-06-07 12:52:03575 AccessibilityManager::Get()->EnableLargeCursor(false);
[email protected]806d94e2012-12-16 20:31:26576 EXPECT_TRUE(CreateDetailedMenu());
577 EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu());
578 EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu());
579 EXPECT_FALSE(IsScreenMagnifierEnabledOnDetailMenu());
[email protected]57999022013-06-07 12:52:03580 EXPECT_FALSE(IsLargeCursorEnabledOnDetailMenu());
581 CloseDetailMenu();
582}
583
584IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, CheckMenuVisibilityOnDetailMenu) {
585 SetLoginStatus(ash::user::LOGGED_IN_NONE);
586 EXPECT_TRUE(CreateDetailedMenu());
587 EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
588 EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
589 EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
590 EXPECT_TRUE(IsLargeCursorMenuShownOnDetailMenu());
591 CloseDetailMenu();
592
593 SetLoginStatus(ash::user::LOGGED_IN_USER);
594 EXPECT_TRUE(CreateDetailedMenu());
595 EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
596 EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
597 EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
598 EXPECT_FALSE(IsLargeCursorMenuShownOnDetailMenu());
599 CloseDetailMenu();
600
601 SetLoginStatus(ash::user::LOGGED_IN_LOCKED);
602 EXPECT_TRUE(CreateDetailedMenu());
603 EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
604 EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
605 EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
606 EXPECT_FALSE(IsLargeCursorMenuShownOnDetailMenu());
[email protected]806d94e2012-12-16 20:31:26607 CloseDetailMenu();
608}
609
[email protected]5ace0c232013-05-29 00:48:41610INSTANTIATE_TEST_CASE_P(TrayAccessibilityTestInstance,
611 TrayAccessibilityTest,
612 testing::Values(PREF_SERVICE,
613 POLICY));
614
[email protected]cce1bad62013-01-04 02:26:38615} // namespace chromeos