Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Unified Diff: ash/system/tray_accessibility.cc

Issue 11519036: A11y: Add a browser test of TrayAccessibility. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test failure on win_rel Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/system/tray_accessibility.h ('k') | chrome/browser/chromeos/system/tray_accessibility_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/tray_accessibility.cc
diff --git a/ash/system/tray_accessibility.cc b/ash/system/tray_accessibility.cc
index 9b161f562f6c810438b785af0a45d5243a478fc6..9b1d2611bf3fac5d40bf291984adcf9d3b8792da 100644
--- a/ash/system/tray_accessibility.cc
+++ b/ash/system/tray_accessibility.cc
@@ -77,137 +77,6 @@ class DefaultAccessibilityView : public TrayItemMore {
DISALLOW_COPY_AND_ASSIGN(DefaultAccessibilityView);
};
-class AccessibilityDetailedView : public TrayDetailsView,
- public ViewClickListener,
- public views::ButtonListener,
- public ShellObserver {
- public:
- explicit AccessibilityDetailedView(SystemTrayItem* owner,
- user::LoginStatus login) :
- TrayDetailsView(owner),
- spoken_feedback_view_(NULL),
- high_contrast_view_(NULL),
- screen_magnifier_view_(NULL),
- help_view_(NULL),
- login_(login) {
-
- Reset();
-
- AppendAccessibilityList();
- AppendHelpEntries();
- CreateSpecialRow(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TITLE, this);
-
- Layout();
- }
-
- virtual ~AccessibilityDetailedView() {
- }
-
- private:
- // Add the accessibility feature list.
- void AppendAccessibilityList() {
- CreateScrollableList();
- ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
-
- ShellDelegate* shell_delegate = Shell::GetInstance()->delegate();
- bool spoken_feedback_enabled = shell_delegate->IsSpokenFeedbackEnabled();
- spoken_feedback_view_ = AddScrollListItem(
- bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SPOKEN_FEEDBACK),
- spoken_feedback_enabled ? gfx::Font::BOLD : gfx::Font::NORMAL,
- spoken_feedback_enabled);
- bool high_contrast_mode_enabled = shell_delegate->IsHighContrastEnabled();
- high_contrast_view_ = AddScrollListItem(
- bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGH_CONTRAST_MODE),
- high_contrast_mode_enabled ? gfx::Font::BOLD : gfx::Font::NORMAL,
- high_contrast_mode_enabled);
- bool screen_magnifier_enabled =
- shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL;
- screen_magnifier_view_ = AddScrollListItem(
- bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SCREEN_MAGNIFIER),
- screen_magnifier_enabled ? gfx::Font::BOLD : gfx::Font::NORMAL,
- screen_magnifier_enabled);
- }
-
- // Add help entries.
- void AppendHelpEntries() {
- // Currently the help page requires a browser window.
- // TODO(yoshiki): show this even on login/lock screen. crbug.com/158286
- if (login_ == user::LOGGED_IN_NONE ||
- login_ == user::LOGGED_IN_LOCKED)
- return;
-
- views::View* bottom_row = new View();
- views::BoxLayout* layout = new
- views::BoxLayout(views::BoxLayout::kHorizontal,
- kTrayMenuBottomRowPadding,
- kTrayMenuBottomRowPadding,
- kTrayMenuBottomRowPaddingBetweenItems);
- layout->set_spread_blank_space(true);
- bottom_row->SetLayoutManager(layout);
-
- ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
-
- TrayPopupLabelButton* help = new TrayPopupLabelButton(
- this,
- bundle.GetLocalizedString(
- IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LEARN_MORE));
- bottom_row->AddChildView(help);
- help_view_ = help;
-
- // TODO(yoshiki): Add "Customize accessibility" button when the customize is
- // available. crbug.com/158281
-
- AddChildView(bottom_row);
- }
-
- HoverHighlightView* AddScrollListItem(const string16& text,
- gfx::Font::FontStyle style,
- bool checked) {
- HoverHighlightView* container = new HoverHighlightView(this);
- container->set_fixed_height(kTrayPopupItemHeight);
- container->AddCheckableLabel(text, style, checked);
- scroll_content()->AddChildView(container);
- return container;
- }
-
- // Overridden from ViewClickListener.
- virtual void ClickedOn(views::View* sender) OVERRIDE {
- ShellDelegate* shell_delegate = Shell::GetInstance()->delegate();
- if (sender == footer()->content()) {
- owner()->system_tray()->ShowDefaultView(BUBBLE_USE_EXISTING);
- } else if (sender == spoken_feedback_view_) {
- shell_delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE);
- } else if (sender == high_contrast_view_) {
- shell_delegate->ToggleHighContrast();
- } else if (sender == screen_magnifier_view_) {
- bool screen_magnifier_enabled =
- shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL;
- shell_delegate->SetMagnifier(
- screen_magnifier_enabled ? ash::MAGNIFIER_OFF : ash::MAGNIFIER_FULL);
- }
- }
-
- // Overridden from ButtonListener.
- virtual void ButtonPressed(views::Button* sender,
- const ui::Event& event) OVERRIDE {
- SystemTrayDelegate* tray_delegate =
- Shell::GetInstance()->system_tray_delegate();
- if (sender == help_view_)
- tray_delegate->ShowAccessibilityHelp();
- }
-
- views::View* spoken_feedback_view_;
- views::View* high_contrast_view_;
- views::View* screen_magnifier_view_;;
- views::View* help_view_;
- user::LoginStatus login_;
-
- DISALLOW_COPY_AND_ASSIGN(AccessibilityDetailedView);
-};
-
class AccessibilityPopupView : public TrayNotificationView {
public:
AccessibilityPopupView(SystemTrayItem* owner)
@@ -228,14 +97,134 @@ class AccessibilityPopupView : public TrayNotificationView {
DISALLOW_COPY_AND_ASSIGN(AccessibilityPopupView);
};
+////////////////////////////////////////////////////////////////////////////////
+// ash::internal::tray::AccessibilityDetailedView
+
+AccessibilityDetailedView::AccessibilityDetailedView(
+ SystemTrayItem* owner, user::LoginStatus login) :
+ TrayDetailsView(owner),
+ spoken_feedback_view_(NULL),
+ high_contrast_view_(NULL),
+ screen_magnifier_view_(NULL),
+ help_view_(NULL),
+ spoken_feedback_enabled_(false),
+ high_contrast_enabled_(false),
+ screen_magnifier_enabled_(false),
+ login_(login) {
+
+ Reset();
+
+ AppendAccessibilityList();
+ AppendHelpEntries();
+ CreateSpecialRow(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TITLE, this);
+
+ Layout();
+}
+
+void AccessibilityDetailedView::AppendAccessibilityList() {
+ CreateScrollableList();
+ ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
+
+ ShellDelegate* shell_delegate = Shell::GetInstance()->delegate();
+ spoken_feedback_enabled_ = shell_delegate->IsSpokenFeedbackEnabled();
+ spoken_feedback_view_ = AddScrollListItem(
+ bundle.GetLocalizedString(
+ IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SPOKEN_FEEDBACK),
+ spoken_feedback_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL,
+ spoken_feedback_enabled_);
+ high_contrast_enabled_ = shell_delegate->IsHighContrastEnabled();
+ high_contrast_view_ = AddScrollListItem(
+ bundle.GetLocalizedString(
+ IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGH_CONTRAST_MODE),
+ high_contrast_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL,
+ high_contrast_enabled_);
+ screen_magnifier_enabled_ =
+ shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL;
+ screen_magnifier_view_ = AddScrollListItem(
+ bundle.GetLocalizedString(
+ IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SCREEN_MAGNIFIER),
+ screen_magnifier_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL,
+ screen_magnifier_enabled_);
+}
+
+void AccessibilityDetailedView::AppendHelpEntries() {
+ // Currently the help page requires a browser window.
+ // TODO(yoshiki): show this even on login/lock screen. crbug.com/158286
+ if (login_ == user::LOGGED_IN_NONE ||
+ login_ == user::LOGGED_IN_LOCKED)
+ return;
+
+ views::View* bottom_row = new View();
+ views::BoxLayout* layout = new
+ views::BoxLayout(views::BoxLayout::kHorizontal,
+ kTrayMenuBottomRowPadding,
+ kTrayMenuBottomRowPadding,
+ kTrayMenuBottomRowPaddingBetweenItems);
+ layout->set_spread_blank_space(true);
+ bottom_row->SetLayoutManager(layout);
+
+ ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
+
+ TrayPopupLabelButton* help = new TrayPopupLabelButton(
+ this,
+ bundle.GetLocalizedString(
+ IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LEARN_MORE));
+ bottom_row->AddChildView(help);
+ help_view_ = help;
+
+ // TODO(yoshiki): Add "Customize accessibility" button when the customize is
+ // available. crbug.com/158281
+
+ AddChildView(bottom_row);
+}
+
+HoverHighlightView* AccessibilityDetailedView::AddScrollListItem(
+ const string16& text,
+ gfx::Font::FontStyle style,
+ bool checked) {
+ HoverHighlightView* container = new HoverHighlightView(this);
+ container->set_fixed_height(kTrayPopupItemHeight);
+ container->AddCheckableLabel(text, style, checked);
+ scroll_content()->AddChildView(container);
+ return container;
+}
+
+void AccessibilityDetailedView::ClickedOn(views::View* sender) {
+ ShellDelegate* shell_delegate = Shell::GetInstance()->delegate();
+ if (sender == footer()->content()) {
+ owner()->system_tray()->ShowDefaultView(BUBBLE_USE_EXISTING);
+ } else if (sender == spoken_feedback_view_) {
+ shell_delegate->ToggleSpokenFeedback(ash::A11Y_NOTIFICATION_NONE);
+ } else if (sender == high_contrast_view_) {
+ shell_delegate->ToggleHighContrast();
+ } else if (sender == screen_magnifier_view_) {
+ bool screen_magnifier_enabled =
+ shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL;
+ shell_delegate->SetMagnifier(
+ screen_magnifier_enabled ? ash::MAGNIFIER_OFF : ash::MAGNIFIER_FULL);
+ }
+}
+
+void AccessibilityDetailedView::ButtonPressed(views::Button* sender,
+ const ui::Event& event) {
+ SystemTrayDelegate* tray_delegate =
+ Shell::GetInstance()->system_tray_delegate();
+ if (sender == help_view_)
+ tray_delegate->ShowAccessibilityHelp();
+}
+
} // namespace tray
+////////////////////////////////////////////////////////////////////////////////
+// ash::internal::TrayAccessibility
TrayAccessibility::TrayAccessibility(SystemTray* system_tray)
: TrayImageItem(system_tray, IDR_AURA_UBER_TRAY_ACCESSIBILITY),
default_(NULL),
- detailed_(NULL),
+ detailed_popup_(NULL),
+ detailed_menu_(NULL),
request_popup_view_(false),
+ tray_icon_visible_(false),
login_(GetCurrentLoginStatus()),
previous_accessibility_state_(GetAccessibilityState()) {
DCHECK(Shell::GetInstance()->delegate());
@@ -248,6 +237,16 @@ TrayAccessibility::~TrayAccessibility() {
RemoveAccessibilityObserver(this);
}
+void TrayAccessibility::SetTrayIconVisible(bool visible) {
+ if (tray_view())
+ tray_view()->SetVisible(visible);
+ tray_icon_visible_ = visible;
+}
+
+tray::AccessibilityDetailedView* TrayAccessibility::CreateDetailedMenu() {
+ return new tray::AccessibilityDetailedView(this, login_);
+}
+
bool TrayAccessibility::GetInitialVisibility() {
// Shows accessibility icon if any accessibility feature is enabled.
// Otherwise, doen't show it.
@@ -277,18 +276,19 @@ views::View* TrayAccessibility::CreateDefaultView(user::LoginStatus status) {
}
views::View* TrayAccessibility::CreateDetailedView(user::LoginStatus status) {
- CHECK(detailed_ == NULL);
+ CHECK(detailed_popup_ == NULL);
+ CHECK(detailed_menu_ == NULL);
login_ = status;
if (request_popup_view_) {
- detailed_ = new tray::AccessibilityPopupView(this);
+ detailed_popup_ = new tray::AccessibilityPopupView(this);
request_popup_view_ = false;
+ return detailed_popup_;
} else {
- detailed_ = new tray::AccessibilityDetailedView(this, status);
+ detailed_menu_ = CreateDetailedMenu();
+ return detailed_menu_;
}
-
- return detailed_;
}
void TrayAccessibility::DestroyDefaultView() {
@@ -296,20 +296,18 @@ void TrayAccessibility::DestroyDefaultView() {
}
void TrayAccessibility::DestroyDetailedView() {
- detailed_ = NULL;
+ detailed_popup_ = NULL;
+ detailed_menu_ = NULL;
}
void TrayAccessibility::UpdateAfterLoginStatusChange(user::LoginStatus status) {
login_ = status;
-
- if (tray_view())
- tray_view()->SetVisible(GetInitialVisibility());
+ SetTrayIconVisible(GetInitialVisibility());
}
void TrayAccessibility::OnAccessibilityModeChanged(
AccessibilityNotificationVisibility notify) {
- if (tray_view())
- tray_view()->SetVisible(GetInitialVisibility());
+ SetTrayIconVisible(GetInitialVisibility());
uint32 accessibility_state = GetAccessibilityState();
if ((notify == ash::A11Y_NOTIFICATION_SHOW)&&
@@ -318,8 +316,11 @@ void TrayAccessibility::OnAccessibilityModeChanged(
// Shows popup if |notify| is true and the spoken feedback is being enabled.
request_popup_view_ = true;
PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false);
- } else if (detailed_) {
- detailed_->GetWidget()->Close();
+ } else {
+ if (detailed_popup_)
+ detailed_popup_->GetWidget()->Close();
+ if (detailed_menu_)
+ detailed_menu_->GetWidget()->Close();
}
previous_accessibility_state_ = accessibility_state;
« no previous file with comments | « ash/system/tray_accessibility.h ('k') | chrome/browser/chromeos/system/tray_accessibility_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698