// Copyright (c) 2011 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_LOGIN_WIZARD_ACCESSIBILITY_HELPER_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_ACCESSIBILITY_HELPER_H_
#pragma once
#include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h"
#include "chrome/browser/chromeos/login/wizard_accessibility_handler.h"
#include "content/common/notification_registrar.h"
#include "ui/base/keycodes/keyboard_codes.h"
class Profile;
namespace views {
class Accelerator;
class View;
}
namespace chromeos {
// Class that provides convenience methods to enable accessibility for a
// specified View.
class WizardAccessibilityHelper {
public:
// Get Singleton instance of WizardAccessibilityHelper.
static WizardAccessibilityHelper* GetInstance();
// Get accelerator for enabling accessibility.
static views::Accelerator GetAccelerator();
// Speak the given text if the accessibility pref is already set. |queue|
// specifies whether this utterance will be queued or spoken immediately.
// |interruptible| specified whether this utterance can be flushed by a
// subsequent utterance.
// TODO (chaitanyag): Change API to use string16 instead of char*.
void MaybeSpeak(const char* str, bool queue, bool interruptible);
// Unregisters all accessibility notifications
void UnregisterNotifications();
// Toggles accessibility support.
void ToggleAccessibility();
// Initialize accessibility
void Init();
private:
friend struct DefaultSingletonTraits<WizardAccessibilityHelper>;
WizardAccessibilityHelper();
virtual ~WizardAccessibilityHelper() {}
void RegisterNotifications();
bool IsAccessibilityEnabled();
void SetAccessibilityEnabled(bool);
static scoped_ptr<views::Accelerator> accelerator_;
scoped_ptr<WizardAccessibilityHandler> accessibility_handler_;
Profile* profile_;
// Used for tracking registrations to accessibility notifications.
NotificationRegistrar registrar_;
bool registered_notifications_;
DISALLOW_COPY_AND_ASSIGN(WizardAccessibilityHelper);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_ACCESSIBILITY_HELPER_H_