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 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 JNIEnv* env, jobject obj, jobject info, jint id) { | 175 JNIEnv* env, jobject obj, jobject info, jint id) { |
176 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( | 176 BrowserAccessibilityAndroid* node = static_cast<BrowserAccessibilityAndroid*>( |
177 GetFromRendererID(id)); | 177 GetFromRendererID(id)); |
178 if (!node) | 178 if (!node) |
179 return false; | 179 return false; |
180 | 180 |
181 if (node->parent()) { | 181 if (node->parent()) { |
182 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoParent( | 182 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoParent( |
183 env, obj, info, node->parent()->renderer_id()); | 183 env, obj, info, node->parent()->renderer_id()); |
184 } | 184 } |
185 if (!node->IsLeaf()) { | 185 for (unsigned i = 0; i < node->PlatformChildCount(); ++i) { |
186 for (unsigned i = 0; i < node->child_count(); ++i) { | 186 Java_BrowserAccessibilityManager_addAccessibilityNodeInfoChild( |
187 Java_BrowserAccessibilityManager_addAccessibilityNodeInfoChild( | 187 env, obj, info, node->children()[i]->renderer_id()); |
188 env, obj, info, node->children()[i]->renderer_id()); | |
189 } | |
190 } | 188 } |
191 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoBooleanAttributes( | 189 Java_BrowserAccessibilityManager_setAccessibilityNodeInfoBooleanAttributes( |
192 env, obj, info, | 190 env, obj, info, |
193 id, | 191 id, |
194 node->IsCheckable(), | 192 node->IsCheckable(), |
195 node->IsChecked(), | 193 node->IsChecked(), |
196 node->IsClickable(), | 194 node->IsClickable(), |
197 node->IsEnabled(), | 195 node->IsEnabled(), |
198 node->IsFocusable(), | 196 node->IsFocusable(), |
199 node->IsFocused(), | 197 node->IsFocused(), |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 } | 319 } |
322 | 320 |
323 if (!node->GetText().empty()) { | 321 if (!node->GetText().empty()) { |
324 if (distance < *nearest_distance) { | 322 if (distance < *nearest_distance) { |
325 *nearest_candidate = node; | 323 *nearest_candidate = node; |
326 *nearest_distance = distance; | 324 *nearest_distance = distance; |
327 } | 325 } |
328 return; | 326 return; |
329 } | 327 } |
330 | 328 |
331 if (!node->IsLeaf()) { | 329 for (uint32 i = 0; i < node->PlatformChildCount(); i++) { |
332 for (uint32 i = 0; i < node->child_count(); i++) { | 330 BrowserAccessibility* child = node->PlatformGetChild(i); |
333 BrowserAccessibility* child = node->GetChild(i); | 331 FuzzyHitTestImpl(x, y, child, nearest_candidate, nearest_distance); |
334 FuzzyHitTestImpl(x, y, child, nearest_candidate, nearest_distance); | |
335 } | |
336 } | 332 } |
337 } | 333 } |
338 | 334 |
339 // static | 335 // static |
340 int BrowserAccessibilityManagerAndroid::CalculateDistanceSquared( | 336 int BrowserAccessibilityManagerAndroid::CalculateDistanceSquared( |
341 int x, int y, BrowserAccessibility* node) { | 337 int x, int y, BrowserAccessibility* node) { |
342 gfx::Rect node_bounds = node->GetLocalBoundsRect(); | 338 gfx::Rect node_bounds = node->GetLocalBoundsRect(); |
343 int nearest_x = Clamp(x, node_bounds.x(), node_bounds.right()); | 339 int nearest_x = Clamp(x, node_bounds.x(), node_bounds.right()); |
344 int nearest_y = Clamp(y, node_bounds.y(), node_bounds.bottom()); | 340 int nearest_y = Clamp(y, node_bounds.y(), node_bounds.bottom()); |
345 int dx = std::abs(x - nearest_x); | 341 int dx = std::abs(x - nearest_x); |
(...skipping 14 matching lines...) Expand all Loading... |
360 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { | 356 BrowserAccessibilityManagerAndroid::UseRootScrollOffsetsWhenComputingBounds() { |
361 // The Java layer handles the root scroll offset. | 357 // The Java layer handles the root scroll offset. |
362 return false; | 358 return false; |
363 } | 359 } |
364 | 360 |
365 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { | 361 bool RegisterBrowserAccessibilityManager(JNIEnv* env) { |
366 return RegisterNativesImpl(env); | 362 return RegisterNativesImpl(env); |
367 } | 363 } |
368 | 364 |
369 } // namespace content | 365 } // namespace content |
OLD | NEW |