| // 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. |
| |
| #include "chrome/browser/accessibility_events.h" |
| |
| #include "base/values.h" |
| |
| #include "chrome/browser/extensions/extension_accessibility_api_constants.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "content/common/notification_service.h" |
| #include "content/common/notification_type.h" |
| |
| namespace keys = extension_accessibility_api_constants; |
| |
| void SendAccessibilityNotification( |
| NotificationType type, AccessibilityControlInfo* info) { |
| Profile *profile = info->profile(); |
| if (profile->ShouldSendAccessibilityEvents()) { |
| NotificationService::current()->Notify( |
| type, |
| Source<Profile>(profile), |
| Details<AccessibilityControlInfo>(info)); |
| } |
| } |
| |
| AccessibilityControlInfo::AccessibilityControlInfo( |
| Profile* profile, const std::string& control_name) |
| : profile_(profile), name_(control_name) { |
| } |
| |
| AccessibilityControlInfo::~AccessibilityControlInfo() { |
| } |
| |
| void AccessibilityControlInfo::SerializeToDict(DictionaryValue *dict) const { |
| dict->SetString(keys::kNameKey, name_); |
| dict->SetString(keys::kTypeKey, type()); |
| } |
| |
| AccessibilityWindowInfo::AccessibilityWindowInfo(Profile* profile, |
| const std::string& window_name) |
| : AccessibilityControlInfo(profile, window_name) { |
| } |
| |
| const char* AccessibilityWindowInfo::type() const { |
| return keys::kTypeWindow; |
| } |
| |
| AccessibilityButtonInfo::AccessibilityButtonInfo(Profile* profile, |
| const std::string& button_name) |
| : AccessibilityControlInfo(profile, button_name) { |
| } |
| |
| const char* AccessibilityButtonInfo::type() const { |
| return keys::kTypeButton; |
| } |
| |
| AccessibilityLinkInfo::AccessibilityLinkInfo(Profile* profile, |
| const std::string& link_name) |
| : AccessibilityControlInfo(profile, link_name) { } |
| |
| const char* AccessibilityLinkInfo::type() const { |
| return keys::kTypeLink; |
| } |
| |
| AccessibilityRadioButtonInfo::AccessibilityRadioButtonInfo( |
| Profile* profile, |
| const std::string& name, |
| bool checked, |
| int item_index, |
| int item_count) |
| : AccessibilityControlInfo(profile, name), |
| checked_(checked), |
| item_index_(item_index), |
| item_count_(item_count) { |
| } |
| |
| const char* AccessibilityRadioButtonInfo::type() const { |
| return keys::kTypeRadioButton; |
| } |
| |
| void AccessibilityRadioButtonInfo::SerializeToDict( |
| DictionaryValue *dict) const { |
| AccessibilityControlInfo::SerializeToDict(dict); |
| dict->SetBoolean(keys::kCheckedKey, checked_); |
| dict->SetInteger(keys::kItemIndexKey, item_index_); |
| dict->SetInteger(keys::kItemCountKey, item_count_); |
| } |
| |
| AccessibilityCheckboxInfo::AccessibilityCheckboxInfo(Profile* profile, |
| const std::string& name, |
| bool checked) |
| : AccessibilityControlInfo(profile, name), |
| checked_(checked) { |
| } |
| |
| const char* AccessibilityCheckboxInfo::type() const { |
| return keys::kTypeCheckbox; |
| } |
| |
| void AccessibilityCheckboxInfo::SerializeToDict(DictionaryValue *dict) const { |
| AccessibilityControlInfo::SerializeToDict(dict); |
| dict->SetBoolean(keys::kCheckedKey, checked_); |
| } |
| |
| AccessibilityTabInfo::AccessibilityTabInfo(Profile* profile, |
| const std::string& tab_name, |
| int tab_index, |
| int tab_count) |
| : AccessibilityControlInfo(profile, tab_name), |
| tab_index_(tab_index), |
| tab_count_(tab_count) { |
| } |
| |
| const char* AccessibilityTabInfo::type() const { |
| return keys::kTypeTab; |
| } |
| |
| void AccessibilityTabInfo::SerializeToDict(DictionaryValue *dict) const { |
| AccessibilityControlInfo::SerializeToDict(dict); |
| dict->SetInteger(keys::kItemIndexKey, tab_index_); |
| dict->SetInteger(keys::kItemCountKey, tab_count_); |
| } |
| |
| AccessibilityComboBoxInfo::AccessibilityComboBoxInfo(Profile* profile, |
| const std::string& name, |
| const std::string& value, |
| int item_index, |
| int item_count) |
| : AccessibilityControlInfo(profile, name), |
| value_(value), |
| item_index_(item_index), |
| item_count_(item_count) { |
| } |
| |
| const char* AccessibilityComboBoxInfo::type() const { |
| return keys::kTypeComboBox; |
| } |
| |
| void AccessibilityComboBoxInfo::SerializeToDict(DictionaryValue *dict) const { |
| AccessibilityControlInfo::SerializeToDict(dict); |
| dict->SetString(keys::kValueKey, value_); |
| dict->SetInteger(keys::kItemIndexKey, item_index_); |
| dict->SetInteger(keys::kItemCountKey, item_count_); |
| } |
| |
| AccessibilityTextBoxInfo::AccessibilityTextBoxInfo(Profile* profile, |
| const std::string& name, |
| bool password) |
| : AccessibilityControlInfo(profile, name), |
| value_(""), |
| password_(password), |
| selection_start_(0), |
| selection_end_(0) { |
| } |
| |
| const char* AccessibilityTextBoxInfo::type() const { |
| return keys::kTypeTextBox; |
| } |
| |
| void AccessibilityTextBoxInfo::SerializeToDict(DictionaryValue *dict) const { |
| AccessibilityControlInfo::SerializeToDict(dict); |
| dict->SetString(keys::kValueKey, value_); |
| dict->SetBoolean(keys::kPasswordKey, password_); |
| dict->SetInteger(keys::kSelectionStartKey, selection_start_); |
| dict->SetInteger(keys::kSelectionEndKey, selection_end_); |
| } |
| |
| AccessibilityListBoxInfo::AccessibilityListBoxInfo(Profile* profile, |
| const std::string& name, |
| const std::string& value, |
| int item_index, |
| int item_count) |
| : AccessibilityControlInfo(profile, name), |
| value_(value), |
| item_index_(item_index), |
| item_count_(item_count) { |
| } |
| |
| const char* AccessibilityListBoxInfo::type() const { |
| return keys::kTypeListBox; |
| } |
| |
| void AccessibilityListBoxInfo::SerializeToDict(DictionaryValue *dict) const { |
| AccessibilityControlInfo::SerializeToDict(dict); |
| dict->SetString(keys::kValueKey, value_); |
| dict->SetInteger(keys::kItemIndexKey, item_index_); |
| dict->SetInteger(keys::kItemCountKey, item_count_); |
| } |
| |
| AccessibilityMenuInfo::AccessibilityMenuInfo(Profile* profile, |
| const std::string& menu_name) |
| : AccessibilityControlInfo(profile, menu_name) { |
| } |
| |
| const char* AccessibilityMenuInfo::type() const { |
| return keys::kTypeMenu; |
| } |
| |
| AccessibilityMenuItemInfo::AccessibilityMenuItemInfo(Profile* profile, |
| const 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) { |
| } |
| |
| const char* AccessibilityMenuItemInfo::type() const { |
| return keys::kTypeMenuItem; |
| } |
| |
| void AccessibilityMenuItemInfo::SerializeToDict(DictionaryValue *dict) const { |
| AccessibilityControlInfo::SerializeToDict(dict); |
| dict->SetBoolean(keys::kHasSubmenuKey, has_submenu_); |
| dict->SetInteger(keys::kItemIndexKey, item_index_); |
| dict->SetInteger(keys::kItemCountKey, item_count_); |
| } |