Commit e8a15c5a authored by Ahmed Mehfooz's avatar Ahmed Mehfooz Committed by Commit Bot

Improve chrome vox navigation with collapse / expand states

Expand message center / quick settings bubble when it gains
accessibilityfocus.
Allow quick settings to collapse / expand with chrome vox enabled.

Bug: 1047538
Change-Id: I50626e7116ee51cd35f99199715501c6cb504d3e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2032508Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Ahmed Mehfooz <amehfooz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#737508}
parent 3d7e63fa
...@@ -199,6 +199,10 @@ bool UnifiedMessageCenterBubble::IsMessageCenterVisible() { ...@@ -199,6 +199,10 @@ bool UnifiedMessageCenterBubble::IsMessageCenterVisible() {
return !!bubble_widget_ && message_center_view_->GetVisible(); return !!bubble_widget_ && message_center_view_->GetVisible();
} }
bool UnifiedMessageCenterBubble::IsMessageCenterCollapsed() {
return message_center_view_->collapsed();
}
TrayBackgroundView* UnifiedMessageCenterBubble::GetTray() const { TrayBackgroundView* UnifiedMessageCenterBubble::GetTray() const {
return tray_; return tray_;
} }
......
...@@ -60,6 +60,9 @@ class ASH_EXPORT UnifiedMessageCenterBubble : public TrayBubbleBase, ...@@ -60,6 +60,9 @@ class ASH_EXPORT UnifiedMessageCenterBubble : public TrayBubbleBase,
// Returns true if notifications are shown. // Returns true if notifications are shown.
bool IsMessageCenterVisible(); bool IsMessageCenterVisible();
// Returns true if only StackedNotificationBar is visible.
bool IsMessageCenterCollapsed();
// TrayBubbleBase: // TrayBubbleBase:
TrayBackgroundView* GetTray() const override; TrayBackgroundView* GetTray() const override;
TrayBubbleView* GetBubbleView() const override; TrayBubbleView* GetBubbleView() const override;
......
...@@ -206,14 +206,6 @@ TopShortcutsView::TopShortcutsView(UnifiedSystemTrayController* controller) ...@@ -206,14 +206,6 @@ TopShortcutsView::TopShortcutsView(UnifiedSystemTrayController* controller)
collapse_button_ = new CollapseButton(this); collapse_button_ = new CollapseButton(this);
AddChildView(collapse_button_); AddChildView(collapse_button_);
OnAccessibilityStatusChanged();
shell->accessibility_controller()->AddObserver(this);
}
TopShortcutsView::~TopShortcutsView() {
Shell::Get()->accessibility_controller()->RemoveObserver(this);
} }
void TopShortcutsView::SetExpandedAmount(double expanded_amount) { void TopShortcutsView::SetExpandedAmount(double expanded_amount) {
...@@ -236,11 +228,6 @@ void TopShortcutsView::ButtonPressed(views::Button* sender, ...@@ -236,11 +228,6 @@ void TopShortcutsView::ButtonPressed(views::Button* sender,
controller_->ToggleExpanded(); controller_->ToggleExpanded();
} }
void TopShortcutsView::OnAccessibilityStatusChanged() {
collapse_button_->SetEnabled(
!Shell::Get()->accessibility_controller()->spoken_feedback_enabled());
}
const char* TopShortcutsView::GetClassName() const { const char* TopShortcutsView::GetClassName() const {
return "TopShortcutsView"; return "TopShortcutsView";
} }
......
...@@ -44,11 +44,9 @@ class TopShortcutButtonContainer : public views::View { ...@@ -44,11 +44,9 @@ class TopShortcutButtonContainer : public views::View {
// Top shortcuts view shown on the top of UnifiedSystemTrayView. // Top shortcuts view shown on the top of UnifiedSystemTrayView.
class ASH_EXPORT TopShortcutsView : public views::View, class ASH_EXPORT TopShortcutsView : public views::View,
public views::ButtonListener, public views::ButtonListener {
public AccessibilityObserver {
public: public:
explicit TopShortcutsView(UnifiedSystemTrayController* controller); explicit TopShortcutsView(UnifiedSystemTrayController* controller);
~TopShortcutsView() override;
// Change the expanded state. CollapseButton icon will rotate. // Change the expanded state. CollapseButton icon will rotate.
void SetExpandedAmount(double expanded_amount); void SetExpandedAmount(double expanded_amount);
...@@ -56,9 +54,6 @@ class ASH_EXPORT TopShortcutsView : public views::View, ...@@ -56,9 +54,6 @@ class ASH_EXPORT TopShortcutsView : public views::View,
// views::ButtonListener: // views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override; void ButtonPressed(views::Button* sender, const ui::Event& event) override;
// AccessibilityObserver:
void OnAccessibilityStatusChanged() override;
// views::View // views::View
const char* GetClassName() const override; const char* GetClassName() const override;
......
...@@ -259,11 +259,14 @@ bool UnifiedSystemTray::FocusMessageCenter(bool reverse) { ...@@ -259,11 +259,14 @@ bool UnifiedSystemTray::FocusMessageCenter(bool reverse) {
Shell::Get()->focus_cycler()->FocusWidget(message_center_widget); Shell::Get()->focus_cycler()->FocusWidget(message_center_widget);
// Do not focus an individual element in quick settings if chrome vox is // Focus an individual element in the message center if chrome vox is
// enabled // disabled. Otherwise, ensure the message center is expanded.
if (!ShouldEnableExtraKeyboardAccessibility()) if (!ShouldEnableExtraKeyboardAccessibility()) {
message_center_bubble_->FocusEntered(reverse); message_center_bubble_->FocusEntered(reverse);
} else if (message_center_bubble_->IsMessageCenterCollapsed()) {
ExpandMessageCenter();
EnsureQuickSettingsCollapsed(true /*animate*/);
}
return true; return true;
} }
...@@ -274,10 +277,12 @@ bool UnifiedSystemTray::FocusQuickSettings(bool reverse) { ...@@ -274,10 +277,12 @@ bool UnifiedSystemTray::FocusQuickSettings(bool reverse) {
views::Widget* quick_settings_widget = bubble_->GetBubbleWidget(); views::Widget* quick_settings_widget = bubble_->GetBubbleWidget();
Shell::Get()->focus_cycler()->FocusWidget(quick_settings_widget); Shell::Get()->focus_cycler()->FocusWidget(quick_settings_widget);
// Do not focus an individual element in quick settings if chrome vox is // Focus an individual element in quick settings if chrome vox is
// enabled // disabled. Otherwise, ensure quick settings is expanded.
if (!ShouldEnableExtraKeyboardAccessibility()) if (!ShouldEnableExtraKeyboardAccessibility())
bubble_->FocusEntered(reverse); bubble_->FocusEntered(reverse);
else
EnsureBubbleExpanded();
return true; return true;
} }
......
...@@ -350,6 +350,9 @@ void UnifiedSystemTrayController::EnsureExpanded() { ...@@ -350,6 +350,9 @@ void UnifiedSystemTrayController::EnsureExpanded() {
unified_view_->ResetDetailedView(); unified_view_->ResetDetailedView();
} }
animation_->Show(); animation_->Show();
if (IsMessageCenterCollapseRequired())
bubble_->CollapseMessageCenter();
} }
void UnifiedSystemTrayController::AnimationEnded( void UnifiedSystemTrayController::AnimationEnded(
......
...@@ -141,6 +141,8 @@ class AccessibilityFocusHelperView : public views::View { ...@@ -141,6 +141,8 @@ class AccessibilityFocusHelperView : public views::View {
: controller_(controller) {} : controller_(controller) {}
bool HandleAccessibleAction(const ui::AXActionData& action_data) override { bool HandleAccessibleAction(const ui::AXActionData& action_data) override {
GetFocusManager()->ClearFocus();
GetFocusManager()->SetStoredFocusView(nullptr);
controller_->FocusOut(false); controller_->FocusOut(false);
return true; return true;
} }
......
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