// 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_); }