1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/accessibility_events.h"
7 #include "base/values.h"
9 #include "chrome/browser/extensions/extension_accessibility_api_constants.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "content/common/notification_service.h"
12 #include "content/common/notification_type.h"
14 namespace keys
= extension_accessibility_api_constants
;
16 void SendAccessibilityNotification(
17 NotificationType type
, AccessibilityControlInfo
* info
) {
18 Profile
*profile
= info
->profile();
19 if (profile
->ShouldSendAccessibilityEvents()) {
20 NotificationService::current()->Notify(
22 Source
<Profile
>(profile
),
23 Details
<AccessibilityControlInfo
>(info
));
27 AccessibilityControlInfo::AccessibilityControlInfo(
28 Profile
* profile
, const std::string
& control_name
)
29 : profile_(profile
), name_(control_name
) {
32 AccessibilityControlInfo::~AccessibilityControlInfo() {
35 void AccessibilityControlInfo::SerializeToDict(DictionaryValue
*dict
) const {
36 dict
->SetString(keys::kNameKey
, name_
);
37 dict
->SetString(keys::kTypeKey
, type());
40 AccessibilityWindowInfo::AccessibilityWindowInfo(Profile
* profile
,
41 const std::string
& window_name
)
42 : AccessibilityControlInfo(profile
, window_name
) {
45 const char* AccessibilityWindowInfo::type() const {
46 return keys::kTypeWindow
;
49 AccessibilityButtonInfo::AccessibilityButtonInfo(Profile
* profile
,
50 const std::string
& button_name
)
51 : AccessibilityControlInfo(profile
, button_name
) {
54 const char* AccessibilityButtonInfo::type() const {
55 return keys::kTypeButton
;
58 AccessibilityLinkInfo::AccessibilityLinkInfo(Profile
* profile
,
59 const std::string
& link_name
)
60 : AccessibilityControlInfo(profile
, link_name
) { }
62 const char* AccessibilityLinkInfo::type() const {
63 return keys::kTypeLink
;
66 AccessibilityRadioButtonInfo::AccessibilityRadioButtonInfo(
68 const std::string
& name
,
72 : AccessibilityControlInfo(profile
, name
),
74 item_index_(item_index
),
75 item_count_(item_count
) {
78 const char* AccessibilityRadioButtonInfo::type() const {
79 return keys::kTypeRadioButton
;
82 void AccessibilityRadioButtonInfo::SerializeToDict(
83 DictionaryValue
*dict
) const {
84 AccessibilityControlInfo::SerializeToDict(dict
);
85 dict
->SetBoolean(keys::kCheckedKey
, checked_
);
86 dict
->SetInteger(keys::kItemIndexKey
, item_index_
);
87 dict
->SetInteger(keys::kItemCountKey
, item_count_
);
90 AccessibilityCheckboxInfo::AccessibilityCheckboxInfo(Profile
* profile
,
91 const std::string
& name
,
93 : AccessibilityControlInfo(profile
, name
),
97 const char* AccessibilityCheckboxInfo::type() const {
98 return keys::kTypeCheckbox
;
101 void AccessibilityCheckboxInfo::SerializeToDict(DictionaryValue
*dict
) const {
102 AccessibilityControlInfo::SerializeToDict(dict
);
103 dict
->SetBoolean(keys::kCheckedKey
, checked_
);
106 AccessibilityTabInfo::AccessibilityTabInfo(Profile
* profile
,
107 const std::string
& tab_name
,
110 : AccessibilityControlInfo(profile
, tab_name
),
111 tab_index_(tab_index
),
112 tab_count_(tab_count
) {
115 const char* AccessibilityTabInfo::type() const {
116 return keys::kTypeTab
;
119 void AccessibilityTabInfo::SerializeToDict(DictionaryValue
*dict
) const {
120 AccessibilityControlInfo::SerializeToDict(dict
);
121 dict
->SetInteger(keys::kItemIndexKey
, tab_index_
);
122 dict
->SetInteger(keys::kItemCountKey
, tab_count_
);
125 AccessibilityComboBoxInfo::AccessibilityComboBoxInfo(Profile
* profile
,
126 const std::string
& name
,
127 const std::string
& value
,
130 : AccessibilityControlInfo(profile
, name
),
132 item_index_(item_index
),
133 item_count_(item_count
) {
136 const char* AccessibilityComboBoxInfo::type() const {
137 return keys::kTypeComboBox
;
140 void AccessibilityComboBoxInfo::SerializeToDict(DictionaryValue
*dict
) const {
141 AccessibilityControlInfo::SerializeToDict(dict
);
142 dict
->SetString(keys::kValueKey
, value_
);
143 dict
->SetInteger(keys::kItemIndexKey
, item_index_
);
144 dict
->SetInteger(keys::kItemCountKey
, item_count_
);
147 AccessibilityTextBoxInfo::AccessibilityTextBoxInfo(Profile
* profile
,
148 const std::string
& name
,
150 : AccessibilityControlInfo(profile
, name
),
157 const char* AccessibilityTextBoxInfo::type() const {
158 return keys::kTypeTextBox
;
161 void AccessibilityTextBoxInfo::SerializeToDict(DictionaryValue
*dict
) const {
162 AccessibilityControlInfo::SerializeToDict(dict
);
163 dict
->SetString(keys::kValueKey
, value_
);
164 dict
->SetBoolean(keys::kPasswordKey
, password_
);
165 dict
->SetInteger(keys::kSelectionStartKey
, selection_start_
);
166 dict
->SetInteger(keys::kSelectionEndKey
, selection_end_
);
169 AccessibilityListBoxInfo::AccessibilityListBoxInfo(Profile
* profile
,
170 const std::string
& name
,
171 const std::string
& value
,
174 : AccessibilityControlInfo(profile
, name
),
176 item_index_(item_index
),
177 item_count_(item_count
) {
180 const char* AccessibilityListBoxInfo::type() const {
181 return keys::kTypeListBox
;
184 void AccessibilityListBoxInfo::SerializeToDict(DictionaryValue
*dict
) const {
185 AccessibilityControlInfo::SerializeToDict(dict
);
186 dict
->SetString(keys::kValueKey
, value_
);
187 dict
->SetInteger(keys::kItemIndexKey
, item_index_
);
188 dict
->SetInteger(keys::kItemCountKey
, item_count_
);
191 AccessibilityMenuInfo::AccessibilityMenuInfo(Profile
* profile
,
192 const std::string
& menu_name
)
193 : AccessibilityControlInfo(profile
, menu_name
) {
196 const char* AccessibilityMenuInfo::type() const {
197 return keys::kTypeMenu
;
200 AccessibilityMenuItemInfo::AccessibilityMenuItemInfo(Profile
* profile
,
201 const std::string
& name
,
205 : AccessibilityControlInfo(profile
, name
),
206 has_submenu_(has_submenu
),
207 item_index_(item_index
),
208 item_count_(item_count
) {
211 const char* AccessibilityMenuItemInfo::type() const {
212 return keys::kTypeMenuItem
;
215 void AccessibilityMenuItemInfo::SerializeToDict(DictionaryValue
*dict
) const {
216 AccessibilityControlInfo::SerializeToDict(dict
);
217 dict
->SetBoolean(keys::kHasSubmenuKey
, has_submenu_
);
218 dict
->SetInteger(keys::kItemIndexKey
, item_index_
);
219 dict
->SetInteger(keys::kItemCountKey
, item_count_
);