OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <atlbase.h> | 5 #include <atlbase.h> |
6 #include <atlcom.h> | 6 #include <atlcom.h> |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <oleacc.h> | 8 #include <oleacc.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 if (state & (1 << ui::AX_STATE_CHECKED)) | 975 if (state & (1 << ui::AX_STATE_CHECKED)) |
976 msaa_state |= STATE_SYSTEM_CHECKED; | 976 msaa_state |= STATE_SYSTEM_CHECKED; |
977 if (state & (1 << ui::AX_STATE_COLLAPSED)) | 977 if (state & (1 << ui::AX_STATE_COLLAPSED)) |
978 msaa_state |= STATE_SYSTEM_COLLAPSED; | 978 msaa_state |= STATE_SYSTEM_COLLAPSED; |
979 if (state & (1 << ui::AX_STATE_DEFAULT)) | 979 if (state & (1 << ui::AX_STATE_DEFAULT)) |
980 msaa_state |= STATE_SYSTEM_DEFAULT; | 980 msaa_state |= STATE_SYSTEM_DEFAULT; |
981 if (state & (1 << ui::AX_STATE_EXPANDED)) | 981 if (state & (1 << ui::AX_STATE_EXPANDED)) |
982 msaa_state |= STATE_SYSTEM_EXPANDED; | 982 msaa_state |= STATE_SYSTEM_EXPANDED; |
983 if (state & (1 << ui::AX_STATE_FOCUSABLE)) | 983 if (state & (1 << ui::AX_STATE_FOCUSABLE)) |
984 msaa_state |= STATE_SYSTEM_FOCUSABLE; | 984 msaa_state |= STATE_SYSTEM_FOCUSABLE; |
985 if (state & (1 << ui::AX_STATE_FOCUSED)) | |
986 msaa_state |= STATE_SYSTEM_FOCUSED; | |
987 if (state & (1 << ui::AX_STATE_HASPOPUP)) | 985 if (state & (1 << ui::AX_STATE_HASPOPUP)) |
988 msaa_state |= STATE_SYSTEM_HASPOPUP; | 986 msaa_state |= STATE_SYSTEM_HASPOPUP; |
989 if (state & (1 << ui::AX_STATE_HOVERED)) | 987 if (state & (1 << ui::AX_STATE_HOVERED)) |
990 msaa_state |= STATE_SYSTEM_HOTTRACKED; | 988 msaa_state |= STATE_SYSTEM_HOTTRACKED; |
991 if (state & (1 << ui::AX_STATE_INVISIBLE)) | 989 if (state & (1 << ui::AX_STATE_INVISIBLE)) |
992 msaa_state |= STATE_SYSTEM_INVISIBLE; | 990 msaa_state |= STATE_SYSTEM_INVISIBLE; |
993 if (state & (1 << ui::AX_STATE_LINKED)) | 991 if (state & (1 << ui::AX_STATE_LINKED)) |
994 msaa_state |= STATE_SYSTEM_LINKED; | 992 msaa_state |= STATE_SYSTEM_LINKED; |
995 if (state & (1 << ui::AX_STATE_OFFSCREEN)) | 993 if (state & (1 << ui::AX_STATE_OFFSCREEN)) |
996 msaa_state |= STATE_SYSTEM_OFFSCREEN; | 994 msaa_state |= STATE_SYSTEM_OFFSCREEN; |
997 if (state & (1 << ui::AX_STATE_PRESSED)) | 995 if (state & (1 << ui::AX_STATE_PRESSED)) |
998 msaa_state |= STATE_SYSTEM_PRESSED; | 996 msaa_state |= STATE_SYSTEM_PRESSED; |
999 if (state & (1 << ui::AX_STATE_PROTECTED)) | 997 if (state & (1 << ui::AX_STATE_PROTECTED)) |
1000 msaa_state |= STATE_SYSTEM_PROTECTED; | 998 msaa_state |= STATE_SYSTEM_PROTECTED; |
1001 if (state & (1 << ui::AX_STATE_READ_ONLY)) | 999 if (state & (1 << ui::AX_STATE_READ_ONLY)) |
1002 msaa_state |= STATE_SYSTEM_READONLY; | 1000 msaa_state |= STATE_SYSTEM_READONLY; |
1003 if (state & (1 << ui::AX_STATE_SELECTABLE)) | 1001 if (state & (1 << ui::AX_STATE_SELECTABLE)) |
1004 msaa_state |= STATE_SYSTEM_SELECTABLE; | 1002 msaa_state |= STATE_SYSTEM_SELECTABLE; |
1005 if (state & (1 << ui::AX_STATE_SELECTED)) | 1003 if (state & (1 << ui::AX_STATE_SELECTED)) |
1006 msaa_state |= STATE_SYSTEM_SELECTED; | 1004 msaa_state |= STATE_SYSTEM_SELECTED; |
1007 if (state & (1 << ui::AX_STATE_DISABLED)) | 1005 if (state & (1 << ui::AX_STATE_DISABLED)) |
1008 msaa_state |= STATE_SYSTEM_UNAVAILABLE; | 1006 msaa_state |= STATE_SYSTEM_UNAVAILABLE; |
1009 | 1007 |
| 1008 gfx::NativeViewAccessible focus = delegate_->GetFocus(); |
| 1009 if (focus == GetNativeViewAccessible()) |
| 1010 msaa_state |= STATE_SYSTEM_FOCUSED; |
| 1011 |
| 1012 // On Windows, the "focus" bit should be set on certain containers, like |
| 1013 // menu bars, when one of their children has focus. |
| 1014 if (GetData().role == ui::AX_ROLE_MENU_BAR && focus) |
| 1015 msaa_state |= STATE_SYSTEM_FOCUSED; |
| 1016 |
1010 return msaa_state; | 1017 return msaa_state; |
1011 } | 1018 } |
1012 | 1019 |
1013 int AXPlatformNodeWin::MSAAEvent(ui::AXEvent event) { | 1020 int AXPlatformNodeWin::MSAAEvent(ui::AXEvent event) { |
1014 switch (event) { | 1021 switch (event) { |
1015 case ui::AX_EVENT_ALERT: | 1022 case ui::AX_EVENT_ALERT: |
1016 return EVENT_SYSTEM_ALERT; | 1023 return EVENT_SYSTEM_ALERT; |
1017 case ui::AX_EVENT_FOCUS: | 1024 case ui::AX_EVENT_FOCUS: |
1018 return EVENT_OBJECT_FOCUS; | 1025 return EVENT_OBJECT_FOCUS; |
1019 case ui::AX_EVENT_MENU_START: | 1026 case ui::AX_EVENT_MENU_START: |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1104 LONG start_offset, | 1111 LONG start_offset, |
1105 ui::TextBoundaryDirection direction) { | 1112 ui::TextBoundaryDirection direction) { |
1106 HandleSpecialTextOffset(text, &start_offset); | 1113 HandleSpecialTextOffset(text, &start_offset); |
1107 ui::TextBoundaryType boundary = IA2TextBoundaryToTextBoundary(ia2_boundary); | 1114 ui::TextBoundaryType boundary = IA2TextBoundaryToTextBoundary(ia2_boundary); |
1108 std::vector<int32_t> line_breaks; | 1115 std::vector<int32_t> line_breaks; |
1109 return static_cast<LONG>(ui::FindAccessibleTextBoundary( | 1116 return static_cast<LONG>(ui::FindAccessibleTextBoundary( |
1110 text, line_breaks, boundary, start_offset, direction)); | 1117 text, line_breaks, boundary, start_offset, direction)); |
1111 } | 1118 } |
1112 | 1119 |
1113 } // namespace ui | 1120 } // namespace ui |
OLD | NEW |