// Copyright (c) 2012 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/accessibility_events.h" #include "base/values.h" #include "chrome/browser/accessibility/accessibility_extension_api.h" #include "chrome/browser/accessibility/accessibility_extension_api_constants.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_types.h" namespace keys = extension_accessibility_api_constants; void SendControlAccessibilityNotification( ui::AccessibilityTypes::Event event, AccessibilityControlInfo* info) { Profile *profile = info->profile(); if (profile->ShouldSendAccessibilityEvents()) { ExtensionAccessibilityEventRouter::GetInstance()->HandleControlEvent( event, info); } } void SendMenuAccessibilityNotification( ui::AccessibilityTypes::Event event, AccessibilityMenuInfo* info) { Profile *profile = info->profile(); if (profile->ShouldSendAccessibilityEvents()) { ExtensionAccessibilityEventRouter::GetInstance()->HandleMenuEvent( event, info); } } void SendWindowAccessibilityNotification( ui::AccessibilityTypes::Event event, AccessibilityWindowInfo* info) { Profile *profile = info->profile(); if (profile->ShouldSendAccessibilityEvents()) { ExtensionAccessibilityEventRouter::GetInstance()->HandleWindowEvent( event, info); } } AccessibilityControlInfo::AccessibilityControlInfo( Profile* profile, const std::string& name) : AccessibilityEventInfo(profile), name_(name) { } AccessibilityControlInfo::~AccessibilityControlInfo() { } void AccessibilityControlInfo::SerializeToDict(DictionaryValue *dict) const { dict->SetString(keys::kNameKey, name_); dict->SetString(keys::kTypeKey, type()); if (!context_.empty()) dict->SetString(keys::kContextKey, context_); } 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, const std::string& context) : AccessibilityControlInfo(profile, button_name) { set_context(context); } const char* AccessibilityButtonInfo::type() const { return keys::kTypeButton; } AccessibilityLinkInfo::AccessibilityLinkInfo(Profile* profile, const std::string& link_name, const std::string& context) : AccessibilityControlInfo(profile, link_name) { set_context(context); } const char* AccessibilityLinkInfo::type() const { return keys::kTypeLink; } AccessibilityRadioButtonInfo::AccessibilityRadioButtonInfo( Profile* profile, const std::string& name, const std::string& context, bool checked, int item_index, int item_count) : AccessibilityControlInfo(profile, name), checked_(checked), item_index_(item_index), item_count_(item_count) { set_context(context); } 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, const std::string& context, bool checked) : AccessibilityControlInfo(profile, name), checked_(checked) { set_context(context); } 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, const std::string& context, int tab_index, int tab_count) : AccessibilityControlInfo(profile, tab_name), tab_index_(tab_index), tab_count_(tab_count) { set_context(context); } 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& context, const std::string& value, int item_index, int item_count) : AccessibilityControlInfo(profile, name), value_(value), item_index_(item_index), item_count_(item_count) { set_context(context); } 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, const std::string& context, bool password) : AccessibilityControlInfo(profile, name), password_(password), selection_start_(0), selection_end_(0) { set_context(context); } 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& context, const std::string& value, int item_index, int item_count) : AccessibilityControlInfo(profile, name), value_(value), item_index_(item_index), item_count_(item_count) { set_context(context); } 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, const std::string& context, bool has_submenu, int item_index, int item_count) : AccessibilityControlInfo(profile, name), has_submenu_(has_submenu), item_index_(item_index), item_count_(item_count) { set_context(context); } 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_); } AccessibilityTreeInfo::AccessibilityTreeInfo(Profile* profile, const std::string& menu_name) : AccessibilityControlInfo(profile, menu_name) { } const char* AccessibilityTreeInfo::type() const { return keys::kTypeTree; } AccessibilityTreeItemInfo::AccessibilityTreeItemInfo(Profile* profile, const std::string& name, const std::string& context, int item_depth, int item_index, int item_count, int children_count, bool is_expanded) : AccessibilityControlInfo(profile, name), item_depth_(item_depth), item_index_(item_index), item_count_(item_count), children_count_(children_count), is_expanded_(is_expanded) { set_context(context); } const char* AccessibilityTreeItemInfo::type() const { return keys::kTypeTreeItem; } void AccessibilityTreeItemInfo::SerializeToDict(DictionaryValue *dict) const { AccessibilityControlInfo::SerializeToDict(dict); dict->SetInteger(keys::kItemDepthKey, item_depth_); dict->SetInteger(keys::kItemIndexKey, item_index_); dict->SetInteger(keys::kItemCountKey, item_count_); dict->SetInteger(keys::kChildrenCountKey, children_count_); dict->SetBoolean(keys::kItemExpandedKey, is_expanded_); } AccessibilitySliderInfo::AccessibilitySliderInfo(Profile* profile, const std::string& name, const std::string& context, const std::string& value) : AccessibilityControlInfo(profile, name), value_(value) { set_context(context); } const char* AccessibilitySliderInfo::type() const { return keys::kTypeSlider; } void AccessibilitySliderInfo::SerializeToDict(DictionaryValue *dict) const { AccessibilityControlInfo::SerializeToDict(dict); dict->SetString(keys::kStringValueKey, value_); } AccessibilityAlertInfo::AccessibilityAlertInfo(Profile* profile, const std::string& name) : AccessibilityControlInfo(profile, name) { } const char* AccessibilityAlertInfo::type() const { return keys::kTypeAlert; }