Commit e16cb394 authored by Amr Aboelkher's avatar Amr Aboelkher Committed by Commit Bot

Manage the visibility of mono audio accessibility feature on accessibility tray menu

Show the mono audio accessibility feature only if one of the following conditions have meet :
-Its not being controlled by any policy
-Its being controlled by a policy and the value of the policy is force on

Bug: 552439
Change-Id: I995db08d8331aa062cec26c57d4b2bba6ec74971
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1726031
Commit-Queue: Amr Aboelkher <amraboelkher@google.com>
Reviewed-by: default avatarAlice Boxhall <aboxhall@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#682917}
parent bb2dfc38
......@@ -541,6 +541,11 @@ void AccessibilityControllerImpl::SetMonoAudioEnabled(bool enabled) {
active_user_prefs_->CommitPendingWrite();
}
bool AccessibilityControllerImpl::GetTrayVisiblityOfMonoAudioSetting() {
return IsAccessibilityFeatureVisibleInTrayMenu(
prefs::kAccessibilityMonoAudioEnabled);
}
void AccessibilityControllerImpl::SetSpokenFeedbackEnabled(
bool enabled,
AccessibilityNotificationVisibility notify) {
......
......@@ -116,6 +116,10 @@ class ASH_EXPORT AccessibilityControllerImpl : public AccessibilityController,
void SetMonoAudioEnabled(bool enabled);
bool mono_audio_enabled() const { return mono_audio_enabled_; }
// Returns true if the mono audio is being controlled by a policy which
// enforces turning it on or its not being controlled by any type of policy
// and false otherwise.
bool GetTrayVisiblityOfMonoAudioSetting();
void SetSpokenFeedbackEnabled(bool enabled,
AccessibilityNotificationVisibility notify);
......
......@@ -271,6 +271,45 @@ TEST_F(AccessibilityControllerTest, HighContrastTrayMenuVisibility) {
EXPECT_FALSE(controller->GetTrayVisiblityOfHighContrastSetting());
}
TEST_F(AccessibilityControllerTest, MonoAudioTrayMenuVisibility) {
// Check that when the pref isn't being controlled by any policy will be
// visible in the accessibility tray menu despite its value.
PrefService* prefs =
Shell::Get()->session_controller()->GetLastActiveUserPrefService();
AccessibilityControllerImpl* controller =
Shell::Get()->accessibility_controller();
// Check when the value is true and not being controlled by any policy.
controller->SetMonoAudioEnabled(true);
EXPECT_FALSE(
prefs->IsManagedPreference(prefs::kAccessibilityMonoAudioEnabled));
EXPECT_TRUE(controller->mono_audio_enabled());
EXPECT_TRUE(controller->GetTrayVisiblityOfMonoAudioSetting());
// Check when the value is false and not being controlled by any policy.
controller->SetMonoAudioEnabled(false);
EXPECT_FALSE(
prefs->IsManagedPreference(prefs::kAccessibilityMonoAudioEnabled));
EXPECT_FALSE(controller->mono_audio_enabled());
EXPECT_TRUE(controller->GetTrayVisiblityOfMonoAudioSetting());
// Check that when the pref is managed and being forced on then it will be
// visible.
static_cast<TestingPrefServiceSimple*>(prefs)->SetManagedPref(
prefs::kAccessibilityMonoAudioEnabled,
std::make_unique<base::Value>(true));
EXPECT_TRUE(
prefs->IsManagedPreference(prefs::kAccessibilityMonoAudioEnabled));
EXPECT_TRUE(controller->GetTrayVisiblityOfMonoAudioSetting());
// Check that when the pref is managed and only being forced off then it will
// be invisible.
static_cast<TestingPrefServiceSimple*>(prefs)->SetManagedPref(
prefs::kAccessibilityMonoAudioEnabled,
std::make_unique<base::Value>(false));
EXPECT_TRUE(
prefs->IsManagedPreference(prefs::kAccessibilityMonoAudioEnabled));
EXPECT_FALSE(controller->mono_audio_enabled());
EXPECT_FALSE(controller->GetTrayVisiblityOfMonoAudioSetting());
}
TEST_F(AccessibilityControllerTest, DisableLargeCursorResetsSize) {
PrefService* prefs =
Shell::Get()->session_controller()->GetLastActiveUserPrefService();
......
......@@ -121,9 +121,11 @@ void AccessibilityDetailedView::OnAccessibilityStatusChanged() {
large_cursor_enabled_);
}
mono_audio_enabled_ = controller->mono_audio_enabled();
TrayPopupUtils::UpdateCheckMarkVisibility(mono_audio_view_,
mono_audio_enabled_);
if (mono_audio_view_ && controller->GetTrayVisiblityOfMonoAudioSetting()) {
mono_audio_enabled_ = controller->mono_audio_enabled();
TrayPopupUtils::UpdateCheckMarkVisibility(mono_audio_view_,
mono_audio_enabled_);
}
caret_highlight_enabled_ = controller->caret_highlight_enabled();
TrayPopupUtils::UpdateCheckMarkVisibility(caret_highlight_view_,
......@@ -237,10 +239,12 @@ void AccessibilityDetailedView::AppendAccessibilityList() {
large_cursor_enabled_);
}
mono_audio_enabled_ = controller->mono_audio_enabled();
mono_audio_view_ = AddScrollListCheckableItem(
l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_MONO_AUDIO),
mono_audio_enabled_);
if (controller->GetTrayVisiblityOfMonoAudioSetting()) {
mono_audio_enabled_ = controller->mono_audio_enabled();
mono_audio_view_ = AddScrollListCheckableItem(
l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_MONO_AUDIO),
mono_audio_enabled_);
}
caret_highlight_enabled_ = controller->caret_highlight_enabled();
caret_highlight_view_ = AddScrollListCheckableItem(
......
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