Commit 78a058bc authored by James Cook's avatar James Cook Committed by Commit Bot

Move one TrayAccessibilityTest to ash_unittests

TrayAccessibilityTest.CheckMenuVisibilityOnDetailMenu was disabled for
flake. The most likely cause is test-only race conditions in sending
session state from the browser to ash.

It does not need to be a browser test. Move it to ash_unittests to
avoid the race conditions and re-enable it.

Bug: 819987
Test: ash_unittests
Change-Id: Iecf37fbb9d0115c5d1f9299e729fb66d193f7048
Reviewed-on: https://chromium-review.googlesource.com/957308Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: James Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542223}
parent 9c6fb254
......@@ -29,6 +29,7 @@ class View;
namespace ash {
class HoverHighlightView;
class SystemTrayItem;
class TrayAccessibilityTest;
namespace tray {
......@@ -41,6 +42,7 @@ class AccessibilityDetailedView : public TrayDetailsView {
void OnAccessibilityStatusChanged();
private:
friend class ::ash::TrayAccessibilityTest;
friend class chromeos::TrayAccessibilityTest;
// TrayDetailsView:
......@@ -104,6 +106,7 @@ class TrayAccessibility : public TrayImageItem, public AccessibilityObserver {
~TrayAccessibility() override;
private:
friend class TrayAccessibilityTest;
friend class chromeos::TrayAccessibilityTest;
void SetTrayIconVisible(bool visible);
......
......@@ -34,7 +34,101 @@ void SetLargeCursorEnabledFromSettings(bool enabled) {
->SetBoolean(prefs::kAccessibilityLargeCursorEnabled, enabled);
}
using TrayAccessibilityTest = AshTestBase;
} // namespace
class TrayAccessibilityTest : public AshTestBase {
public:
TrayAccessibilityTest() = default;
~TrayAccessibilityTest() override = default;
// testing::Test:
void SetUp() override {
AshTestBase::SetUp();
tray_item_ = SystemTrayTestApi(Shell::Get()->GetPrimarySystemTray())
.tray_accessibility();
}
// These functions are members so TrayAccessibility can friend the test.
bool CreateDetailedMenu() {
tray_item_->ShowDetailedView(0);
return tray_item_->detailed_menu_ != nullptr;
}
void CloseDetailMenu() {
ASSERT_TRUE(tray_item_->detailed_menu_);
tray_item_->OnDetailedViewDestroyed();
ASSERT_FALSE(tray_item_->detailed_menu_);
}
bool IsSpokenFeedbackMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->spoken_feedback_view_;
}
bool IsSelectToSpeakShownOnDetailMenu() const {
return tray_item_->detailed_menu_->select_to_speak_view_;
}
bool IsHighContrastMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->high_contrast_view_;
}
bool IsScreenMagnifierMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->screen_magnifier_view_;
}
bool IsLargeCursorMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->large_cursor_view_;
}
bool IsAutoclickMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->autoclick_view_;
}
bool IsVirtualKeyboardMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->virtual_keyboard_view_;
}
bool IsMonoAudioMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->mono_audio_view_;
}
bool IsCaretHighlightMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->caret_highlight_view_;
}
bool IsHighlightMouseCursorMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->highlight_mouse_cursor_view_;
}
bool IsHighlightKeyboardFocusMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->highlight_keyboard_focus_view_;
}
bool IsStickyKeysMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->sticky_keys_view_;
}
bool IsTapDraggingMenuShownOnDetailMenu() const {
return tray_item_->detailed_menu_->tap_dragging_view_;
}
// In material design we show the help button but theme it as disabled if
// it is not possible to load the help page.
bool IsHelpAvailableOnDetailMenu() {
return tray_item_->detailed_menu_->help_view_->state() ==
views::Button::STATE_NORMAL;
}
// In material design we show the settings button but theme it as disabled if
// it is not possible to load the settings page.
bool IsSettingsAvailableOnDetailMenu() {
return tray_item_->detailed_menu_->settings_view_->state() ==
views::Button::STATE_NORMAL;
}
private:
TrayAccessibility* tray_item_;
};
// Tests that the icon becomes visible when the tray menu toggles a feature.
TEST_F(TrayAccessibilityTest, VisibilityFromMenu) {
......@@ -134,5 +228,68 @@ TEST_F(TrayAccessibilityTest, ShowNotificationOnBrailleDisplayStateChanged) {
EXPECT_EQ(kChromeVoxEnabled, (*notifications.begin())->message());
}
} // namespace
TEST_F(TrayAccessibilityTest, CheckMenuVisibilityOnDetailMenu) {
// Except help & settings, others should be kept the same
// in LOGIN | NOT LOGIN | LOCKED. https://crbug.com/632107.
EXPECT_TRUE(CreateDetailedMenu());
EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
EXPECT_TRUE(IsSelectToSpeakShownOnDetailMenu());
EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
EXPECT_TRUE(IsAutoclickMenuShownOnDetailMenu());
EXPECT_TRUE(IsVirtualKeyboardMenuShownOnDetailMenu());
EXPECT_TRUE(IsHelpAvailableOnDetailMenu());
EXPECT_TRUE(IsSettingsAvailableOnDetailMenu());
EXPECT_TRUE(IsLargeCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsMonoAudioMenuShownOnDetailMenu());
EXPECT_TRUE(IsCaretHighlightMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightMouseCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightKeyboardFocusMenuShownOnDetailMenu());
EXPECT_TRUE(IsStickyKeysMenuShownOnDetailMenu());
EXPECT_TRUE(IsTapDraggingMenuShownOnDetailMenu());
CloseDetailMenu();
// Simulate screen lock.
BlockUserSession(BLOCKED_BY_LOCK_SCREEN);
EXPECT_TRUE(CreateDetailedMenu());
EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
EXPECT_TRUE(IsSelectToSpeakShownOnDetailMenu());
EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
EXPECT_TRUE(IsAutoclickMenuShownOnDetailMenu());
EXPECT_TRUE(IsVirtualKeyboardMenuShownOnDetailMenu());
EXPECT_FALSE(IsHelpAvailableOnDetailMenu());
EXPECT_FALSE(IsSettingsAvailableOnDetailMenu());
EXPECT_TRUE(IsLargeCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsMonoAudioMenuShownOnDetailMenu());
EXPECT_TRUE(IsCaretHighlightMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightMouseCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightKeyboardFocusMenuShownOnDetailMenu());
EXPECT_TRUE(IsStickyKeysMenuShownOnDetailMenu());
EXPECT_TRUE(IsTapDraggingMenuShownOnDetailMenu());
CloseDetailMenu();
UnblockUserSession();
// Simulate adding multiprofile user.
BlockUserSession(BLOCKED_BY_USER_ADDING_SCREEN);
EXPECT_TRUE(CreateDetailedMenu());
EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
EXPECT_TRUE(IsSelectToSpeakShownOnDetailMenu());
EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
EXPECT_TRUE(IsAutoclickMenuShownOnDetailMenu());
EXPECT_TRUE(IsVirtualKeyboardMenuShownOnDetailMenu());
EXPECT_FALSE(IsHelpAvailableOnDetailMenu());
EXPECT_FALSE(IsSettingsAvailableOnDetailMenu());
EXPECT_TRUE(IsLargeCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsMonoAudioMenuShownOnDetailMenu());
EXPECT_TRUE(IsCaretHighlightMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightMouseCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightKeyboardFocusMenuShownOnDetailMenu());
EXPECT_TRUE(IsStickyKeysMenuShownOnDetailMenu());
EXPECT_TRUE(IsTapDraggingMenuShownOnDetailMenu());
CloseDetailMenu();
UnblockUserSession();
}
} // namespace ash
......@@ -344,54 +344,6 @@ class TrayAccessibilityTest
return tray()->detailed_menu_->tap_dragging_enabled_;
}
bool IsSpokenFeedbackMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->spoken_feedback_view_;
}
bool IsHighContrastMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->high_contrast_view_;
}
bool IsScreenMagnifierMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->screen_magnifier_view_;
}
bool IsLargeCursorMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->large_cursor_view_;
}
bool IsAutoclickMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->autoclick_view_;
}
bool IsVirtualKeyboardMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->virtual_keyboard_view_;
}
bool IsMonoAudioMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->mono_audio_view_;
}
bool IsCaretHighlightMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->caret_highlight_view_;
}
bool IsHighlightMouseCursorMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->highlight_mouse_cursor_view_;
}
bool IsHighlightKeyboardFocusMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->highlight_keyboard_focus_view_;
}
bool IsStickyKeysMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->sticky_keys_view_;
}
bool IsTapDraggingMenuShownOnDetailMenu() const {
return tray()->detailed_menu_->tap_dragging_view_;
}
// In material design we show the help button but theme it as disabled if
// it is not possible to load the help page.
static bool IsHelpAvailableOnDetailMenu() {
......@@ -994,6 +946,7 @@ IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, ShowMenuWithShowOnLoginScreen) {
EXPECT_TRUE(CanCreateMenuItem());
}
// TODO: Move to ash_unittests.
IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, KeepMenuVisibilityOnLockScreen) {
// Enables high contrast mode.
EnableHighContrast(true);
......@@ -1158,6 +1111,7 @@ IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, ClickDetailMenu) {
EXPECT_FALSE(AccessibilityManager::Get()->IsSelectToSpeakEnabled());
}
// TODO: Move to ash_unittests.
IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, CheckMarksOnDetailMenu) {
SetLoginStatus(ash::LoginStatus::NOT_LOGGED_IN);
......@@ -1668,82 +1622,11 @@ IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, CheckMarksOnDetailMenu) {
CloseDetailMenu();
}
// Flaky failures of IsHelpAvailableOnDetailMenu(). Possible race condition
// with session state. https://crbug.com/819987
IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest,
DISABLED_CheckMenuVisibilityOnDetailMenu) {
// Except help & settings, others should be kept the same
// in LOGIN | NOT LOGIN | LOCKED. https://crbug.com/632107.
EXPECT_TRUE(CreateDetailedMenu());
EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
EXPECT_FALSE(IsSelectToSpeakEnabledOnDetailMenu());
EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
EXPECT_TRUE(IsAutoclickMenuShownOnDetailMenu());
EXPECT_TRUE(IsVirtualKeyboardMenuShownOnDetailMenu());
EXPECT_TRUE(IsHelpAvailableOnDetailMenu());
EXPECT_TRUE(IsSettingsAvailableOnDetailMenu());
EXPECT_TRUE(IsLargeCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsMonoAudioMenuShownOnDetailMenu());
EXPECT_TRUE(IsCaretHighlightMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightMouseCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightKeyboardFocusMenuShownOnDetailMenu());
EXPECT_TRUE(IsStickyKeysMenuShownOnDetailMenu());
EXPECT_TRUE(IsTapDraggingMenuShownOnDetailMenu());
CloseDetailMenu();
// Simulate screen lock.
session_manager::SessionManager::Get()->SetSessionState(
session_manager::SessionState::LOCKED);
// Flush to ensure the session state reaches ash and updates login status.
SessionControllerClient::FlushForTesting();
EXPECT_TRUE(CreateDetailedMenu());
EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
EXPECT_FALSE(IsSelectToSpeakEnabledOnDetailMenu());
EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
EXPECT_TRUE(IsAutoclickMenuShownOnDetailMenu());
EXPECT_TRUE(IsVirtualKeyboardMenuShownOnDetailMenu());
EXPECT_FALSE(IsHelpAvailableOnDetailMenu());
EXPECT_FALSE(IsSettingsAvailableOnDetailMenu());
EXPECT_TRUE(IsLargeCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsMonoAudioMenuShownOnDetailMenu());
EXPECT_TRUE(IsCaretHighlightMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightMouseCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightKeyboardFocusMenuShownOnDetailMenu());
EXPECT_TRUE(IsStickyKeysMenuShownOnDetailMenu());
EXPECT_TRUE(IsTapDraggingMenuShownOnDetailMenu());
CloseDetailMenu();
// Simulate adding multiprofile user.
session_manager::SessionManager::Get()->SetSessionState(
session_manager::SessionState::LOGIN_SECONDARY);
// Flush to ensure the session state reaches ash and updates login status.
SessionControllerClient::FlushForTesting();
EXPECT_TRUE(CreateDetailedMenu());
EXPECT_TRUE(IsSpokenFeedbackMenuShownOnDetailMenu());
EXPECT_FALSE(IsSelectToSpeakEnabledOnDetailMenu());
EXPECT_TRUE(IsHighContrastMenuShownOnDetailMenu());
EXPECT_TRUE(IsScreenMagnifierMenuShownOnDetailMenu());
EXPECT_TRUE(IsAutoclickMenuShownOnDetailMenu());
EXPECT_TRUE(IsVirtualKeyboardMenuShownOnDetailMenu());
EXPECT_FALSE(IsHelpAvailableOnDetailMenu());
EXPECT_FALSE(IsSettingsAvailableOnDetailMenu());
EXPECT_TRUE(IsLargeCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsMonoAudioMenuShownOnDetailMenu());
EXPECT_TRUE(IsCaretHighlightMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightMouseCursorMenuShownOnDetailMenu());
EXPECT_TRUE(IsHighlightKeyboardFocusMenuShownOnDetailMenu());
EXPECT_TRUE(IsStickyKeysMenuShownOnDetailMenu());
EXPECT_TRUE(IsTapDraggingMenuShownOnDetailMenu());
CloseDetailMenu();
}
// Verify that the accessiblity system detailed menu remains open when an item
// is selected or deselected.
// TODO: Move to ash_unittests.
IN_PROC_BROWSER_TEST_P(TrayAccessibilityTest, DetailMenuRemainsOpen) {
EXPECT_TRUE(CreateDetailedMenu());
ASSERT_TRUE(IsAutoclickMenuShownOnDetailMenu());
ClickAutoclickOnDetailMenu();
EXPECT_TRUE(IsAutoclickEnabledOnDetailMenu());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment