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

Unified Diff: chrome/browser/chromeos/login/wizard_accessibility_helper.cc

Issue 5839003: Fix to enable toggling accessibility using Ctrl+Alt+Z (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 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
Index: chrome/browser/chromeos/login/wizard_accessibility_helper.cc
===================================================================
--- chrome/browser/chromeos/login/wizard_accessibility_helper.cc (revision 69471)
+++ chrome/browser/chromeos/login/wizard_accessibility_helper.cc (working copy)
@@ -4,6 +4,7 @@
#include "chrome/browser/chromeos/login/wizard_accessibility_helper.h"
+#include "app/l10n_util.h"
#include "base/logging.h"
#include "base/stl_util-inl.h"
#include "chrome/browser/browser_process.h"
@@ -14,6 +15,7 @@
#include "chrome/common/notification_registrar.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/pref_names.h"
+#include "grit/generated_resources.h"
#include "views/accelerator.h"
#include "views/view.h"
@@ -23,13 +25,9 @@
// static
views::Accelerator WizardAccessibilityHelper::GetAccelerator() {
- // Use an accelerator that would never match any hotkey to temporarily
- // disable the accessibility hotkey per http://crosbug.com/9195
- // TODO(xiyuan): Change back to real hotkey as the following
- // new views::Accelerator(app::VKEY_Z, false, true, true)
if (!WizardAccessibilityHelper::accelerator_.get())
WizardAccessibilityHelper::accelerator_.reset(
- new views::Accelerator(app::VKEY_UNKNOWN, 0xdeadbeef));
+ new views::Accelerator(app::VKEY_Z, false, true, true));
return *(WizardAccessibilityHelper::accelerator_.get());
}
@@ -70,12 +68,16 @@
registered_notifications_ = false;
}
+bool WizardAccessibilityHelper::IsAccessibilityEnabled() {
+ return g_browser_process &&
+ g_browser_process->local_state()->GetBoolean(
+ prefs::kAccessibilityEnabled);
+}
+
void WizardAccessibilityHelper::MaybeEnableAccessibility(
views::View* view_tree) {
- if (g_browser_process &&
- g_browser_process->local_state()->GetBoolean(
- prefs::kAccessibilityEnabled)) {
- EnableAccessibility(view_tree);
+ if (IsAccessibilityEnabled()) {
+ EnableAccessibilityForView(view_tree);
} else {
AddViewToBuffer(view_tree);
}
@@ -83,39 +85,54 @@
void WizardAccessibilityHelper::MaybeSpeak(const char* str, bool queue,
bool interruptible) {
- if (g_browser_process &&
- g_browser_process->local_state()->GetBoolean(
- prefs::kAccessibilityEnabled)) {
+ if (IsAccessibilityEnabled()) {
accessibility_handler_->Speak(str, queue, interruptible);
}
}
-void WizardAccessibilityHelper::EnableAccessibility(views::View* view_tree) {
+void WizardAccessibilityHelper::EnableAccessibilityForView(
+ views::View* view_tree) {
VLOG(1) << "Enabling accessibility.";
if (!registered_notifications_)
RegisterNotifications();
+ SetAccessibilityEnabled(true);
+ if (view_tree) {
+ AddViewToBuffer(view_tree);
+ // If accessibility pref is set, enable accessibility for all views in
+ // the buffer for which access is not yet enabled.
+ for (std::map<views::View*, bool>::iterator iter =
+ views_buffer_.begin();
+ iter != views_buffer_.end(); ++iter) {
+ if (!(*iter).second) {
+ AccessibleViewHelper *helper = new AccessibleViewHelper((*iter).first,
+ profile_);
+ accessible_view_helpers_.push_back(helper);
+ (*iter).second = true;
+ }
+ }
+ }
+}
+
+void WizardAccessibilityHelper::ToggleAccessibility(views::View* view_tree) {
+ if (!IsAccessibilityEnabled()) {
+ EnableAccessibilityForView(view_tree);
+ } else {
+ SetAccessibilityEnabled(false);
+ }
+}
+
+void WizardAccessibilityHelper::SetAccessibilityEnabled(bool enabled) {
if (g_browser_process) {
PrefService* prefService = g_browser_process->local_state();
- if (!prefService->GetBoolean(prefs::kAccessibilityEnabled)) {
- prefService->SetBoolean(prefs::kAccessibilityEnabled, true);
- prefService->ScheduleSavePersistentPrefs();
- }
+ prefService->SetBoolean(prefs::kAccessibilityEnabled, enabled);
+ prefService->ScheduleSavePersistentPrefs();
}
ExtensionAccessibilityEventRouter::GetInstance()->
- SetAccessibilityEnabled(true);
- AddViewToBuffer(view_tree);
- // If accessibility pref is set, enable accessibility for all views in
- // the buffer for which access is not yet enabled.
- for (std::map<views::View*, bool>::iterator iter =
- views_buffer_.begin();
- iter != views_buffer_.end(); ++iter) {
- if (!(*iter).second) {
- AccessibleViewHelper *helper = new AccessibleViewHelper((*iter).first,
- profile_);
- accessible_view_helpers_.push_back(helper);
- (*iter).second = true;
- }
- }
+ SetAccessibilityEnabled(enabled);
+ accessibility_handler_->Speak(enabled ?
+ l10n_util::GetStringUTF8(IDS_CHROMEOS_ACC_ACCESS_ENABLED).c_str() :
+ l10n_util::GetStringUTF8(IDS_CHROMEOS_ACC_ACCESS_DISABLED).c_str(),
+ false, true);
}
void WizardAccessibilityHelper::AddViewToBuffer(views::View* view_tree) {
« no previous file with comments | « chrome/browser/chromeos/login/wizard_accessibility_helper.h ('k') | chrome/browser/chromeos/login/wizard_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698