1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_ACCESSIBILITY_HELPER_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_ACCESSIBILITY_HELPER_H_ 7#pragma once 8 9#include "base/memory/scoped_ptr.h" 10#include "base/memory/singleton.h" 11#include "chrome/browser/chromeos/login/wizard_accessibility_handler.h" 12#include "content/common/notification_registrar.h" 13#include "ui/base/keycodes/keyboard_codes.h" 14 15class Profile; 16namespace views { 17class Accelerator; 18class View; 19} 20 21namespace chromeos { 22 23// Class that provides convenience methods to enable accessibility for a 24// specified View. 25class WizardAccessibilityHelper { 26 public: 27 // Get Singleton instance of WizardAccessibilityHelper. 28 static WizardAccessibilityHelper* GetInstance(); 29 30 // Get accelerator for enabling accessibility. 31 static views::Accelerator GetAccelerator(); 32 33 // Speak the given text if the accessibility pref is already set. |queue| 34 // specifies whether this utterance will be queued or spoken immediately. 35 // |interruptible| specified whether this utterance can be flushed by a 36 // subsequent utterance. 37 // TODO (chaitanyag): Change API to use string16 instead of char*. 38 void MaybeSpeak(const char* str, bool queue, bool interruptible); 39 40 // Unregisters all accessibility notifications 41 void UnregisterNotifications(); 42 43 // Toggles accessibility support. 44 void ToggleAccessibility(); 45 46 // Initialize accessibility 47 void Init(); 48 49 private: 50 friend struct DefaultSingletonTraits<WizardAccessibilityHelper>; 51 52 WizardAccessibilityHelper(); 53 54 virtual ~WizardAccessibilityHelper() {} 55 56 void RegisterNotifications(); 57 58 bool IsAccessibilityEnabled(); 59 60 void SetAccessibilityEnabled(bool); 61 62 static scoped_ptr<views::Accelerator> accelerator_; 63 64 scoped_ptr<WizardAccessibilityHandler> accessibility_handler_; 65 66 Profile* profile_; 67 68 // Used for tracking registrations to accessibility notifications. 69 NotificationRegistrar registrar_; 70 71 bool registered_notifications_; 72 73 DISALLOW_COPY_AND_ASSIGN(WizardAccessibilityHelper); 74}; 75 76} // namespace chromeos 77 78#endif // CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_ACCESSIBILITY_HELPER_H_ 79