// Copyright (c) 2010 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_ACCESSIBILITY_EVENTS_H_ #define CHROME_BROWSER_ACCESSIBILITY_EVENTS_H_ #include #include "base/values.h" class AccessibilityControlInfo; class NotificationType; class Profile; // Use the NotificationService to post the given accessibility // notification type with AccessibilityControlInfo details to any // listeners. Will not send if the profile's pause level is nonzero // (using profile->PauseAccessibilityEvents). void SendAccessibilityNotification( NotificationType type, AccessibilityControlInfo* info); // Abstract parent class for accessibility information about a control // passed to event listeners. class AccessibilityControlInfo { public: virtual ~AccessibilityControlInfo() { } // Serialize this class as a DictionaryValue that can be converted to // a JavaScript object. virtual void SerializeToDict(DictionaryValue *dict) const; Profile* profile() const { return profile_; } const std::string& name() const { return name_; } protected: // The constructor can only be called by subclasses. AccessibilityControlInfo(Profile* profile, std::string control_name) : profile_(profile), name_(control_name) { } // The profile this control belongs to. Profile* profile_; // The name of the control, like "OK" or "Password". std::string name_; }; // Accessibility information about a window passed to onWindowOpened // and onWindowClosed event listeners. class AccessibilityWindowInfo : public AccessibilityControlInfo { public: AccessibilityWindowInfo(Profile* profile, std::string window_name) : AccessibilityControlInfo(profile, window_name) { } virtual void SerializeToDict(DictionaryValue *dict) const; }; // Accessibility information about a push button passed to onControlFocused // and onControlAction event listeners. class AccessibilityButtonInfo : public AccessibilityControlInfo { public: AccessibilityButtonInfo(Profile* profile, std::string button_name) : AccessibilityControlInfo(profile, button_name) { } virtual void SerializeToDict(DictionaryValue *dict) const; }; // Accessibility information about a hyperlink passed to onControlFocused // and onControlAction event listeners. class AccessibilityLinkInfo : public AccessibilityControlInfo { public: AccessibilityLinkInfo(Profile* profile, std::string link_name) : AccessibilityControlInfo(profile, link_name) { } virtual void SerializeToDict(DictionaryValue *dict) const; }; // Accessibility information about a radio button passed to onControlFocused // and onControlAction event listeners. class AccessibilityRadioButtonInfo : public AccessibilityControlInfo { public: AccessibilityRadioButtonInfo(Profile* profile, std::string name, bool checked, int item_index, int item_count) : AccessibilityControlInfo(profile, name), checked_(checked), item_index_(item_index), item_count_(item_count) { } virtual void SerializeToDict(DictionaryValue *dict) const; void SetChecked(bool checked) { checked_ = checked; } private: bool checked_; // The 0-based index of this radio button and number of buttons in the group. int item_index_; int item_count_; }; // Accessibility information about a checkbox passed to onControlFocused // and onControlAction event listeners. class AccessibilityCheckboxInfo : public AccessibilityControlInfo { public: AccessibilityCheckboxInfo(Profile* profile, std::string name, bool checked) : AccessibilityControlInfo(profile, name), checked_(checked) { } virtual void SerializeToDict(DictionaryValue *dict) const; void SetChecked(bool checked) { checked_ = checked; } private: bool checked_; }; // Accessibility information about a tab passed to onControlFocused // and onControlAction event listeners. class AccessibilityTabInfo : public AccessibilityControlInfo { public: AccessibilityTabInfo(Profile* profile, std::string tab_name, int tab_index, int tab_count) : AccessibilityControlInfo(profile, tab_name), tab_index_(tab_index), tab_count_(tab_count) { } virtual void SerializeToDict(DictionaryValue *dict) const; void SetTab(int tab_index, std::string tab_name) { tab_index_ = tab_index; name_ = tab_name; } private: // The 0-based index of this tab and number of tabs in the group. int tab_index_; int tab_count_; }; // Accessibility information about a combo box passed to onControlFocused // and onControlAction event listeners. class AccessibilityComboBoxInfo : public AccessibilityControlInfo { public: AccessibilityComboBoxInfo(Profile* profile, std::string name, std::string value, int item_index, int item_count) : AccessibilityControlInfo(profile, name), value_(value), item_index_(item_index), item_count_(item_count) { } virtual void SerializeToDict(DictionaryValue *dict) const; void SetValue(int item_index, std::string value) { item_index_ = item_index; value_ = value; } private: std::string value_; // The 0-based index of the current item and the number of total items. // If the value is not one of the drop-down options, |item_index_| should // be -1. int item_index_; int item_count_; }; // Accessibility information about a text box, passed to onControlFocused, // onControlAction, and onTextChanged event listeners. class AccessibilityTextBoxInfo : public AccessibilityControlInfo { public: AccessibilityTextBoxInfo(Profile* profile, std::string name, bool password) : AccessibilityControlInfo(profile, name), value_(""), password_(password), selection_start_(0), selection_end_(0) { } virtual void SerializeToDict(DictionaryValue *dict) const; void SetValue(std::string value, int selection_start, int selection_end) { value_ = value; selection_start_ = selection_start; selection_end_ = selection_end; } private: std::string value_; bool password_; int selection_start_; int selection_end_; }; // Accessibility information about a combo box passed to onControlFocused // and onControlAction event listeners. class AccessibilityListBoxInfo : public AccessibilityControlInfo { public: AccessibilityListBoxInfo(Profile* profile, std::string name, std::string value, int item_index, int item_count) : AccessibilityControlInfo(profile, name), value_(value), item_index_(item_index), item_count_(item_count) { } virtual void SerializeToDict(DictionaryValue *dict) const; void SetValue(int item_index, std::string value) { item_index_ = item_index; value_ = value; } private: std::string value_; // The 0-based index of the current item and the number of total items. // If the value is not one of the drop-down options, |item_index_| should // be -1. int item_index_; int item_count_; }; // Accessibility information about a menu; this class is used by // onMenuOpened, onMenuClosed, and onControlFocused event listeners. class AccessibilityMenuInfo : public AccessibilityControlInfo { public: AccessibilityMenuInfo(Profile* profile, std::string menu_name) : AccessibilityControlInfo(profile, menu_name) { } virtual void SerializeToDict(DictionaryValue *dict) const; }; // Accessibility information about a menu item; this class is used by // onControlFocused event listeners. class AccessibilityMenuItemInfo : public AccessibilityControlInfo { public: AccessibilityMenuItemInfo(Profile* profile, std::string name, bool has_submenu, int item_index, int item_count) : AccessibilityControlInfo(profile, name), has_submenu_(has_submenu), item_index_(item_index), item_count_(item_count) { } virtual void SerializeToDict(DictionaryValue *dict) const; private: bool has_submenu_; // The 0-based index of the current item and the number of total items. int item_index_; int item_count_; }; #endif // CHROME_BROWSER_ACCESSIBILITY_EVENTS_H_