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 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 parent_relative_rect.Offset(-parent_rect.OffsetFromOrigin()); | 221 parent_relative_rect.Offset(-parent_rect.OffsetFromOrigin()); |
222 } | 222 } |
223 bool is_root = node->parent() == NULL; | 223 bool is_root = node->parent() == NULL; |
224 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoLocation( | 224 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoLocation( |
225 env, obj, info, | 225 env, obj, info, |
226 absolute_rect.x(), absolute_rect.y(), | 226 absolute_rect.x(), absolute_rect.y(), |
227 parent_relative_rect.x(), parent_relative_rect.y(), | 227 parent_relative_rect.x(), parent_relative_rect.y(), |
228 absolute_rect.width(), absolute_rect.height(), | 228 absolute_rect.width(), absolute_rect.height(), |
229 is_root); | 229 is_root); |
230 | 230 |
| 231 // New KitKat APIs |
| 232 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoKitKatAttributes( |
| 233 env, obj, info, |
| 234 node->CanOpenPopup(), |
| 235 node->IsContentInvalid(), |
| 236 node->IsDismissable(), |
| 237 node->IsMultiLine(), |
| 238 node->AndroidInputType(), |
| 239 node->AndroidLiveRegionType()); |
| 240 if (node->IsCollection()) { |
| 241 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoCollectionInfo( |
| 242 env, obj, info, |
| 243 node->RowCount(), |
| 244 node->ColumnCount(), |
| 245 node->IsHierarchical()); |
| 246 } |
| 247 if (node->IsCollectionItem() || node->IsHeading()) { |
| 248 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoCollectionItemInfo( |
| 249 env, obj, info, |
| 250 node->RowIndex(), |
| 251 node->RowSpan(), |
| 252 node->ColumnIndex(), |
| 253 node->ColumnSpan(), |
| 254 node->IsHeading()); |
| 255 } |
| 256 if (node->IsRangeType()) { |
| 257 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoRangeInfo( |
| 258 env, obj, info, |
| 259 node->AndroidRangeType(), |
| 260 node->RangeMin(), |
| 261 node->RangeMax(), |
| 262 node->RangeCurrentValue()); |
| 263 } |
| 264 |
231 return true; | 265 return true; |
232 } | 266 } |
233 | 267 |
234 jboolean BrowserAccessibilityManagerAndroid::PopulateAccessibilityEvent( | 268 jboolean BrowserAccessibilityManagerAndroid::PopulateAccessibilityEvent( |
235 JNIEnv* env, jobject obj, jobject event, jint id, jint event_type) { | 269 JNIEnv* env, jobject obj, jobject event, jint id, jint event_type) { |
236 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( | 270 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( |
237 GetFromRendererID(id)); | 271 GetFromRendererID(id)); |
238 if (!node) | 272 if (!node) |
239 return false; | 273 return false; |
240 | 274 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 env, obj, event, | 308 env, obj, event, |
275 node->GetSelectionStart(), | 309 node->GetSelectionStart(), |
276 node->GetSelectionEnd(), | 310 node->GetSelectionEnd(), |
277 node->GetEditableTextLength(), | 311 node->GetEditableTextLength(), |
278 base::android::ConvertUTF16ToJavaString(env, node->GetText()).obj()); | 312 base::android::ConvertUTF16ToJavaString(env, node->GetText()).obj()); |
279 break; | 313 break; |
280 default: | 314 default: |
281 break; | 315 break; |
282 } | 316 } |
283 | 317 |
| 318 // Backwards-compatible fallback for new KitKat APIs. |
| 319 Java_BrowserAccessibilityManager_setAccessibilityEventKitKatAttributes( |
| 320 env, obj, event, |
| 321 node->CanOpenPopup(), |
| 322 node->IsContentInvalid(), |
| 323 node->IsDismissable(), |
| 324 node->IsMultiLine(), |
| 325 node->AndroidInputType(), |
| 326 node->AndroidLiveRegionType()); |
| 327 if (node->IsCollection()) { |
| 328 Java_BrowserAccessibilityManager_setAccessibilityEventCollectionInfo( |
| 329 env, obj, event, |
| 330 node->RowCount(), |
| 331 node->ColumnCount(), |
| 332 node->IsHierarchical()); |
| 333 } |
| 334 if (node->IsCollectionItem() || node->IsHeading()) { |
| 335 Java_BrowserAccessibilityManager_setAccessibilityEventCollectionItemInfo( |
| 336 env, obj, event, |
| 337 node->RowIndex(), |
| 338 node->RowSpan(), |
| 339 node->ColumnIndex(), |
| 340 node->ColumnSpan(), |
| 341 node->IsHeading()); |
| 342 } |
| 343 if (node->IsRangeType()) { |
| 344 Java_BrowserAccessibilityManager_setAccessibilityEventRangeInfo( |
| 345 env, obj, event, |
| 346 node->AndroidRangeType(), |
| 347 node->RangeMin(), |
| 348 node->RangeMax(), |
| 349 node->RangeCurrentValue()); |
| 350 } |
| 351 |
284 return true; | 352 return true; |
285 } | 353 } |
286 | 354 |
287 void BrowserAccessibilityManagerAndroid::Click( | 355 void BrowserAccessibilityManagerAndroid::Click( |
288 JNIEnv* env, jobject obj, jint id) { | 356 JNIEnv* env, jobject obj, jint id) { |
289 BrowserAccessibility* node = GetFromRendererID(id); | 357 BrowserAccessibility* node = GetFromRendererID(id); |
290 if (node) | 358 if (node) |
291 DoDefaultAction(*node); | 359 DoDefaultAction(*node); |
292 } | 360 } |
293 | 361 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { | 434 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { |
367 // The Java layer handles the root scroll offset. | 435 // The Java layer handles the root scroll offset. |
368 return false; | 436 return false; |
369 } | 437 } |
370 | 438 |
371 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { | 439 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { |
372 return RegisterNativesImpl(env); | 440 return RegisterNativesImpl(env); |
373 } | 441 } |
374 | 442 |
375 } // namespace content | 443 } // namespace content |
OLD | NEW |