blob: aade4b33c0a690712e6ec736d10a89f532e3fda5 [file] [log] [blame]
// 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.
#include "chrome/browser/accessibility_events.h"
#include "base/values.h"
#include "chrome/browser/extensions/extension_accessibility_api_constants.h"
#include "chrome/browser/profile.h"
#include "chrome/common/notification_service.h"
#include "chrome/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));
}
}
void AccessibilityControlInfo::SerializeToDict(DictionaryValue *dict) const {
dict->SetString(keys::kNameKey, name_);
dict->SetString(keys::kTypeKey, type());
}
const char* AccessibilityWindowInfo::type() const {
return keys::kTypeWindow;
}
const char* AccessibilityButtonInfo::type() const {
return keys::kTypeButton;
}
const char* AccessibilityLinkInfo::type() const {
return keys::kTypeLink;
}
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_);
}
const char* AccessibilityCheckboxInfo::type() const {
return keys::kTypeCheckbox;
}
void AccessibilityCheckboxInfo::SerializeToDict(DictionaryValue *dict) const {
AccessibilityControlInfo::SerializeToDict(dict);
dict->SetBoolean(keys::kCheckedKey, checked_);
}
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_);
}
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_);
}
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_);
}
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_);
}
const char* AccessibilityMenuInfo::type() const {
return keys::kTypeMenu;
}
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_);
}