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 <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 namespace content { | 36 namespace content { |
37 | 37 |
38 namespace aria_strings { | 38 namespace aria_strings { |
39 const char kAriaLivePolite[] = "polite"; | 39 const char kAriaLivePolite[] = "polite"; |
40 const char kAriaLiveAssertive[] = "assertive"; | 40 const char kAriaLiveAssertive[] = "assertive"; |
41 } | 41 } |
42 | 42 |
43 // static | 43 // static |
44 BrowserAccessibilityManager* BrowserAccessibilityManager::Create( | 44 BrowserAccessibilityManager* BrowserAccessibilityManager::Create( |
45 const AccessibilityNodeData& src, | 45 const ui::AXNodeData& src, |
46 BrowserAccessibilityDelegate* delegate, | 46 BrowserAccessibilityDelegate* delegate, |
47 BrowserAccessibilityFactory* factory) { | 47 BrowserAccessibilityFactory* factory) { |
48 return new BrowserAccessibilityManagerAndroid(ScopedJavaLocalRef<jobject>(), | 48 return new BrowserAccessibilityManagerAndroid(ScopedJavaLocalRef<jobject>(), |
49 src, delegate, factory); | 49 src, delegate, factory); |
50 } | 50 } |
51 | 51 |
52 BrowserAccessibilityManagerAndroid* | 52 BrowserAccessibilityManagerAndroid* |
53 BrowserAccessibilityManager::ToBrowserAccessibilityManagerAndroid() { | 53 BrowserAccessibilityManager::ToBrowserAccessibilityManagerAndroid() { |
54 return static_cast<BrowserAccessibilityManagerAndroid*>(this); | 54 return static_cast<BrowserAccessibilityManagerAndroid*>(this); |
55 } | 55 } |
56 | 56 |
57 BrowserAccessibilityManagerAndroid::BrowserAccessibilityManagerAndroid( | 57 BrowserAccessibilityManagerAndroid::BrowserAccessibilityManagerAndroid( |
58 ScopedJavaLocalRef<jobject> content_view_core, | 58 ScopedJavaLocalRef<jobject> content_view_core, |
59 const AccessibilityNodeData& src, | 59 const ui::AXNodeData& src, |
60 BrowserAccessibilityDelegate* delegate, | 60 BrowserAccessibilityDelegate* delegate, |
61 BrowserAccessibilityFactory* factory) | 61 BrowserAccessibilityFactory* factory) |
62 : BrowserAccessibilityManager(src, delegate, factory) { | 62 : BrowserAccessibilityManager(src, delegate, factory) { |
63 SetContentViewCore(content_view_core); | 63 SetContentViewCore(content_view_core); |
64 } | 64 } |
65 | 65 |
66 BrowserAccessibilityManagerAndroid::~BrowserAccessibilityManagerAndroid() { | 66 BrowserAccessibilityManagerAndroid::~BrowserAccessibilityManagerAndroid() { |
67 JNIEnv* env = AttachCurrentThread(); | 67 JNIEnv* env = AttachCurrentThread(); |
68 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 68 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
69 if (obj.is_null()) | 69 if (obj.is_null()) |
70 return; | 70 return; |
71 | 71 |
72 Java_BrowserAccessibilityManager_onNativeObjectDestroyed(env, obj.obj()); | 72 Java_BrowserAccessibilityManager_onNativeObjectDestroyed(env, obj.obj()); |
73 } | 73 } |
74 | 74 |
75 // static | 75 // static |
76 AccessibilityNodeData BrowserAccessibilityManagerAndroid::GetEmptyDocument() { | 76 ui::AXNodeData BrowserAccessibilityManagerAndroid::GetEmptyDocument() { |
77 AccessibilityNodeData empty_document; | 77 ui::AXNodeData empty_document; |
78 empty_document.id = 0; | 78 empty_document.id = 0; |
79 empty_document.role = blink::WebAXRoleRootWebArea; | 79 empty_document.role = ui::AX_ROLE_ROOT_WEB_AREA; |
80 empty_document.state = 1 << blink::WebAXStateReadonly; | 80 empty_document.state = 1 << ui::AX_STATE_READONLY; |
81 return empty_document; | 81 return empty_document; |
82 } | 82 } |
83 | 83 |
84 void BrowserAccessibilityManagerAndroid::SetContentViewCore( | 84 void BrowserAccessibilityManagerAndroid::SetContentViewCore( |
85 ScopedJavaLocalRef<jobject> content_view_core) { | 85 ScopedJavaLocalRef<jobject> content_view_core) { |
86 if (content_view_core.is_null()) | 86 if (content_view_core.is_null()) |
87 return; | 87 return; |
88 | 88 |
89 JNIEnv* env = AttachCurrentThread(); | 89 JNIEnv* env = AttachCurrentThread(); |
90 java_ref_ = JavaObjectWeakGlobalRef( | 90 java_ref_ = JavaObjectWeakGlobalRef( |
91 env, Java_BrowserAccessibilityManager_create( | 91 env, Java_BrowserAccessibilityManager_create( |
92 env, reinterpret_cast<intptr_t>(this), | 92 env, reinterpret_cast<intptr_t>(this), |
93 content_view_core.obj()).obj()); | 93 content_view_core.obj()).obj()); |
94 } | 94 } |
95 | 95 |
96 void BrowserAccessibilityManagerAndroid::NotifyAccessibilityEvent( | 96 void BrowserAccessibilityManagerAndroid::NotifyAccessibilityEvent( |
97 blink::WebAXEvent event_type, | 97 ui::AXEvent event_type, |
98 BrowserAccessibility* node) { | 98 BrowserAccessibility* node) { |
99 JNIEnv* env = AttachCurrentThread(); | 99 JNIEnv* env = AttachCurrentThread(); |
100 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 100 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
101 if (obj.is_null()) | 101 if (obj.is_null()) |
102 return; | 102 return; |
103 | 103 |
104 if (event_type == blink::WebAXEventHide) | 104 if (event_type == ui::AX_EVENT_HIDE) |
105 return; | 105 return; |
106 | 106 |
107 // Always send AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED to notify | 107 // Always send AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED to notify |
108 // the Android system that the accessibility hierarchy rooted at this | 108 // the Android system that the accessibility hierarchy rooted at this |
109 // node has changed. | 109 // node has changed. |
110 Java_BrowserAccessibilityManager_handleContentChanged( | 110 Java_BrowserAccessibilityManager_handleContentChanged( |
111 env, obj.obj(), node->renderer_id()); | 111 env, obj.obj(), node->renderer_id()); |
112 | 112 |
113 switch (event_type) { | 113 switch (event_type) { |
114 case blink::WebAXEventLoadComplete: | 114 case ui::AX_EVENT_LOAD_COMPLETE: |
115 Java_BrowserAccessibilityManager_handlePageLoaded( | 115 Java_BrowserAccessibilityManager_handlePageLoaded( |
116 env, obj.obj(), focus_->renderer_id()); | 116 env, obj.obj(), focus_->renderer_id()); |
117 break; | 117 break; |
118 case blink::WebAXEventFocus: | 118 case ui::AX_EVENT_FOCUS: |
119 Java_BrowserAccessibilityManager_handleFocusChanged( | 119 Java_BrowserAccessibilityManager_handleFocusChanged( |
120 env, obj.obj(), node->renderer_id()); | 120 env, obj.obj(), node->renderer_id()); |
121 break; | 121 break; |
122 case blink::WebAXEventCheckedStateChanged: | 122 case ui::AX_EVENT_CHECKED_STATE_CHANGED: |
123 Java_BrowserAccessibilityManager_handleCheckStateChanged( | 123 Java_BrowserAccessibilityManager_handleCheckStateChanged( |
124 env, obj.obj(), node->renderer_id()); | 124 env, obj.obj(), node->renderer_id()); |
125 break; | 125 break; |
126 case blink::WebAXEventScrolledToAnchor: | 126 case ui::AX_EVENT_SCROLLED_TO_ANCHOR: |
127 Java_BrowserAccessibilityManager_handleScrolledToAnchor( | 127 Java_BrowserAccessibilityManager_handleScrolledToAnchor( |
128 env, obj.obj(), node->renderer_id()); | 128 env, obj.obj(), node->renderer_id()); |
129 break; | 129 break; |
130 case blink::WebAXEventAlert: | 130 case ui::AX_EVENT_ALERT: |
131 // An alert is a special case of live region. Fall through to the | 131 // An alert is a special case of live region. Fall through to the |
132 // next case to handle it. | 132 // next case to handle it. |
133 case blink::WebAXEventShow: { | 133 case ui::AX_EVENT_SHOW: { |
134 // This event is fired when an object appears in a live region. | 134 // This event is fired when an object appears in a live region. |
135 // Speak its text. | 135 // Speak its text. |
136 BrowserAccessibilityAndroid* android_node = | 136 BrowserAccessibilityAndroid* android_node = |
137 static_cast<BrowserAccessibilityAndroid*>(node); | 137 static_cast<BrowserAccessibilityAndroid*>(node); |
138 Java_BrowserAccessibilityManager_announceLiveRegionText( | 138 Java_BrowserAccessibilityManager_announceLiveRegionText( |
139 env, obj.obj(), | 139 env, obj.obj(), |
140 base::android::ConvertUTF16ToJavaString( | 140 base::android::ConvertUTF16ToJavaString( |
141 env, android_node->GetText()).obj()); | 141 env, android_node->GetText()).obj()); |
142 break; | 142 break; |
143 } | 143 } |
144 case blink::WebAXEventSelectedTextChanged: | 144 case ui::AX_EVENT_SELECTED_TEXT_CHANGED: |
145 Java_BrowserAccessibilityManager_handleTextSelectionChanged( | 145 Java_BrowserAccessibilityManager_handleTextSelectionChanged( |
146 env, obj.obj(), node->renderer_id()); | 146 env, obj.obj(), node->renderer_id()); |
147 break; | 147 break; |
148 case blink::WebAXEventChildrenChanged: | 148 case ui::AX_EVENT_CHILDREN_CHANGED: |
149 case blink::WebAXEventTextChanged: | 149 case ui::AX_EVENT_TEXT_CHANGED: |
150 case blink::WebAXEventValueChanged: | 150 case ui::AX_EVENT_VALUE_CHANGED: |
151 if (node->IsEditableText()) { | 151 if (node->IsEditableText()) { |
152 Java_BrowserAccessibilityManager_handleEditableTextChanged( | 152 Java_BrowserAccessibilityManager_handleEditableTextChanged( |
153 env, obj.obj(), node->renderer_id()); | 153 env, obj.obj(), node->renderer_id()); |
154 } | 154 } |
155 break; | 155 break; |
156 default: | 156 default: |
157 // There are some notifications that aren't meaningful on Android. | 157 // There are some notifications that aren't meaningful on Android. |
158 // It's okay to skip them. | 158 // It's okay to skip them. |
159 break; | 159 break; |
160 } | 160 } |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { | 443 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { |
444 // The Java layer handles the root scroll offset. | 444 // The Java layer handles the root scroll offset. |
445 return false; | 445 return false; |
446 } | 446 } |
447 | 447 |
448 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { | 448 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { |
449 return RegisterNativesImpl(env); | 449 return RegisterNativesImpl(env); |
450 } | 450 } |
451 | 451 |
452 } // namespace content | 452 } // namespace content |
OLD | NEW |