Commit 9c3bc703 authored by Qiang Xu's avatar Qiang Xu Committed by Commit Bot

cros: decouple show notification from OnAccessibilityStatusChanged

changes:
Decouples `show notification` from OnAccessibilityStatusChanged.
Callers decide to whether to show notification by explicitly notifying
observer themselves.

Bug: none
Test: tested on emulator, everything looks fine
Change-Id: If5cfbeaabea2583f7fe558cf098b69446a63bb14
Reviewed-on: https://chromium-review.googlesource.com/976091
Commit-Queue: Qiang Xu <warx@google.com>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545881}
parent 279708b3
...@@ -318,10 +318,9 @@ void AccessibilityController::PlaySpokenFeedbackToggleCountdown( ...@@ -318,10 +318,9 @@ void AccessibilityController::PlaySpokenFeedbackToggleCountdown(
client_->PlaySpokenFeedbackToggleCountdown(tick_count); client_->PlaySpokenFeedbackToggleCountdown(tick_count);
} }
void AccessibilityController::NotifyAccessibilityStatusChanged( void AccessibilityController::NotifyAccessibilityStatusChanged() {
AccessibilityNotificationVisibility notify) {
for (auto& observer : observers_) for (auto& observer : observers_)
observer.OnAccessibilityStatusChanged(notify); observer.OnAccessibilityStatusChanged();
} }
void AccessibilityController::SetClient( void AccessibilityController::SetClient(
...@@ -342,7 +341,8 @@ void AccessibilityController::BrailleDisplayStateChanged(bool connected) { ...@@ -342,7 +341,8 @@ void AccessibilityController::BrailleDisplayStateChanged(bool connected) {
braille_display_connected_ = connected; braille_display_connected_ = connected;
if (braille_display_connected_) if (braille_display_connected_)
SetSpokenFeedbackEnabled(true, A11Y_NOTIFICATION_SHOW); SetSpokenFeedbackEnabled(true, A11Y_NOTIFICATION_SHOW);
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_SHOW); NotifyAccessibilityStatusChanged();
NotifyShowAccessibilityNotification();
} }
void AccessibilityController::SetFocusHighlightRect( void AccessibilityController::SetFocusHighlightRect(
...@@ -466,7 +466,7 @@ void AccessibilityController::UpdateAutoclickFromPref() { ...@@ -466,7 +466,7 @@ void AccessibilityController::UpdateAutoclickFromPref() {
autoclick_enabled_ = enabled; autoclick_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
if (Shell::GetAshConfig() == Config::MASH) { if (Shell::GetAshConfig() == Config::MASH) {
if (!connector_) // Null in tests. if (!connector_) // Null in tests.
...@@ -511,7 +511,7 @@ void AccessibilityController::UpdateCaretHighlightFromPref() { ...@@ -511,7 +511,7 @@ void AccessibilityController::UpdateCaretHighlightFromPref() {
caret_highlight_enabled_ = enabled; caret_highlight_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
UpdateAccessibilityHighlightingFromPrefs(); UpdateAccessibilityHighlightingFromPrefs();
} }
...@@ -525,7 +525,7 @@ void AccessibilityController::UpdateCursorHighlightFromPref() { ...@@ -525,7 +525,7 @@ void AccessibilityController::UpdateCursorHighlightFromPref() {
cursor_highlight_enabled_ = enabled; cursor_highlight_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
UpdateAccessibilityHighlightingFromPrefs(); UpdateAccessibilityHighlightingFromPrefs();
} }
...@@ -543,7 +543,7 @@ void AccessibilityController::UpdateFocusHighlightFromPref() { ...@@ -543,7 +543,7 @@ void AccessibilityController::UpdateFocusHighlightFromPref() {
focus_highlight_enabled_ = enabled; focus_highlight_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
UpdateAccessibilityHighlightingFromPrefs(); UpdateAccessibilityHighlightingFromPrefs();
} }
...@@ -557,7 +557,7 @@ void AccessibilityController::UpdateHighContrastFromPref() { ...@@ -557,7 +557,7 @@ void AccessibilityController::UpdateHighContrastFromPref() {
high_contrast_enabled_ = enabled; high_contrast_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
// Under mash the UI service (window server) handles high contrast mode. // Under mash the UI service (window server) handles high contrast mode.
if (Shell::GetAshConfig() == Config::MASH) { if (Shell::GetAshConfig() == Config::MASH) {
...@@ -589,7 +589,7 @@ void AccessibilityController::UpdateLargeCursorFromPref() { ...@@ -589,7 +589,7 @@ void AccessibilityController::UpdateLargeCursorFromPref() {
large_cursor_enabled_ = enabled; large_cursor_enabled_ = enabled;
large_cursor_size_in_dip_ = size; large_cursor_size_in_dip_ = size;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
ShellPort::Get()->SetCursorSize( ShellPort::Get()->SetCursorSize(
large_cursor_enabled_ ? ui::CursorSize::kLarge : ui::CursorSize::kNormal); large_cursor_enabled_ ? ui::CursorSize::kLarge : ui::CursorSize::kNormal);
...@@ -606,7 +606,7 @@ void AccessibilityController::UpdateMonoAudioFromPref() { ...@@ -606,7 +606,7 @@ void AccessibilityController::UpdateMonoAudioFromPref() {
mono_audio_enabled_ = enabled; mono_audio_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
chromeos::CrasAudioHandler::Get()->SetOutputMonoEnabled(enabled); chromeos::CrasAudioHandler::Get()->SetOutputMonoEnabled(enabled);
} }
...@@ -620,7 +620,10 @@ void AccessibilityController::UpdateSpokenFeedbackFromPref() { ...@@ -620,7 +620,10 @@ void AccessibilityController::UpdateSpokenFeedbackFromPref() {
spoken_feedback_enabled_ = enabled; spoken_feedback_enabled_ = enabled;
NotifyAccessibilityStatusChanged(spoken_feedback_notification_); NotifyAccessibilityStatusChanged();
if (spoken_feedback_notification_ != A11Y_NOTIFICATION_NONE)
NotifyShowAccessibilityNotification();
// TODO(warx): ChromeVox loading/unloading requires browser process started, // TODO(warx): ChromeVox loading/unloading requires browser process started,
// thus it is still handled on Chrome side. // thus it is still handled on Chrome side.
...@@ -656,7 +659,7 @@ void AccessibilityController::UpdateSelectToSpeakFromPref() { ...@@ -656,7 +659,7 @@ void AccessibilityController::UpdateSelectToSpeakFromPref() {
select_to_speak_enabled_ = enabled; select_to_speak_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
} }
void AccessibilityController::UpdateStickyKeysFromPref() { void AccessibilityController::UpdateStickyKeysFromPref() {
...@@ -669,7 +672,7 @@ void AccessibilityController::UpdateStickyKeysFromPref() { ...@@ -669,7 +672,7 @@ void AccessibilityController::UpdateStickyKeysFromPref() {
sticky_keys_enabled_ = enabled; sticky_keys_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
Shell::Get()->sticky_keys_controller()->Enable(enabled); Shell::Get()->sticky_keys_controller()->Enable(enabled);
} }
...@@ -684,7 +687,7 @@ void AccessibilityController::UpdateVirtualKeyboardFromPref() { ...@@ -684,7 +687,7 @@ void AccessibilityController::UpdateVirtualKeyboardFromPref() {
virtual_keyboard_enabled_ = enabled; virtual_keyboard_enabled_ = enabled;
NotifyAccessibilityStatusChanged(A11Y_NOTIFICATION_NONE); NotifyAccessibilityStatusChanged();
keyboard::SetAccessibilityKeyboardEnabled(enabled); keyboard::SetAccessibilityKeyboardEnabled(enabled);
...@@ -706,4 +709,9 @@ void AccessibilityController::UpdateVirtualKeyboardFromPref() { ...@@ -706,4 +709,9 @@ void AccessibilityController::UpdateVirtualKeyboardFromPref() {
Shell::Get()->DestroyKeyboard(); Shell::Get()->DestroyKeyboard();
} }
void AccessibilityController::NotifyShowAccessibilityNotification() {
for (auto& observer : observers_)
observer.ShowAccessibilityNotification();
}
} // namespace ash } // namespace ash
...@@ -128,8 +128,7 @@ class ASH_EXPORT AccessibilityController ...@@ -128,8 +128,7 @@ class ASH_EXPORT AccessibilityController
// Public because a11y features like screen magnifier are managed outside of // Public because a11y features like screen magnifier are managed outside of
// this controller. // this controller.
void NotifyAccessibilityStatusChanged( void NotifyAccessibilityStatusChanged();
AccessibilityNotificationVisibility notify);
// mojom::AccessibilityController: // mojom::AccessibilityController:
void SetClient(mojom::AccessibilityControllerClientPtr client) override; void SetClient(mojom::AccessibilityControllerClientPtr client) override;
...@@ -164,6 +163,8 @@ class ASH_EXPORT AccessibilityController ...@@ -164,6 +163,8 @@ class ASH_EXPORT AccessibilityController
void UpdateVirtualKeyboardFromPref(); void UpdateVirtualKeyboardFromPref();
void UpdateAccessibilityHighlightingFromPrefs(); void UpdateAccessibilityHighlightingFromPrefs();
void NotifyShowAccessibilityNotification();
service_manager::Connector* connector_ = nullptr; service_manager::Connector* connector_ = nullptr;
std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_; std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
......
...@@ -26,17 +26,9 @@ class TestAccessibilityObserver : public AccessibilityObserver { ...@@ -26,17 +26,9 @@ class TestAccessibilityObserver : public AccessibilityObserver {
~TestAccessibilityObserver() override = default; ~TestAccessibilityObserver() override = default;
// AccessibilityObserver: // AccessibilityObserver:
void OnAccessibilityStatusChanged( void OnAccessibilityStatusChanged() override { ++status_changed_count_; }
AccessibilityNotificationVisibility notify) override {
if (notify == A11Y_NOTIFICATION_NONE) {
++notification_none_changed_;
} else if (notify == A11Y_NOTIFICATION_SHOW) {
++notification_show_changed_;
}
}
int notification_none_changed_ = 0; int status_changed_count_ = 0;
int notification_show_changed_ = 0;
private: private:
DISALLOW_COPY_AND_ASSIGN(TestAccessibilityObserver); DISALLOW_COPY_AND_ASSIGN(TestAccessibilityObserver);
...@@ -101,15 +93,15 @@ TEST_F(AccessibilityControllerTest, SetAutoclickEnabled) { ...@@ -101,15 +93,15 @@ TEST_F(AccessibilityControllerTest, SetAutoclickEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
controller->SetAutoclickEnabled(true); controller->SetAutoclickEnabled(true);
EXPECT_TRUE(controller->IsAutoclickEnabled()); EXPECT_TRUE(controller->IsAutoclickEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetAutoclickEnabled(false); controller->SetAutoclickEnabled(false);
EXPECT_FALSE(controller->IsAutoclickEnabled()); EXPECT_FALSE(controller->IsAutoclickEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -121,15 +113,15 @@ TEST_F(AccessibilityControllerTest, SetCaretHighlightEnabled) { ...@@ -121,15 +113,15 @@ TEST_F(AccessibilityControllerTest, SetCaretHighlightEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
controller->SetCaretHighlightEnabled(true); controller->SetCaretHighlightEnabled(true);
EXPECT_TRUE(controller->IsCaretHighlightEnabled()); EXPECT_TRUE(controller->IsCaretHighlightEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetCaretHighlightEnabled(false); controller->SetCaretHighlightEnabled(false);
EXPECT_FALSE(controller->IsCaretHighlightEnabled()); EXPECT_FALSE(controller->IsCaretHighlightEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -141,15 +133,15 @@ TEST_F(AccessibilityControllerTest, SetCursorHighlightEnabled) { ...@@ -141,15 +133,15 @@ TEST_F(AccessibilityControllerTest, SetCursorHighlightEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
controller->SetCursorHighlightEnabled(true); controller->SetCursorHighlightEnabled(true);
EXPECT_TRUE(controller->IsCursorHighlightEnabled()); EXPECT_TRUE(controller->IsCursorHighlightEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetCursorHighlightEnabled(false); controller->SetCursorHighlightEnabled(false);
EXPECT_FALSE(controller->IsCursorHighlightEnabled()); EXPECT_FALSE(controller->IsCursorHighlightEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -161,15 +153,15 @@ TEST_F(AccessibilityControllerTest, SetFocusHighlightEnabled) { ...@@ -161,15 +153,15 @@ TEST_F(AccessibilityControllerTest, SetFocusHighlightEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
controller->SetFocusHighlightEnabled(true); controller->SetFocusHighlightEnabled(true);
EXPECT_TRUE(controller->IsFocusHighlightEnabled()); EXPECT_TRUE(controller->IsFocusHighlightEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetFocusHighlightEnabled(false); controller->SetFocusHighlightEnabled(false);
EXPECT_FALSE(controller->IsFocusHighlightEnabled()); EXPECT_FALSE(controller->IsFocusHighlightEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -181,15 +173,15 @@ TEST_F(AccessibilityControllerTest, SetHighContrastEnabled) { ...@@ -181,15 +173,15 @@ TEST_F(AccessibilityControllerTest, SetHighContrastEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
controller->SetHighContrastEnabled(true); controller->SetHighContrastEnabled(true);
EXPECT_TRUE(controller->IsHighContrastEnabled()); EXPECT_TRUE(controller->IsHighContrastEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetHighContrastEnabled(false); controller->SetHighContrastEnabled(false);
EXPECT_FALSE(controller->IsHighContrastEnabled()); EXPECT_FALSE(controller->IsHighContrastEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -201,15 +193,15 @@ TEST_F(AccessibilityControllerTest, SetLargeCursorEnabled) { ...@@ -201,15 +193,15 @@ TEST_F(AccessibilityControllerTest, SetLargeCursorEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
controller->SetLargeCursorEnabled(true); controller->SetLargeCursorEnabled(true);
EXPECT_TRUE(controller->IsLargeCursorEnabled()); EXPECT_TRUE(controller->IsLargeCursorEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetLargeCursorEnabled(false); controller->SetLargeCursorEnabled(false);
EXPECT_FALSE(controller->IsLargeCursorEnabled()); EXPECT_FALSE(controller->IsLargeCursorEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -238,15 +230,15 @@ TEST_F(AccessibilityControllerTest, SetMonoAudioEnabled) { ...@@ -238,15 +230,15 @@ TEST_F(AccessibilityControllerTest, SetMonoAudioEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
controller->SetMonoAudioEnabled(true); controller->SetMonoAudioEnabled(true);
EXPECT_TRUE(controller->IsMonoAudioEnabled()); EXPECT_TRUE(controller->IsMonoAudioEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetMonoAudioEnabled(false); controller->SetMonoAudioEnabled(false);
EXPECT_FALSE(controller->IsMonoAudioEnabled()); EXPECT_FALSE(controller->IsMonoAudioEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -258,18 +250,15 @@ TEST_F(AccessibilityControllerTest, SetSpokenFeedbackEnabled) { ...@@ -258,18 +250,15 @@ TEST_F(AccessibilityControllerTest, SetSpokenFeedbackEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
EXPECT_EQ(0, observer.notification_show_changed_);
controller->SetSpokenFeedbackEnabled(true, A11Y_NOTIFICATION_SHOW); controller->SetSpokenFeedbackEnabled(true, A11Y_NOTIFICATION_SHOW);
EXPECT_TRUE(controller->IsSpokenFeedbackEnabled()); EXPECT_TRUE(controller->IsSpokenFeedbackEnabled());
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
EXPECT_EQ(1, observer.notification_show_changed_);
controller->SetSpokenFeedbackEnabled(false, A11Y_NOTIFICATION_NONE); controller->SetSpokenFeedbackEnabled(false, A11Y_NOTIFICATION_NONE);
EXPECT_FALSE(controller->IsSpokenFeedbackEnabled()); EXPECT_FALSE(controller->IsSpokenFeedbackEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
EXPECT_EQ(1, observer.notification_show_changed_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -281,19 +270,19 @@ TEST_F(AccessibilityControllerTest, SetStickyKeysEnabled) { ...@@ -281,19 +270,19 @@ TEST_F(AccessibilityControllerTest, SetStickyKeysEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
StickyKeysController* sticky_keys_controller = StickyKeysController* sticky_keys_controller =
Shell::Get()->sticky_keys_controller(); Shell::Get()->sticky_keys_controller();
controller->SetStickyKeysEnabled(true); controller->SetStickyKeysEnabled(true);
EXPECT_TRUE(sticky_keys_controller->enabled_for_test()); EXPECT_TRUE(sticky_keys_controller->enabled_for_test());
EXPECT_TRUE(controller->IsStickyKeysEnabled()); EXPECT_TRUE(controller->IsStickyKeysEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetStickyKeysEnabled(false); controller->SetStickyKeysEnabled(false);
EXPECT_FALSE(sticky_keys_controller->enabled_for_test()); EXPECT_FALSE(sticky_keys_controller->enabled_for_test());
EXPECT_FALSE(controller->IsStickyKeysEnabled()); EXPECT_FALSE(controller->IsStickyKeysEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
...@@ -305,17 +294,17 @@ TEST_F(AccessibilityControllerTest, SetVirtualKeyboardEnabled) { ...@@ -305,17 +294,17 @@ TEST_F(AccessibilityControllerTest, SetVirtualKeyboardEnabled) {
TestAccessibilityObserver observer; TestAccessibilityObserver observer;
controller->AddObserver(&observer); controller->AddObserver(&observer);
EXPECT_EQ(0, observer.notification_none_changed_); EXPECT_EQ(0, observer.status_changed_count_);
controller->SetVirtualKeyboardEnabled(true); controller->SetVirtualKeyboardEnabled(true);
EXPECT_TRUE(keyboard::GetAccessibilityKeyboardEnabled()); EXPECT_TRUE(keyboard::GetAccessibilityKeyboardEnabled());
EXPECT_TRUE(controller->IsVirtualKeyboardEnabled()); EXPECT_TRUE(controller->IsVirtualKeyboardEnabled());
EXPECT_EQ(1, observer.notification_none_changed_); EXPECT_EQ(1, observer.status_changed_count_);
controller->SetVirtualKeyboardEnabled(false); controller->SetVirtualKeyboardEnabled(false);
EXPECT_FALSE(keyboard::GetAccessibilityKeyboardEnabled()); EXPECT_FALSE(keyboard::GetAccessibilityKeyboardEnabled());
EXPECT_FALSE(controller->IsVirtualKeyboardEnabled()); EXPECT_FALSE(controller->IsVirtualKeyboardEnabled());
EXPECT_EQ(2, observer.notification_none_changed_); EXPECT_EQ(2, observer.status_changed_count_);
controller->RemoveObserver(&observer); controller->RemoveObserver(&observer);
} }
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#define ASH_ACCESSIBILITY_ACCESSIBILITY_OBSERVER_H_ #define ASH_ACCESSIBILITY_ACCESSIBILITY_OBSERVER_H_
#include "ash/ash_export.h" #include "ash/ash_export.h"
#include "ash/public/cpp/accessibility_types.h"
namespace ash { namespace ash {
...@@ -14,12 +13,13 @@ class ASH_EXPORT AccessibilityObserver { ...@@ -14,12 +13,13 @@ class ASH_EXPORT AccessibilityObserver {
public: public:
virtual ~AccessibilityObserver() {} virtual ~AccessibilityObserver() {}
// Notifies when accessibility status changes. Used to: // Called when any accessibility status changes.
// * Show the accessibility menu when any feature is enabled. virtual void OnAccessibilityStatusChanged() {}
// * Show notifications when spoken feedback or braille is enabled.
// TODO(jamescook): Split into two methods. // Called when notification should be shown for accessibility status changes,
virtual void OnAccessibilityStatusChanged( // used for spoken feedback or braille is enabled.
AccessibilityNotificationVisibility notify) = 0; // TODO(warx): move this to AccessibilityController.
virtual void ShowAccessibilityNotification() {}
}; };
} // namespace ash } // namespace ash
......
...@@ -56,8 +56,7 @@ TouchExplorationManager::~TouchExplorationManager() { ...@@ -56,8 +56,7 @@ TouchExplorationManager::~TouchExplorationManager() {
Shell::Get()->RemoveShellObserver(this); Shell::Get()->RemoveShellObserver(this);
} }
void TouchExplorationManager::OnAccessibilityStatusChanged( void TouchExplorationManager::OnAccessibilityStatusChanged() {
AccessibilityNotificationVisibility notify) {
UpdateTouchExplorationState(); UpdateTouchExplorationState();
} }
......
...@@ -50,8 +50,7 @@ class ASH_EXPORT TouchExplorationManager ...@@ -50,8 +50,7 @@ class ASH_EXPORT TouchExplorationManager
~TouchExplorationManager() override; ~TouchExplorationManager() override;
// AccessibilityObserver overrides: // AccessibilityObserver overrides:
void OnAccessibilityStatusChanged( void OnAccessibilityStatusChanged() override;
AccessibilityNotificationVisibility notify) override;
// TouchExplorationControllerDelegate overrides: // TouchExplorationControllerDelegate overrides:
void SetOutputLevel(int volume) override; void SetOutputLevel(int volume) override;
......
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
#include "ash/accessibility/accessibility_observer.h" #include "ash/accessibility/accessibility_observer.h"
#include "ash/keyboard/keyboard_ui_observer.h" #include "ash/keyboard/keyboard_ui_observer.h"
#include "ash/shell.h" #include "ash/shell.h"
#include "ash/system/tray/system_tray_notifier.h"
#include "ash/system/tray_accessibility.h"
#include "ui/keyboard/keyboard_controller.h" #include "ui/keyboard/keyboard_controller.h"
namespace ash { namespace ash {
...@@ -44,8 +42,7 @@ class KeyboardUIImpl : public KeyboardUI, public AccessibilityObserver { ...@@ -44,8 +42,7 @@ class KeyboardUIImpl : public KeyboardUI, public AccessibilityObserver {
} }
// AccessibilityObserver: // AccessibilityObserver:
void OnAccessibilityStatusChanged( void OnAccessibilityStatusChanged() override {
AccessibilityNotificationVisibility notify) override {
bool enabled = IsEnabled(); bool enabled = IsEnabled();
if (enabled_ == enabled) if (enabled_ == enabled)
return; return;
......
...@@ -523,8 +523,7 @@ void DockedMagnifierController::OnEnabledPrefChanged() { ...@@ -523,8 +523,7 @@ void DockedMagnifierController::OnEnabledPrefChanged() {
// Update the green checkmark status in the accessibility menu in the system // Update the green checkmark status in the accessibility menu in the system
// tray. // tray.
shell->accessibility_controller()->NotifyAccessibilityStatusChanged( shell->accessibility_controller()->NotifyAccessibilityStatusChanged();
A11Y_NOTIFICATION_NONE);
// We use software composited mouse cursor so that it can be mirrored into the // We use software composited mouse cursor so that it can be mirrored into the
// magnifier viewport. // magnifier viewport.
......
...@@ -175,8 +175,7 @@ void TrayIME::OnKeyboardSuppressionChanged(bool suppressed) { ...@@ -175,8 +175,7 @@ void TrayIME::OnKeyboardSuppressionChanged(bool suppressed) {
Update(); Update();
} }
void TrayIME::OnAccessibilityStatusChanged( void TrayIME::OnAccessibilityStatusChanged() {
AccessibilityNotificationVisibility notify) {
Update(); Update();
} }
......
...@@ -40,8 +40,7 @@ class ASH_EXPORT TrayIME : public SystemTrayItem, ...@@ -40,8 +40,7 @@ class ASH_EXPORT TrayIME : public SystemTrayItem,
void OnKeyboardSuppressionChanged(bool suppressed) override; void OnKeyboardSuppressionChanged(bool suppressed) override;
// Overridden from AccessibilityObserver: // Overridden from AccessibilityObserver:
void OnAccessibilityStatusChanged( void OnAccessibilityStatusChanged() override;
AccessibilityNotificationVisibility notify) override;
private: private:
friend class TrayIMETest; friend class TrayIMETest;
......
...@@ -531,10 +531,15 @@ void TrayAccessibility::UpdateAfterLoginStatusChange(LoginStatus status) { ...@@ -531,10 +531,15 @@ void TrayAccessibility::UpdateAfterLoginStatusChange(LoginStatus status) {
SetTrayIconVisible(GetInitialVisibility()); SetTrayIconVisible(GetInitialVisibility());
} }
void TrayAccessibility::OnAccessibilityStatusChanged( void TrayAccessibility::OnAccessibilityStatusChanged() {
AccessibilityNotificationVisibility notify) {
SetTrayIconVisible(GetInitialVisibility()); SetTrayIconVisible(GetInitialVisibility());
if (detailed_menu_)
detailed_menu_->OnAccessibilityStatusChanged();
}
// TODO(warx): Move ShowAccessibilityNotification() to AccessibilityController.
void TrayAccessibility::ShowAccessibilityNotification() {
uint32_t accessibility_state = GetAccessibilityState(); uint32_t accessibility_state = GetAccessibilityState();
// We'll get an extra notification if a braille display is connected when // We'll get an extra notification if a braille display is connected when
// spoken feedback wasn't already enabled. This is because the braille // spoken feedback wasn't already enabled. This is because the braille
...@@ -544,9 +549,6 @@ void TrayAccessibility::OnAccessibilityStatusChanged( ...@@ -544,9 +549,6 @@ void TrayAccessibility::OnAccessibilityStatusChanged(
if (accessibility_state == previous_accessibility_state_) if (accessibility_state == previous_accessibility_state_)
return; return;
if (detailed_menu_)
detailed_menu_->OnAccessibilityStatusChanged();
message_center::MessageCenter* message_center = message_center::MessageCenter* message_center =
message_center::MessageCenter::Get(); message_center::MessageCenter::Get();
message_center->RemoveNotification(kNotificationId, false /* by_user */); message_center->RemoveNotification(kNotificationId, false /* by_user */);
...@@ -558,9 +560,7 @@ void TrayAccessibility::OnAccessibilityStatusChanged( ...@@ -558,9 +560,7 @@ void TrayAccessibility::OnAccessibilityStatusChanged(
(A11Y_SPOKEN_FEEDBACK | A11Y_BRAILLE_DISPLAY_CONNECTED); (A11Y_SPOKEN_FEEDBACK | A11Y_BRAILLE_DISPLAY_CONNECTED);
previous_accessibility_state_ = accessibility_state; previous_accessibility_state_ = accessibility_state;
// Shows notification if |notify| is true and the spoken feedback is being if (being_enabled == A11Y_NONE)
// enabled or if a braille display is connected.
if (notify != A11Y_NOTIFICATION_SHOW || being_enabled == A11Y_NONE)
return; return;
base::string16 text; base::string16 text;
......
...@@ -122,8 +122,8 @@ class TrayAccessibility : public TrayImageItem, public AccessibilityObserver { ...@@ -122,8 +122,8 @@ class TrayAccessibility : public TrayImageItem, public AccessibilityObserver {
void UpdateAfterLoginStatusChange(LoginStatus status) override; void UpdateAfterLoginStatusChange(LoginStatus status) override;
// Overridden from AccessibilityObserver. // Overridden from AccessibilityObserver.
void OnAccessibilityStatusChanged( void OnAccessibilityStatusChanged() override;
AccessibilityNotificationVisibility notify) override; void ShowAccessibilityNotification() override;
views::View* default_; views::View* default_;
tray::AccessibilityDetailedView* detailed_menu_; tray::AccessibilityDetailedView* detailed_menu_;
......
...@@ -164,8 +164,7 @@ void BackdropController::OnSplitViewModeEnded() { ...@@ -164,8 +164,7 @@ void BackdropController::OnSplitViewModeEnded() {
Shell::Get()->split_view_controller()->RemoveObserver(this); Shell::Get()->split_view_controller()->RemoveObserver(this);
} }
void BackdropController::OnAccessibilityStatusChanged( void BackdropController::OnAccessibilityStatusChanged() {
AccessibilityNotificationVisibility notify) {
UpdateBackdrop(); UpdateBackdrop();
} }
......
...@@ -71,8 +71,7 @@ class BackdropController : public ShellObserver, ...@@ -71,8 +71,7 @@ class BackdropController : public ShellObserver,
void OnSplitViewModeEnded() override; void OnSplitViewModeEnded() override;
// AccessibilityObserver: // AccessibilityObserver:
void OnAccessibilityStatusChanged( void OnAccessibilityStatusChanged() override;
AccessibilityNotificationVisibility notify) override;
// SplitViewController::Observer: // SplitViewController::Observer:
void OnSplitViewStateChanged(SplitViewController::State previous_state, void OnSplitViewStateChanged(SplitViewController::State previous_state,
......
...@@ -378,7 +378,7 @@ void AccessibilityManager::UpdateAlwaysShowMenuFromPref() { ...@@ -378,7 +378,7 @@ void AccessibilityManager::UpdateAlwaysShowMenuFromPref() {
// Update system tray menu visibility. // Update system tray menu visibility.
ash::Shell::Get() ash::Shell::Get()
->accessibility_controller() ->accessibility_controller()
->NotifyAccessibilityStatusChanged(ash::A11Y_NOTIFICATION_NONE); ->NotifyAccessibilityStatusChanged();
} }
void AccessibilityManager::EnableLargeCursor(bool enabled) { void AccessibilityManager::EnableLargeCursor(bool enabled) {
...@@ -1070,7 +1070,7 @@ void AccessibilityManager::NotifyAccessibilityStatusChanged( ...@@ -1070,7 +1070,7 @@ void AccessibilityManager::NotifyAccessibilityStatusChanged(
if (details.notification_type == ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFIER) { if (details.notification_type == ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFIER) {
ash::Shell::Get() ash::Shell::Get()
->accessibility_controller() ->accessibility_controller()
->NotifyAccessibilityStatusChanged(details.notify); ->NotifyAccessibilityStatusChanged();
} }
} }
......
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