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

Unified Diff: chrome/browser/chromeos/accessibility/accessibility_manager.h

Issue 14200048: Introduce AcccessibilityManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months 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/accessibility/accessibility_manager.h
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.h b/chrome/browser/chromeos/accessibility/accessibility_manager.h
new file mode 100644
index 0000000000000000000000000000000000000000..6f3680d8c73ad0bb8faab4d538d74d03284ea213
--- /dev/null
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.h
@@ -0,0 +1,116 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_
+#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_
+
+#include "ash/shell_delegate.h"
+#include "base/prefs/pref_change_registrar.h"
+#include "chrome/browser/chromeos/accessibility/accessibility_util.h"
+#include "content/public/browser/notification_observer.h"
+#include "content/public/browser/notification_registrar.h"
+
+class Profile;
+
+namespace content {
+class WebUI;
+}
+
+namespace chromeos {
+
+struct AccessibilityStatusEventDetails {
+ AccessibilityStatusEventDetails(
+ bool enabled, ash::AccessibilityNotificationVisibility notify)
Zachary Kuznia 2013/04/24 04:21:03 line break after comma.
yoshiki 2013/04/24 06:00:52 Done.
+ : enabled(enabled),
+ magnifier_type(ash::kDefaultMagnifierType),
+ notify(notify) {}
Zachary Kuznia 2013/04/24 04:21:03 Don't inline constructors in header files.
yoshiki 2013/04/24 06:00:52 Done.
+
+ AccessibilityStatusEventDetails(
+ bool enabled,
+ ash::MagnifierType magnifier_type,
+ ash::AccessibilityNotificationVisibility notify)
+ : enabled(enabled),
+ magnifier_type(magnifier_type),
+ notify(notify) {}
+
+ bool enabled;
+ ash::MagnifierType magnifier_type;
+ ash::AccessibilityNotificationVisibility notify;
+};
+
+// AccessibilityManager changes the statuses of accessibility features
+// watching profile notifications and pref-changes.
+// TODO(yoshiki): merge MagnificationManager with AccessibilityManager.
+class AccessibilityManager : public content::NotificationObserver {
+ public:
+ // Creates an instance of AccessibilityManager. This should be called once,
+ // Returns the existing instance. If there is no instance, creates one.
+ // because only one instance should exist at the same time.
+ static void Initialize();
Zachary Kuznia 2013/04/24 04:21:03 What pattern are these statics based on? Why not
yoshiki 2013/04/24 06:00:52 Before, derat@ said that Singleton causes more tro
+ // Deletes the existing instance of AccessibilityManager.
+ static void Shutdown();
+ // Returns the existing instance. If there is no instance, returns NULL.
+ static AccessibilityManager* Get();
+
+ // Enables or disables spoken feedback. Enabling spoken feedback installs the
+ // ChromeVox component extension. If this is being called in a login/oobe
+ // login screen, pass the WebUI object in login_web_ui so that ChromeVox
+ // can be injected directly into that screen, otherwise it should be NULL.
+ void EnableSpokenFeedback(bool enabled,
+ content::WebUI* login_web_ui,
+ ash::AccessibilityNotificationVisibility notify);
+
+ // Returns true if spoken feedback is enabled, or false if not.
+ bool IsSpokenFeedbackEnabled();
+
+ // Toggles whether Chrome OS spoken feedback is on or off. See docs for
+ // EnableSpokenFeedback, above.
+ void ToggleSpokenFeedback(content::WebUI* login_web_ui,
+ ash::AccessibilityNotificationVisibility notify);
+
+ // Speaks the specified string.
+ void Speak(const std::string& text);
+
+ // Speaks the given text if the accessibility pref is already set.
+ void MaybeSpeak(const std::string& utterance);
+
+ // Enables or disables the high contrast mode for Chrome.
+ void EnableHighContrast(bool enabled);
+
+ // Returns true if High Contrast is enabled, or false if not.
+ bool IsHighContrastEnabled();
+
+ // For test
+ void SetProfileForTest(Profile* profile);
+
+ protected:
+ AccessibilityManager();
+ virtual ~AccessibilityManager();
+
+ private:
+ void UpdateSpokenFeedbackStatus();
+ void UpdateHighContrastStatus();
+
+ void SetProfile(Profile* profile);
+
+ void UpdateChromeOSAccessibilityHistograms();
+
+ // content::NotificationObserver implimentation:
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE;
+
+ Profile* profile_;
+ content::NotificationRegistrar registrar_;
Zachary Kuznia 2013/04/24 04:21:03 you have two registrars, so you should give this a
yoshiki 2013/04/24 06:00:52 Done.
+ scoped_ptr<PrefChangeRegistrar> pref_change_registrar_;
+
+ bool spoken_feedback_enabled_;
+ bool high_contrast_enabled_;
+
+ DISALLOW_COPY_AND_ASSIGN(AccessibilityManager);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_ACCESSIBILITY_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698