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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 AccessibilityNodeData BrowserAccessibilityManagerAndroid::GetEmptyDocument() { |
77 AccessibilityNodeData empty_document; | 77 AccessibilityNodeData empty_document; |
78 empty_document.id = 0; | 78 empty_document.id = 0; |
79 empty_document.role = WebKit::WebAXRoleRootWebArea; | 79 empty_document.role = blink::WebAXRoleRootWebArea; |
80 empty_document.state = 1 << WebKit::WebAXStateReadonly; | 80 empty_document.state = 1 << blink::WebAXStateReadonly; |
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<jint>(this), content_view_core.obj()).obj()); | 92 env, reinterpret_cast<jint>(this), content_view_core.obj()).obj()); |
93 } | 93 } |
94 | 94 |
95 void BrowserAccessibilityManagerAndroid::NotifyAccessibilityEvent( | 95 void BrowserAccessibilityManagerAndroid::NotifyAccessibilityEvent( |
96 WebKit::WebAXEvent event_type, | 96 blink::WebAXEvent event_type, |
97 BrowserAccessibility* node) { | 97 BrowserAccessibility* node) { |
98 JNIEnv* env = AttachCurrentThread(); | 98 JNIEnv* env = AttachCurrentThread(); |
99 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 99 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
100 if (obj.is_null()) | 100 if (obj.is_null()) |
101 return; | 101 return; |
102 | 102 |
103 // Always send AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED to notify | 103 // Always send AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED to notify |
104 // the Android system that the accessibility hierarchy rooted at this | 104 // the Android system that the accessibility hierarchy rooted at this |
105 // node has changed. | 105 // node has changed. |
106 Java_BrowserAccessibilityManager_handleContentChanged( | 106 Java_BrowserAccessibilityManager_handleContentChanged( |
107 env, obj.obj(), node->renderer_id()); | 107 env, obj.obj(), node->renderer_id()); |
108 | 108 |
109 switch (event_type) { | 109 switch (event_type) { |
110 case WebKit::WebAXEventLoadComplete: | 110 case blink::WebAXEventLoadComplete: |
111 Java_BrowserAccessibilityManager_handlePageLoaded( | 111 Java_BrowserAccessibilityManager_handlePageLoaded( |
112 env, obj.obj(), focus_->renderer_id()); | 112 env, obj.obj(), focus_->renderer_id()); |
113 break; | 113 break; |
114 case WebKit::WebAXEventFocus: | 114 case blink::WebAXEventFocus: |
115 Java_BrowserAccessibilityManager_handleFocusChanged( | 115 Java_BrowserAccessibilityManager_handleFocusChanged( |
116 env, obj.obj(), node->renderer_id()); | 116 env, obj.obj(), node->renderer_id()); |
117 break; | 117 break; |
118 case WebKit::WebAXEventCheckedStateChanged: | 118 case blink::WebAXEventCheckedStateChanged: |
119 Java_BrowserAccessibilityManager_handleCheckStateChanged( | 119 Java_BrowserAccessibilityManager_handleCheckStateChanged( |
120 env, obj.obj(), node->renderer_id()); | 120 env, obj.obj(), node->renderer_id()); |
121 break; | 121 break; |
122 case WebKit::WebAXEventScrolledToAnchor: | 122 case blink::WebAXEventScrolledToAnchor: |
123 Java_BrowserAccessibilityManager_handleScrolledToAnchor( | 123 Java_BrowserAccessibilityManager_handleScrolledToAnchor( |
124 env, obj.obj(), node->renderer_id()); | 124 env, obj.obj(), node->renderer_id()); |
125 break; | 125 break; |
126 case WebKit::WebAXEventAlert: | 126 case blink::WebAXEventAlert: |
127 // An alert is a special case of live region. Fall through to the | 127 // An alert is a special case of live region. Fall through to the |
128 // next case to handle it. | 128 // next case to handle it. |
129 case WebKit::WebAXEventShow: { | 129 case blink::WebAXEventShow: { |
130 // This event is fired when an object appears in a live region. | 130 // This event is fired when an object appears in a live region. |
131 // Speak its text. | 131 // Speak its text. |
132 BrowserAccessibilityAndroid* android_node = | 132 BrowserAccessibilityAndroid* android_node = |
133 static_cast<BrowserAccessibilityAndroid*>(node); | 133 static_cast<BrowserAccessibilityAndroid*>(node); |
134 Java_BrowserAccessibilityManager_announceLiveRegionText( | 134 Java_BrowserAccessibilityManager_announceLiveRegionText( |
135 env, obj.obj(), | 135 env, obj.obj(), |
136 base::android::ConvertUTF16ToJavaString( | 136 base::android::ConvertUTF16ToJavaString( |
137 env, android_node->GetText()).obj()); | 137 env, android_node->GetText()).obj()); |
138 break; | 138 break; |
139 } | 139 } |
140 case WebKit::WebAXEventSelectedTextChanged: | 140 case blink::WebAXEventSelectedTextChanged: |
141 Java_BrowserAccessibilityManager_handleTextSelectionChanged( | 141 Java_BrowserAccessibilityManager_handleTextSelectionChanged( |
142 env, obj.obj(), node->renderer_id()); | 142 env, obj.obj(), node->renderer_id()); |
143 break; | 143 break; |
144 case WebKit::WebAXEventChildrenChanged: | 144 case blink::WebAXEventChildrenChanged: |
145 case WebKit::WebAXEventTextChanged: | 145 case blink::WebAXEventTextChanged: |
146 case WebKit::WebAXEventValueChanged: | 146 case blink::WebAXEventValueChanged: |
147 if (node->IsEditableText()) { | 147 if (node->IsEditableText()) { |
148 Java_BrowserAccessibilityManager_handleEditableTextChanged( | 148 Java_BrowserAccessibilityManager_handleEditableTextChanged( |
149 env, obj.obj(), node->renderer_id()); | 149 env, obj.obj(), node->renderer_id()); |
150 } | 150 } |
151 break; | 151 break; |
152 default: | 152 default: |
153 // There are some notifications that aren't meaningful on Android. | 153 // There are some notifications that aren't meaningful on Android. |
154 // It's okay to skip them. | 154 // It's okay to skip them. |
155 break; | 155 break; |
156 } | 156 } |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { | 366 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { |
367 // The Java layer handles the root scroll offset. | 367 // The Java layer handles the root scroll offset. |
368 return false; | 368 return false; |
369 } | 369 } |
370 | 370 |
371 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { | 371 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { |
372 return RegisterNativesImpl(env); | 372 return RegisterNativesImpl(env); |
373 } | 373 } |
374 | 374 |
375 } // namespace content | 375 } // namespace content |
OLD | NEW |