Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: content/browser/accessibility/browser_accessibility_win.cc

Issue 1162263008: Exposes datetime attribute. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: re-upload due to browser_accessibility_cocoa.mm Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/accessibility/browser_accessibility_win.h" 5 #include "content/browser/accessibility/browser_accessibility_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 3155 matching lines...) Expand 10 before | Expand all | Expand 10 after
3166 3166
3167 InitRoleAndState(); 3167 InitRoleAndState();
3168 3168
3169 win_attributes_->ia2_attributes.clear(); 3169 win_attributes_->ia2_attributes.clear();
3170 3170
3171 // Expose autocomplete attribute for combobox and textbox. 3171 // Expose autocomplete attribute for combobox and textbox.
3172 StringAttributeToIA2(ui::AX_ATTR_AUTO_COMPLETE, "autocomplete"); 3172 StringAttributeToIA2(ui::AX_ATTR_AUTO_COMPLETE, "autocomplete");
3173 3173
3174 // Expose the "display" and "tag" attributes. 3174 // Expose the "display" and "tag" attributes.
3175 StringAttributeToIA2(ui::AX_ATTR_DISPLAY, "display"); 3175 StringAttributeToIA2(ui::AX_ATTR_DISPLAY, "display");
3176 StringAttributeToIA2(ui::AX_ATTR_DROPEFFECT, "dropeffect");
3177 StringAttributeToIA2(ui::AX_ATTR_TEXT_INPUT_TYPE, "text-input-type");
3178 StringAttributeToIA2(ui::AX_ATTR_HTML_TAG, "tag"); 3176 StringAttributeToIA2(ui::AX_ATTR_HTML_TAG, "tag");
3179 StringAttributeToIA2(ui::AX_ATTR_ROLE, "xml-roles"); 3177 StringAttributeToIA2(ui::AX_ATTR_ROLE, "xml-roles");
3180 3178
3181 // Expose "level" attribute for headings, trees, etc. 3179 // Expose "level" attribute for headings, trees, etc.
3182 IntAttributeToIA2(ui::AX_ATTR_HIERARCHICAL_LEVEL, "level"); 3180 IntAttributeToIA2(ui::AX_ATTR_HIERARCHICAL_LEVEL, "level");
3183 3181
3184 // Expose the set size and position in set. 3182 // Expose the set size and position in set.
3185 IntAttributeToIA2(ui::AX_ATTR_SET_SIZE, "setsize"); 3183 IntAttributeToIA2(ui::AX_ATTR_SET_SIZE, "setsize");
3186 IntAttributeToIA2(ui::AX_ATTR_POS_IN_SET, "posinset"); 3184 IntAttributeToIA2(ui::AX_ATTR_POS_IN_SET, "posinset");
3187 3185
3188 if (ia_role() == ROLE_SYSTEM_CHECKBUTTON || 3186 if (ia_role() == ROLE_SYSTEM_CHECKBUTTON ||
3189 ia_role() == ROLE_SYSTEM_RADIOBUTTON || 3187 ia_role() == ROLE_SYSTEM_RADIOBUTTON ||
3190 ia2_role() == IA2_ROLE_CHECK_MENU_ITEM || 3188 ia2_role() == IA2_ROLE_CHECK_MENU_ITEM ||
3191 ia2_role() == IA2_ROLE_RADIO_MENU_ITEM || 3189 ia2_role() == IA2_ROLE_RADIO_MENU_ITEM ||
3192 ia2_role() == IA2_ROLE_TOGGLE_BUTTON) { 3190 ia2_role() == IA2_ROLE_TOGGLE_BUTTON) {
3193 win_attributes_->ia2_attributes.push_back(L"checkable:true"); 3191 win_attributes_->ia2_attributes.push_back(L"checkable:true");
3194 } 3192 }
3195 3193
3196 // Expose live region attributes. 3194 // Expose live region attributes.
3197 StringAttributeToIA2(ui::AX_ATTR_LIVE_STATUS, "live"); 3195 StringAttributeToIA2(ui::AX_ATTR_LIVE_STATUS, "live");
3198 StringAttributeToIA2(ui::AX_ATTR_LIVE_RELEVANT, "relevant"); 3196 StringAttributeToIA2(ui::AX_ATTR_LIVE_RELEVANT, "relevant");
3199 BoolAttributeToIA2(ui::AX_ATTR_LIVE_ATOMIC, "atomic"); 3197 BoolAttributeToIA2(ui::AX_ATTR_LIVE_ATOMIC, "atomic");
3200 BoolAttributeToIA2(ui::AX_ATTR_LIVE_BUSY, "busy"); 3198 BoolAttributeToIA2(ui::AX_ATTR_LIVE_BUSY, "busy");
3201 3199
3202 // Expose aria-grabbed attributes.
3203 BoolAttributeToIA2(ui::AX_ATTR_GRABBED, "grabbed");
3204
3205 // Expose container live region attributes. 3200 // Expose container live region attributes.
3206 StringAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_STATUS, 3201 StringAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_STATUS,
3207 "container-live"); 3202 "container-live");
3208 StringAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_RELEVANT, 3203 StringAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_RELEVANT,
3209 "container-relevant"); 3204 "container-relevant");
3210 BoolAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_ATOMIC, 3205 BoolAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_ATOMIC,
3211 "container-atomic"); 3206 "container-atomic");
3212 BoolAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_BUSY, 3207 BoolAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_BUSY,
3213 "container-busy"); 3208 "container-busy");
3214 3209
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
3400 relations_.push_back(relation); 3395 relations_.push_back(relation);
3401 } 3396 }
3402 3397
3403 // Expose slider value. 3398 // Expose slider value.
3404 if (ia_role() == ROLE_SYSTEM_PROGRESSBAR || 3399 if (ia_role() == ROLE_SYSTEM_PROGRESSBAR ||
3405 ia_role() == ROLE_SYSTEM_SCROLLBAR || 3400 ia_role() == ROLE_SYSTEM_SCROLLBAR ||
3406 ia_role() == ROLE_SYSTEM_SLIDER) { 3401 ia_role() == ROLE_SYSTEM_SLIDER) {
3407 win_attributes_->ia2_attributes.push_back(L"valuetext:" + GetValueText()); 3402 win_attributes_->ia2_attributes.push_back(L"valuetext:" + GetValueText());
3408 } 3403 }
3409 3404
3405 // Expose dropeffect attribute.
dmazzoni 2015/06/09 16:23:32 What do you think of just iterating over all HTML
je_julie(Not used) 2015/06/10 02:16:31 When I looking into the inspection result from Acc
3406 base::string16 dropEffect;
3407 if (GetHtmlAttribute("aria-dropeffect", &dropEffect))
3408 win_attributes_->ia2_attributes.push_back(L"dropeffect:" + dropEffect);
3409
3410 // Expose grabbed attribute.
3411 base::string16 grabbed;
3412 if (GetHtmlAttribute("aria-grabbed", &grabbed))
3413 win_attributes_->ia2_attributes.push_back(L"grabbed:" + grabbed);
3414
3415 // Expose datetime attribute.
3416 base::string16 datetime;
3417 if (GetRole() == ui::AX_ROLE_TIME &&
3418 GetHtmlAttribute("datetime", &datetime))
3419 win_attributes_->ia2_attributes.push_back(L"datetime:" + datetime);
3420
3421 // Expose input-text type attribute.
3422 base::string16 type;
3423 if (GetRole() == ui::AX_ROLE_TEXT_FIELD &&
3424 GetHtmlAttribute("type", &type))
3425 win_attributes_->ia2_attributes.push_back(L"text-input-type:" + type);
3426
3410 // If this is a web area for a presentational iframe, give it a role of 3427 // If this is a web area for a presentational iframe, give it a role of
3411 // something other than DOCUMENT so that the fact that it's a separate doc 3428 // something other than DOCUMENT so that the fact that it's a separate doc
3412 // is not exposed to AT. 3429 // is not exposed to AT.
3413 if (IsWebAreaForPresentationalIframe()) { 3430 if (IsWebAreaForPresentationalIframe()) {
3414 win_attributes_->ia_role = ROLE_SYSTEM_GROUPING; 3431 win_attributes_->ia_role = ROLE_SYSTEM_GROUPING;
3415 win_attributes_->ia2_role = ROLE_SYSTEM_GROUPING; 3432 win_attributes_->ia2_role = ROLE_SYSTEM_GROUPING;
3416 } 3433 }
3417 } 3434 }
3418 3435
3419 void BrowserAccessibilityWin::UpdateStep2ComputeHypertext() { 3436 void BrowserAccessibilityWin::UpdateStep2ComputeHypertext() {
(...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after
4278 case ui::AX_ROLE_SEARCH_BOX: 4295 case ui::AX_ROLE_SEARCH_BOX:
4279 ia_role = ROLE_SYSTEM_TEXT; 4296 ia_role = ROLE_SYSTEM_TEXT;
4280 if (HasState(ui::AX_STATE_MULTILINE)) 4297 if (HasState(ui::AX_STATE_MULTILINE))
4281 ia2_state |= IA2_STATE_MULTI_LINE; 4298 ia2_state |= IA2_STATE_MULTI_LINE;
4282 else 4299 else
4283 ia2_state |= IA2_STATE_SINGLE_LINE; 4300 ia2_state |= IA2_STATE_SINGLE_LINE;
4284 ia2_state |= IA2_STATE_EDITABLE; 4301 ia2_state |= IA2_STATE_EDITABLE;
4285 ia2_state |= IA2_STATE_SELECTABLE_TEXT; 4302 ia2_state |= IA2_STATE_SELECTABLE_TEXT;
4286 break; 4303 break;
4287 case ui::AX_ROLE_TIME: 4304 case ui::AX_ROLE_TIME:
4305 role_name = html_tag;
4288 ia_role = ROLE_SYSTEM_TEXT; 4306 ia_role = ROLE_SYSTEM_TEXT;
4289 ia2_role = IA2_ROLE_TEXT_FRAME; 4307 ia2_role = IA2_ROLE_TEXT_FRAME;
4290 break; 4308 break;
4291 case ui::AX_ROLE_TIMER: 4309 case ui::AX_ROLE_TIMER:
4292 ia_role = ROLE_SYSTEM_CLOCK; 4310 ia_role = ROLE_SYSTEM_CLOCK;
4293 ia_state |= STATE_SYSTEM_READONLY; 4311 ia_state |= STATE_SYSTEM_READONLY;
4294 break; 4312 break;
4295 case ui::AX_ROLE_TOOLBAR: 4313 case ui::AX_ROLE_TOOLBAR:
4296 ia_role = ROLE_SYSTEM_TOOLBAR; 4314 ia_role = ROLE_SYSTEM_TOOLBAR;
4297 ia_state |= STATE_SYSTEM_READONLY; 4315 ia_state |= STATE_SYSTEM_READONLY;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
4352 ia2_role = ia_role; 4370 ia2_role = ia_role;
4353 4371
4354 win_attributes_->ia_role = ia_role; 4372 win_attributes_->ia_role = ia_role;
4355 win_attributes_->ia_state = ia_state; 4373 win_attributes_->ia_state = ia_state;
4356 win_attributes_->role_name = role_name; 4374 win_attributes_->role_name = role_name;
4357 win_attributes_->ia2_role = ia2_role; 4375 win_attributes_->ia2_role = ia2_role;
4358 win_attributes_->ia2_state = ia2_state; 4376 win_attributes_->ia2_state = ia2_state;
4359 } 4377 }
4360 4378
4361 } // namespace content 4379 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698