OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_manager_android.h" | 5 #include "content/browser/accessibility/browser_accessibility_manager_android.h" |
6 | 6 |
7 #include "base/i18n/char_iterator.h" | 7 #include "base/i18n/char_iterator.h" |
8 #include "content/browser/accessibility/browser_accessibility_android.h" | 8 #include "content/browser/accessibility/browser_accessibility_android.h" |
9 #include "content/browser/accessibility/web_contents_accessibility_android.h" | 9 #include "content/browser/accessibility/web_contents_accessibility_android.h" |
10 #include "content/common/accessibility_messages.h" | 10 #include "content/common/accessibility_messages.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 // fire an event for those changes, but we do want to make sure our internal | 106 // fire an event for those changes, but we do want to make sure our internal |
107 // state is correct, so we call OnDataChanged() and then return. | 107 // state is correct, so we call OnDataChanged() and then return. |
108 if (android_node->IsPassword() && original_node != node) { | 108 if (android_node->IsPassword() && original_node != node) { |
109 android_node->OnDataChanged(); | 109 android_node->OnDataChanged(); |
110 return; | 110 return; |
111 } | 111 } |
112 | 112 |
113 // Always send AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED to notify | 113 // Always send AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED to notify |
114 // the Android system that the accessibility hierarchy rooted at this | 114 // the Android system that the accessibility hierarchy rooted at this |
115 // node has changed. | 115 // node has changed. |
116 wcax->HandleContentChanged(node->unique_id()); | 116 wcax->HandleContentChanged(android_node->unique_id()); |
117 | 117 |
118 // Ignore load complete events on iframes. | 118 // Ignore load complete events on iframes. |
119 if (event_type == ui::AX_EVENT_LOAD_COMPLETE && | 119 if (event_type == ui::AX_EVENT_LOAD_COMPLETE && |
120 node->manager() != GetRootManager()) { | 120 node->manager() != GetRootManager()) { |
121 return; | 121 return; |
122 } | 122 } |
123 | 123 |
124 switch (event_type) { | 124 switch (event_type) { |
125 case ui::AX_EVENT_LOAD_COMPLETE: | 125 case ui::AX_EVENT_LOAD_COMPLETE: { |
126 wcax->HandlePageLoaded(GetFocus()->unique_id()); | 126 auto* android_focused = |
127 break; | 127 static_cast<BrowserAccessibilityAndroid*>(GetFocus()); |
| 128 wcax->HandlePageLoaded(android_focused->unique_id()); |
| 129 } break; |
128 case ui::AX_EVENT_FOCUS: | 130 case ui::AX_EVENT_FOCUS: |
129 wcax->HandleFocusChanged(node->unique_id()); | 131 wcax->HandleFocusChanged(android_node->unique_id()); |
130 break; | 132 break; |
131 case ui::AX_EVENT_CHECKED_STATE_CHANGED: | 133 case ui::AX_EVENT_CHECKED_STATE_CHANGED: |
132 wcax->HandleCheckStateChanged(node->unique_id()); | 134 wcax->HandleCheckStateChanged(android_node->unique_id()); |
133 break; | 135 break; |
134 case ui::AX_EVENT_CLICKED: | 136 case ui::AX_EVENT_CLICKED: |
135 wcax->HandleClicked(node->unique_id()); | 137 wcax->HandleClicked(android_node->unique_id()); |
136 break; | 138 break; |
137 case ui::AX_EVENT_SCROLL_POSITION_CHANGED: | 139 case ui::AX_EVENT_SCROLL_POSITION_CHANGED: |
138 wcax->HandleScrollPositionChanged(node->unique_id()); | 140 wcax->HandleScrollPositionChanged(android_node->unique_id()); |
139 break; | 141 break; |
140 case ui::AX_EVENT_SCROLLED_TO_ANCHOR: | 142 case ui::AX_EVENT_SCROLLED_TO_ANCHOR: |
141 wcax->HandleScrolledToAnchor(node->unique_id()); | 143 wcax->HandleScrolledToAnchor(android_node->unique_id()); |
142 break; | 144 break; |
143 case ui::AX_EVENT_ALERT: | 145 case ui::AX_EVENT_ALERT: |
144 // An alert is a special case of live region. Fall through to the | 146 // An alert is a special case of live region. Fall through to the |
145 // next case to handle it. | 147 // next case to handle it. |
146 case ui::AX_EVENT_SHOW: { | 148 case ui::AX_EVENT_SHOW: { |
147 // This event is fired when an object appears in a live region. | 149 // This event is fired when an object appears in a live region. |
148 // Speak its text. | 150 // Speak its text. |
149 base::string16 text = android_node->GetText(); | 151 base::string16 text = android_node->GetText(); |
150 wcax->AnnounceLiveRegionText(text); | 152 wcax->AnnounceLiveRegionText(text); |
151 break; | 153 break; |
152 } | 154 } |
153 case ui::AX_EVENT_TEXT_SELECTION_CHANGED: | 155 case ui::AX_EVENT_TEXT_SELECTION_CHANGED: |
154 wcax->HandleTextSelectionChanged(node->unique_id()); | 156 wcax->HandleTextSelectionChanged(android_node->unique_id()); |
155 break; | 157 break; |
156 case ui::AX_EVENT_TEXT_CHANGED: | 158 case ui::AX_EVENT_TEXT_CHANGED: |
157 case ui::AX_EVENT_VALUE_CHANGED: | 159 case ui::AX_EVENT_VALUE_CHANGED: |
158 if (android_node->IsEditableText() && GetFocus() == node) { | 160 if (android_node->IsEditableText() && GetFocus() == node) { |
159 wcax->HandleEditableTextChanged(node->unique_id()); | 161 wcax->HandleEditableTextChanged(android_node->unique_id()); |
160 } else if (android_node->IsSlider()) { | 162 } else if (android_node->IsSlider()) { |
161 wcax->HandleSliderChanged(node->unique_id()); | 163 wcax->HandleSliderChanged(android_node->unique_id()); |
162 } | 164 } |
163 break; | 165 break; |
164 default: | 166 default: |
165 // There are some notifications that aren't meaningful on Android. | 167 // There are some notifications that aren't meaningful on Android. |
166 // It's okay to skip them. | 168 // It's okay to skip them. |
167 break; | 169 break; |
168 } | 170 } |
169 } | 171 } |
170 | 172 |
171 void BrowserAccessibilityManagerAndroid::SendLocationChangeEvents( | 173 void BrowserAccessibilityManagerAndroid::SendLocationChangeEvents( |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 BrowserAccessibility* parent_node = GetParentNodeFromParentTree(); | 338 BrowserAccessibility* parent_node = GetParentNodeFromParentTree(); |
337 if (!parent_node) | 339 if (!parent_node) |
338 return web_contents_accessibility_; | 340 return web_contents_accessibility_; |
339 | 341 |
340 auto* parent_manager = | 342 auto* parent_manager = |
341 static_cast<BrowserAccessibilityManagerAndroid*>(parent_node->manager()); | 343 static_cast<BrowserAccessibilityManagerAndroid*>(parent_node->manager()); |
342 return parent_manager->GetWebContentsAXFromRootManager(); | 344 return parent_manager->GetWebContentsAXFromRootManager(); |
343 } | 345 } |
344 | 346 |
345 } // namespace content | 347 } // namespace content |
OLD | NEW |