| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |