Skip to content

Commit

Permalink
Revert "[Ash] Simplify accessibility tray view"
Browse files Browse the repository at this point in the history
This reverts commit 249ce21.

Reason for revert: 

Suspicion of breaking 30-odd accessibility tests (DumpAccessibilityEventsTest.*, DumpAccessibilityTreeTest.*) starting with

https://ci.chromium.org/p/chromium/builders/ci/linux-trusty-rel/15793
https://ci.chromium.org/p/chromium/builders/ci/Linux%20MSan%20Tests/25463


Original change's description:
> [Ash] Simplify accessibility tray view
> 
> After refactoring of AccessibilityControllerImpl, we can finally
> leverage that modularity by removing tons of identical calls.
> 
> Bug: 2390184
> Change-Id: I1c42bff577a844af80584ba6acd8da81e7b9b704
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2398687
> Commit-Queue: Anatoliy Potapchuk <apotapchuk@chromium.org>
> Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#806594}

TBR=xiyuan@chromium.org,apotapchuk@chromium.org

Change-Id: Iaee9d02267fd87eabc94930da410ff870079282c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 2390184
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2410341
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#806658}
  • Loading branch information
Avi Drissman authored and Commit Bot committed Sep 14, 2020
1 parent 834b0fa commit e9a9395
Show file tree
Hide file tree
Showing 6 changed files with 1,883 additions and 357 deletions.
170 changes: 153 additions & 17 deletions ash/accessibility/accessibility_controller_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ const FeatureData kFeatures[] = {
&kSystemMenuAccessibilityAutoClickIcon},
{FeatureType::kCaretHighlight, prefs::kAccessibilityCaretHighlightEnabled,
nullptr},
{FeatureType::kCursorHighlight, prefs::kAccessibilityCursorHighlightEnabled,
{FeatureType::KCursorHighlight, prefs::kAccessibilityCursorHighlightEnabled,
nullptr},
{FeatureType::kCursorColor, prefs::kAccessibilityCursorColorEnabled,
nullptr},
Expand Down Expand Up @@ -565,14 +565,6 @@ void AccessibilityControllerImpl::CreateAccessibilityFeatures() {
for (auto feature_data : kFeatures) {
DCHECK(!features_[feature_data.type]);
auto it = dialogs.find(feature_data.type);

// Some features have custom logic.
if (feature_data.type == FeatureType::kSwitchAccess) {
features_[feature_data.type] = std::make_unique<SwitchAccessFeature>(
feature_data.type, feature_data.pref, feature_data.icon, this);
continue;
}

if (it == dialogs.end()) {
features_[feature_data.type] = std::make_unique<Feature>(
feature_data.type, feature_data.pref, feature_data.icon, this);
Expand All @@ -581,8 +573,6 @@ void AccessibilityControllerImpl::CreateAccessibilityFeatures() {
feature_data.type, feature_data.pref, feature_data.icon, it->second,
this);
}
features_[feature_data.type]->SetConflictingFeature(
feature_data.conflicting_feature);
}
}

Expand Down Expand Up @@ -778,7 +768,7 @@ AccessibilityControllerImpl::caret_highlight() const {

AccessibilityControllerImpl::Feature&
AccessibilityControllerImpl::cursor_highlight() const {
return GetFeature(FeatureType::kCursorHighlight);
return GetFeature(FeatureType::KCursorHighlight);
}

AccessibilityControllerImpl::Feature&
Expand Down Expand Up @@ -854,6 +844,113 @@ AccessibilityControllerImpl::virtual_keyboard() const {
return GetFeature(FeatureType::kVirtualKeyboard);
}

bool AccessibilityControllerImpl::IsAutoclickSettingVisibleInTray() {
return autoclick().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForAutoclick() {
return autoclick().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsPrimarySettingsViewVisibleInTray() {
return (IsSpokenFeedbackSettingVisibleInTray() ||
IsSelectToSpeakSettingVisibleInTray() ||
IsDictationSettingVisibleInTray() ||
IsHighContrastSettingVisibleInTray() ||
IsFullScreenMagnifierSettingVisibleInTray() ||
IsDockedMagnifierSettingVisibleInTray() ||
IsAutoclickSettingVisibleInTray() ||
IsVirtualKeyboardSettingVisibleInTray() ||
IsSwitchAccessSettingVisibleInTray());
}

bool AccessibilityControllerImpl::IsAdditionalSettingsViewVisibleInTray() {
return (IsLargeCursorSettingVisibleInTray() ||
IsMonoAudioSettingVisibleInTray() ||
IsCaretHighlightSettingVisibleInTray() ||
IsCursorHighlightSettingVisibleInTray() ||
IsFocusHighlightSettingVisibleInTray() ||
IsStickyKeysSettingVisibleInTray());
}

bool AccessibilityControllerImpl::IsAdditionalSettingsSeparatorVisibleInTray() {
return IsPrimarySettingsViewVisibleInTray() &&
IsAdditionalSettingsViewVisibleInTray();
}

bool AccessibilityControllerImpl::IsCaretHighlightSettingVisibleInTray() {
return caret_highlight().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForCaretHighlight() {
return caret_highlight().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsCursorHighlightSettingVisibleInTray() {
return cursor_highlight().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForCursorHighlight() {
return cursor_highlight().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsDictationSettingVisibleInTray() {
return dictation().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForDictation() {
return dictation().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsFocusHighlightSettingVisibleInTray() {
return focus_highlight().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForFocusHighlight() {
return focus_highlight().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsFullScreenMagnifierSettingVisibleInTray() {
return fullscreen_magnifier().IsVisibleInTray();
}

bool AccessibilityControllerImpl::
IsEnterpriseIconVisibleForFullScreenMagnifier() {
return fullscreen_magnifier().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsDockedMagnifierSettingVisibleInTray() {
return docked_magnifier().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForDockedMagnifier() {
return docked_magnifier().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsHighContrastSettingVisibleInTray() {
return high_contrast().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForHighContrast() {
return high_contrast().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsLargeCursorSettingVisibleInTray() {
return large_cursor().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForLargeCursor() {
return large_cursor().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsMonoAudioSettingVisibleInTray() {
return mono_audio().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForMonoAudio() {
return mono_audio().IsEnterpriseIconVisible();
}

void AccessibilityControllerImpl::SetSpokenFeedbackEnabled(
bool enabled,
AccessibilityNotificationVisibility notify) {
Expand All @@ -870,6 +967,22 @@ void AccessibilityControllerImpl::SetSpokenFeedbackEnabled(
ShowAccessibilityNotification(type);
}

bool AccessibilityControllerImpl::IsSpokenFeedbackSettingVisibleInTray() {
return spoken_feedback().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForSpokenFeedback() {
return spoken_feedback().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsSelectToSpeakSettingVisibleInTray() {
return select_to_speak().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForSelectToSpeak() {
return select_to_speak().IsEnterpriseIconVisible();
}

void AccessibilityControllerImpl::RequestSelectToSpeakStateChange() {
client_->RequestSelectToSpeakStateChange();
}
Expand Down Expand Up @@ -902,14 +1015,21 @@ bool AccessibilityControllerImpl::IsSwitchAccessRunning() const {
return switch_access().enabled() || switch_access_disable_dialog_showing_;
}

bool AccessibilityControllerImpl::SwitchAccessFeature::IsVisibleInTray() const {
bool AccessibilityControllerImpl::IsSwitchAccessSettingVisibleInTray() {
// Switch Access cannot be enabled on the sign-in page because there is no way
// to configure switches while the device is locked.
if (!enabled() && Shell::Get()->session_controller()->login_status() ==
ash::LoginStatus::NOT_LOGGED_IN) {
if (!switch_access().enabled() &&
Shell::Get()->session_controller()->login_status() ==
ash::LoginStatus::NOT_LOGGED_IN) {
return false;
}
return Feature::IsVisibleInTray();
return switch_access().IsVisibleInTray();
return IsEnterpriseIconVisibleInTrayMenu(
prefs::kAccessibilitySwitchAccessEnabled);
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForSwitchAccess() {
return switch_access().IsEnterpriseIconVisible();
}

void AccessibilityControllerImpl::SetAccessibilityEventRewriter(
Expand Down Expand Up @@ -952,6 +1072,22 @@ void AccessibilityControllerImpl::StartPointScanning() {
point_scan_controller_->Start();
}

bool AccessibilityControllerImpl::IsStickyKeysSettingVisibleInTray() {
return sticky_keys().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForStickyKeys() {
return sticky_keys().IsEnterpriseIconVisible();
}

bool AccessibilityControllerImpl::IsVirtualKeyboardSettingVisibleInTray() {
return virtual_keyboard().IsVisibleInTray();
}

bool AccessibilityControllerImpl::IsEnterpriseIconVisibleForVirtualKeyboard() {
return virtual_keyboard().IsEnterpriseIconVisible();
}

void AccessibilityControllerImpl::ShowFloatingMenuIfEnabled() {
if (floating_menu().enabled() && !floating_menu_controller_) {
floating_menu_controller_ =
Expand Down Expand Up @@ -1699,7 +1835,7 @@ void AccessibilityControllerImpl::UpdateFeatureFromPref(FeatureType feature) {
case FeatureType::kCaretHighlight:
UpdateAccessibilityHighlightingFromPrefs();
break;
case FeatureType::kCursorHighlight:
case FeatureType::KCursorHighlight:
UpdateAccessibilityHighlightingFromPrefs();
break;
case FeatureType::kDictation:
Expand Down
68 changes: 59 additions & 9 deletions ash/accessibility/accessibility_controller_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class ASH_EXPORT AccessibilityControllerImpl : public AccessibilityController,
enum FeatureType {
kAutoclick = 0,
kCaretHighlight,
kCursorHighlight,
KCursorHighlight,
kDictation,
kFloatingMenu,
kFocusHighlight,
Expand Down Expand Up @@ -98,7 +98,7 @@ class ASH_EXPORT AccessibilityControllerImpl : public AccessibilityController,
// - there is an other feature, which conflicts with the current one.
virtual void SetEnabled(bool enabled);
bool enabled() const { return enabled_; }
virtual bool IsVisibleInTray() const;
bool IsVisibleInTray() const;
bool IsEnterpriseIconVisible() const;
const std::string& pref_name() const { return pref_name_; }
const gfx::VectorIcon& icon() const;
Expand Down Expand Up @@ -154,13 +154,6 @@ class ASH_EXPORT AccessibilityControllerImpl : public AccessibilityController,
Dialog dialog_;
};

// Switch access has custom tray visibility logic.
class SwitchAccessFeature : public Feature {
public:
using Feature::Feature;
bool IsVisibleInTray() const override;
};

AccessibilityControllerImpl();
~AccessibilityControllerImpl() override;

Expand Down Expand Up @@ -196,6 +189,9 @@ class ASH_EXPORT AccessibilityControllerImpl : public AccessibilityController,
void SetDisplayRotationAcceleratorDialogBeenAccepted();
bool HasDisplayRotationAcceleratorDialogBeenAccepted() const;

bool IsAutoclickSettingVisibleInTray();
bool IsEnterpriseIconVisibleForAutoclick();

void SetAutoclickEventType(AutoclickEventType event_type);
AutoclickEventType GetAutoclickEventType();
void SetAutoclickMenuPosition(FloatingMenuPosition position);
Expand All @@ -211,18 +207,58 @@ class ASH_EXPORT AccessibilityControllerImpl : public AccessibilityController,
// virtual keyboard position).
void UpdateAutoclickMenuBoundsIfNeeded();

bool IsCaretHighlightSettingVisibleInTray();
bool IsEnterpriseIconVisibleForCaretHighlight();

bool IsCursorHighlightSettingVisibleInTray();
bool IsEnterpriseIconVisibleForCursorHighlight();

bool IsDictationSettingVisibleInTray();
bool IsEnterpriseIconVisibleForDictation();

bool IsFocusHighlightSettingVisibleInTray();
bool IsEnterpriseIconVisibleForFocusHighlight();

bool IsFullScreenMagnifierSettingVisibleInTray();
bool IsEnterpriseIconVisibleForFullScreenMagnifier();

bool IsDockedMagnifierSettingVisibleInTray();
bool IsEnterpriseIconVisibleForDockedMagnifier();

bool IsHighContrastSettingVisibleInTray();
bool IsEnterpriseIconVisibleForHighContrast();

bool IsLargeCursorSettingVisibleInTray();
bool IsEnterpriseIconVisibleForLargeCursor();

bool IsMonoAudioSettingVisibleInTray();
bool IsEnterpriseIconVisibleForMonoAudio();

void SetSpokenFeedbackEnabled(bool enabled,
AccessibilityNotificationVisibility notify);
bool IsSpokenFeedbackSettingVisibleInTray();
bool IsEnterpriseIconVisibleForSpokenFeedback();

bool IsSelectToSpeakSettingVisibleInTray();
bool IsEnterpriseIconVisibleForSelectToSpeak();

void RequestSelectToSpeakStateChange();
SelectToSpeakState GetSelectToSpeakState() const;

bool IsStickyKeysSettingVisibleInTray();
bool IsEnterpriseIconVisibleForStickyKeys();

// Switch access may be disabled in prefs but still running when the disable
// dialog is displaying.
bool IsSwitchAccessRunning() const;
bool IsSwitchAccessSettingVisibleInTray();
bool IsEnterpriseIconVisibleForSwitchAccess();
void SetAccessibilityEventRewriter(
AccessibilityEventRewriter* accessibility_event_rewriter);

bool IsVirtualKeyboardSettingVisibleInTray();
bool IsEnterpriseIconVisibleForVirtualKeyboard();

void SetTabletModeShelfNavigationButtonsEnabled(bool enabled);
bool tablet_mode_shelf_navigation_buttons_enabled() const {
return tablet_mode_shelf_navigation_buttons_enabled_;
Expand Down Expand Up @@ -280,6 +316,20 @@ class ASH_EXPORT AccessibilityControllerImpl : public AccessibilityController,
// by a policy and false otherwise.
bool IsEnterpriseIconVisibleInTrayMenu(const std::string& path);

// Returns true if at least one of the primary settings of the accessibility
// features is going to be visible in the accessibility tray menu.
bool IsPrimarySettingsViewVisibleInTray();

// Returns true if at least one of the additional settings of the
// accessibility features is going to be visible in the accessibility tray
// menu.
bool IsAdditionalSettingsViewVisibleInTray();

// Returns true if there exist one of the additional accessibility features
// and one of the primary accessibility features which are going to visible on
// accessibility tray menu.
bool IsAdditionalSettingsSeparatorVisibleInTray();

// Starts point scanning, to select a point onscreen without using a mouse
// (as used by Switch Access).
void StartPointScanning();
Expand Down
Loading

0 comments on commit e9a9395

Please sign in to comment.