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

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

Issue 2707263011: Test aria-pressed=mixed on windows (Closed)
Patch Set: git cl try Created 3 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) 2017 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2017 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_com_win.h" 5 #include "content/browser/accessibility/browser_accessibility_com_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 5042 matching lines...) Expand 10 before | Expand all | Expand 10 after
5053 void BrowserAccessibilityComWin::InitRoleAndState() { 5053 void BrowserAccessibilityComWin::InitRoleAndState() {
5054 int32_t ia_role = 0; 5054 int32_t ia_role = 0;
5055 int32_t ia_state = 0; 5055 int32_t ia_state = 0;
5056 base::string16 role_name; 5056 base::string16 role_name;
5057 int32_t ia2_role = 0; 5057 int32_t ia2_role = 0;
5058 int32_t ia2_state = IA2_STATE_OPAQUE; 5058 int32_t ia2_state = IA2_STATE_OPAQUE;
5059 5059
5060 if (owner()->HasState(ui::AX_STATE_BUSY)) 5060 if (owner()->HasState(ui::AX_STATE_BUSY))
5061 ia_state |= STATE_SYSTEM_BUSY; 5061 ia_state |= STATE_SYSTEM_BUSY;
5062 5062
5063 const auto checked_state = static_cast<ui::AXCheckedState>( 5063 const auto checked_state = static_cast<ui::AXButtonState>(
5064 owner()->GetIntAttribute(ui::AX_ATTR_CHECKED_STATE)); 5064 owner()->GetIntAttribute(ui::AX_ATTR_CHECKED_STATE));
5065 switch (checked_state) { 5065 switch (checked_state) {
5066 case ui::AX_CHECKED_STATE_TRUE: 5066 case ui::AX_BUTTON_STATE_TRUE:
5067 ia_state |= STATE_SYSTEM_CHECKED; 5067 ia_state |= STATE_SYSTEM_CHECKED;
5068 break; 5068 break;
5069 case ui::AX_CHECKED_STATE_MIXED: 5069 case ui::AX_BUTTON_STATE_MIXED:
5070 ia_state |= STATE_SYSTEM_MIXED; 5070 ia_state |= STATE_SYSTEM_MIXED;
5071 break; 5071 break;
5072 default: 5072 default:
5073 break; 5073 break;
5074 } 5074 }
5075 5075
5076 if (owner()->HasState(ui::AX_STATE_COLLAPSED)) 5076 if (owner()->HasState(ui::AX_STATE_COLLAPSED))
5077 ia_state |= STATE_SYSTEM_COLLAPSED; 5077 ia_state |= STATE_SYSTEM_COLLAPSED;
5078 if (owner()->HasState(ui::AX_STATE_EXPANDED)) 5078 if (owner()->HasState(ui::AX_STATE_EXPANDED))
5079 ia_state |= STATE_SYSTEM_EXPANDED; 5079 ia_state |= STATE_SYSTEM_EXPANDED;
5080 if (owner()->HasState(ui::AX_STATE_FOCUSABLE)) 5080 if (owner()->HasState(ui::AX_STATE_FOCUSABLE))
5081 ia_state |= STATE_SYSTEM_FOCUSABLE; 5081 ia_state |= STATE_SYSTEM_FOCUSABLE;
5082 if (owner()->HasState(ui::AX_STATE_HASPOPUP)) 5082 if (owner()->HasState(ui::AX_STATE_HASPOPUP))
5083 ia_state |= STATE_SYSTEM_HASPOPUP; 5083 ia_state |= STATE_SYSTEM_HASPOPUP;
5084 if (owner()->HasIntAttribute(ui::AX_ATTR_INVALID_STATE) && 5084 if (owner()->HasIntAttribute(ui::AX_ATTR_INVALID_STATE) &&
5085 owner()->GetIntAttribute(ui::AX_ATTR_INVALID_STATE) != 5085 owner()->GetIntAttribute(ui::AX_ATTR_INVALID_STATE) !=
5086 ui::AX_INVALID_STATE_FALSE) 5086 ui::AX_INVALID_STATE_FALSE)
5087 ia2_state |= IA2_STATE_INVALID_ENTRY; 5087 ia2_state |= IA2_STATE_INVALID_ENTRY;
5088 if (owner()->HasState(ui::AX_STATE_INVISIBLE)) 5088 if (owner()->HasState(ui::AX_STATE_INVISIBLE))
5089 ia_state |= STATE_SYSTEM_INVISIBLE; 5089 ia_state |= STATE_SYSTEM_INVISIBLE;
5090 if (owner()->HasState(ui::AX_STATE_LINKED)) 5090 if (owner()->HasState(ui::AX_STATE_LINKED))
5091 ia_state |= STATE_SYSTEM_LINKED; 5091 ia_state |= STATE_SYSTEM_LINKED;
5092 if (owner()->HasState(ui::AX_STATE_MULTISELECTABLE)) { 5092 if (owner()->HasState(ui::AX_STATE_MULTISELECTABLE)) {
5093 ia_state |= STATE_SYSTEM_EXTSELECTABLE; 5093 ia_state |= STATE_SYSTEM_EXTSELECTABLE;
5094 ia_state |= STATE_SYSTEM_MULTISELECTABLE; 5094 ia_state |= STATE_SYSTEM_MULTISELECTABLE;
5095 } 5095 }
5096 // TODO(ctguil): Support STATE_SYSTEM_EXTSELECTABLE/accSelect. 5096 // TODO(ctguil): Support STATE_SYSTEM_EXTSELECTABLE/accSelect.
5097 if (owner()->HasState(ui::AX_STATE_OFFSCREEN)) 5097 if (owner()->HasState(ui::AX_STATE_OFFSCREEN))
5098 ia_state |= STATE_SYSTEM_OFFSCREEN; 5098 ia_state |= STATE_SYSTEM_OFFSCREEN;
5099 if (owner()->HasState(ui::AX_STATE_PRESSED))
5100 ia_state |= STATE_SYSTEM_PRESSED;
5101 if (owner()->HasState(ui::AX_STATE_PROTECTED)) 5099 if (owner()->HasState(ui::AX_STATE_PROTECTED))
5102 ia_state |= STATE_SYSTEM_PROTECTED; 5100 ia_state |= STATE_SYSTEM_PROTECTED;
5103 if (owner()->HasState(ui::AX_STATE_REQUIRED)) 5101 if (owner()->HasState(ui::AX_STATE_REQUIRED))
5104 ia2_state |= IA2_STATE_REQUIRED; 5102 ia2_state |= IA2_STATE_REQUIRED;
5105 if (owner()->HasState(ui::AX_STATE_SELECTABLE)) 5103 if (owner()->HasState(ui::AX_STATE_SELECTABLE))
5106 ia_state |= STATE_SYSTEM_SELECTABLE; 5104 ia_state |= STATE_SYSTEM_SELECTABLE;
5107 if (owner()->HasState(ui::AX_STATE_SELECTED)) 5105 if (owner()->HasState(ui::AX_STATE_SELECTED))
5108 ia_state |= STATE_SYSTEM_SELECTED; 5106 ia_state |= STATE_SYSTEM_SELECTED;
5109 if (owner()->HasState(ui::AX_STATE_VISITED)) 5107 if (owner()->HasState(ui::AX_STATE_VISITED))
5110 ia_state |= STATE_SYSTEM_TRAVERSED; 5108 ia_state |= STATE_SYSTEM_TRAVERSED;
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
5518 case ui::AX_ROLE_TAB_PANEL: 5516 case ui::AX_ROLE_TAB_PANEL:
5519 ia_role = ROLE_SYSTEM_PROPERTYPAGE; 5517 ia_role = ROLE_SYSTEM_PROPERTYPAGE;
5520 break; 5518 break;
5521 case ui::AX_ROLE_TERM: 5519 case ui::AX_ROLE_TERM:
5522 ia_role = ROLE_SYSTEM_LISTITEM; 5520 ia_role = ROLE_SYSTEM_LISTITEM;
5523 ia_state |= STATE_SYSTEM_READONLY; 5521 ia_state |= STATE_SYSTEM_READONLY;
5524 break; 5522 break;
5525 case ui::AX_ROLE_TOGGLE_BUTTON: 5523 case ui::AX_ROLE_TOGGLE_BUTTON:
5526 ia_role = ROLE_SYSTEM_PUSHBUTTON; 5524 ia_role = ROLE_SYSTEM_PUSHBUTTON;
5527 ia2_role = IA2_ROLE_TOGGLE_BUTTON; 5525 ia2_role = IA2_ROLE_TOGGLE_BUTTON;
5526 const auto pressed_state = static_cast<ui::AXButtonState>(
5527 owner()->GetIntAttribute(ui::AX_ATTR_PRESSED_STATE));
5528 if (pressed_state == ui::AX_CHECKED_STATE_TRUE)
5529 ia_state |= STATE_SYSTEM_PRESSED;
5530 else if (pressed_state == ui::AX_CHECKED_STATE_MIXED)
5531 ia_state |= STATE_SYSTEM_MIXED;
5528 break; 5532 break;
5529 case ui::AX_ROLE_TEXT_FIELD: 5533 case ui::AX_ROLE_TEXT_FIELD:
5530 case ui::AX_ROLE_SEARCH_BOX: 5534 case ui::AX_ROLE_SEARCH_BOX:
5531 ia_role = ROLE_SYSTEM_TEXT; 5535 ia_role = ROLE_SYSTEM_TEXT;
5532 if (owner()->HasState(ui::AX_STATE_MULTILINE)) { 5536 if (owner()->HasState(ui::AX_STATE_MULTILINE)) {
5533 ia2_state |= IA2_STATE_MULTI_LINE; 5537 ia2_state |= IA2_STATE_MULTI_LINE;
5534 } else { 5538 } else {
5535 ia2_state |= IA2_STATE_SINGLE_LINE; 5539 ia2_state |= IA2_STATE_SINGLE_LINE;
5536 } 5540 }
5537 if (owner()->HasState(ui::AX_STATE_READ_ONLY)) 5541 if (owner()->HasState(ui::AX_STATE_READ_ONLY))
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
5634 5638
5635 BrowserAccessibilityComWin* ToBrowserAccessibilityComWin( 5639 BrowserAccessibilityComWin* ToBrowserAccessibilityComWin(
5636 BrowserAccessibility* obj) { 5640 BrowserAccessibility* obj) {
5637 if (!obj || !obj->IsNative()) 5641 if (!obj || !obj->IsNative())
5638 return nullptr; 5642 return nullptr;
5639 auto* result = static_cast<BrowserAccessibilityWin*>(obj)->GetCOM(); 5643 auto* result = static_cast<BrowserAccessibilityWin*>(obj)->GetCOM();
5640 return result; 5644 return result;
5641 } 5645 }
5642 5646
5643 } // namespace content 5647 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698