| 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 |