| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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.h" | 5 #include "content/browser/accessibility/browser_accessibility_manager.h" | 
| 6 | 6 | 
| 7 #include <stddef.h> | 7 #include <stddef.h> | 
| 8 #include <utility> | 8 #include <utility> | 
| 9 | 9 | 
| 10 #include "base/logging.h" | 10 #include "base/logging.h" | 
| (...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 739     return nullptr; | 739     return nullptr; | 
| 740 | 740 | 
| 741   if (object->PlatformChildCount()) | 741   if (object->PlatformChildCount()) | 
| 742     return object->PlatformGetChild(0); | 742     return object->PlatformGetChild(0); | 
| 743 | 743 | 
| 744   while (object) { | 744   while (object) { | 
| 745     BrowserAccessibility* sibling = object->GetNextSibling(); | 745     BrowserAccessibility* sibling = object->GetNextSibling(); | 
| 746     if (sibling) | 746     if (sibling) | 
| 747       return sibling; | 747       return sibling; | 
| 748 | 748 | 
| 749     object = object->GetParent(); | 749     object = object->PlatformGetParent(); | 
| 750   } | 750   } | 
| 751 | 751 | 
| 752   return nullptr; | 752   return nullptr; | 
| 753 } | 753 } | 
| 754 | 754 | 
| 755 // static | 755 // static | 
| 756 // Previous object in tree using depth-first pre-order traversal. | 756 // Previous object in tree using depth-first pre-order traversal. | 
| 757 BrowserAccessibility* BrowserAccessibilityManager::PreviousInTreeOrder( | 757 BrowserAccessibility* BrowserAccessibilityManager::PreviousInTreeOrder( | 
| 758     const BrowserAccessibility* object) { | 758     const BrowserAccessibility* object) { | 
| 759   if (!object) | 759   if (!object) | 
| 760     return nullptr; | 760     return nullptr; | 
| 761 | 761 | 
| 762   BrowserAccessibility* sibling = object->GetPreviousSibling(); | 762   BrowserAccessibility* sibling = object->GetPreviousSibling(); | 
| 763   if (!sibling) | 763   if (!sibling) | 
| 764     return object->GetParent(); | 764     return object->PlatformGetParent(); | 
| 765 | 765 | 
| 766   if (sibling->PlatformChildCount()) | 766   if (sibling->PlatformChildCount()) | 
| 767     return sibling->PlatformDeepestLastChild(); | 767     return sibling->PlatformDeepestLastChild(); | 
| 768 | 768 | 
| 769   return sibling; | 769   return sibling; | 
| 770 } | 770 } | 
| 771 | 771 | 
| 772 // static | 772 // static | 
| 773 BrowserAccessibility* BrowserAccessibilityManager::PreviousTextOnlyObject( | 773 BrowserAccessibility* BrowserAccessibilityManager::PreviousTextOnlyObject( | 
| 774     const BrowserAccessibility* object) { | 774     const BrowserAccessibility* object) { | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 794     const BrowserAccessibility& object1, | 794     const BrowserAccessibility& object1, | 
| 795     const BrowserAccessibility& object2, | 795     const BrowserAccessibility& object2, | 
| 796     BrowserAccessibility** common_parent, | 796     BrowserAccessibility** common_parent, | 
| 797     int* child_index1, | 797     int* child_index1, | 
| 798     int* child_index2) { | 798     int* child_index2) { | 
| 799   DCHECK(common_parent && child_index1 && child_index2); | 799   DCHECK(common_parent && child_index1 && child_index2); | 
| 800   auto* ancestor1 = const_cast<BrowserAccessibility*>(&object1); | 800   auto* ancestor1 = const_cast<BrowserAccessibility*>(&object1); | 
| 801   auto* ancestor2 = const_cast<BrowserAccessibility*>(&object2); | 801   auto* ancestor2 = const_cast<BrowserAccessibility*>(&object2); | 
| 802   do { | 802   do { | 
| 803     *child_index1 = ancestor1->GetIndexInParent(); | 803     *child_index1 = ancestor1->GetIndexInParent(); | 
| 804     ancestor1 = ancestor1->GetParent(); | 804     ancestor1 = ancestor1->PlatformGetParent(); | 
| 805   } while ( | 805   } while ( | 
| 806       ancestor1 && | 806       ancestor1 && | 
| 807       // |BrowserAccessibility::IsAncestorOf| returns true if objects are equal. | 807       // |BrowserAccessibility::IsAncestorOf| returns true if objects are equal. | 
| 808       (ancestor1 == ancestor2 || !ancestor2->IsDescendantOf(ancestor1))); | 808       (ancestor1 == ancestor2 || !ancestor2->IsDescendantOf(ancestor1))); | 
| 809 | 809 | 
| 810   if (!ancestor1) { | 810   if (!ancestor1) { | 
| 811     *common_parent = nullptr; | 811     *common_parent = nullptr; | 
| 812     *child_index1 = -1; | 812     *child_index1 = -1; | 
| 813     *child_index2 = -1; | 813     *child_index2 = -1; | 
| 814     return false; | 814     return false; | 
| 815   } | 815   } | 
| 816 | 816 | 
| 817   do { | 817   do { | 
| 818     *child_index2 = ancestor2->GetIndexInParent(); | 818     *child_index2 = ancestor2->GetIndexInParent(); | 
| 819     ancestor2 = ancestor2->GetParent(); | 819     ancestor2 = ancestor2->PlatformGetParent(); | 
| 820   } while (ancestor1 != ancestor2); | 820   } while (ancestor1 != ancestor2); | 
| 821 | 821 | 
| 822   *common_parent = ancestor1; | 822   *common_parent = ancestor1; | 
| 823   return true; | 823   return true; | 
| 824 } | 824 } | 
| 825 | 825 | 
| 826 // static | 826 // static | 
| 827 ui::AXTreeOrder BrowserAccessibilityManager::CompareNodes( | 827 ui::AXTreeOrder BrowserAccessibilityManager::CompareNodes( | 
| 828     const BrowserAccessibility& object1, | 828     const BrowserAccessibility& object1, | 
| 829     const BrowserAccessibility& object2) { | 829     const BrowserAccessibility& object2) { | 
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1231   // more complicated layouts. The hope is that if the user is moving the | 1231   // more complicated layouts. The hope is that if the user is moving the | 
| 1232   // mouse, this fallback will only be used transiently, and the asynchronous | 1232   // mouse, this fallback will only be used transiently, and the asynchronous | 
| 1233   // result will be used for the next call. | 1233   // result will be used for the next call. | 
| 1234   return GetRoot()->ApproximateHitTest(screen_point); | 1234   return GetRoot()->ApproximateHitTest(screen_point); | 
| 1235 } | 1235 } | 
| 1236 | 1236 | 
| 1237 void BrowserAccessibilityManager::CacheHitTestResult( | 1237 void BrowserAccessibilityManager::CacheHitTestResult( | 
| 1238     BrowserAccessibility* hit_test_result) { | 1238     BrowserAccessibility* hit_test_result) { | 
| 1239   // Walk up to the highest ancestor that's a leaf node; we don't want to | 1239   // Walk up to the highest ancestor that's a leaf node; we don't want to | 
| 1240   // return a node that's hidden from the tree. | 1240   // return a node that's hidden from the tree. | 
| 1241   BrowserAccessibility* parent = hit_test_result->GetParent(); | 1241   BrowserAccessibility* parent = hit_test_result->PlatformGetParent(); | 
| 1242   while (parent) { | 1242   while (parent) { | 
| 1243     if (parent->PlatformChildCount() == 0) | 1243     if (parent->PlatformChildCount() == 0) | 
| 1244       hit_test_result = parent; | 1244       hit_test_result = parent; | 
| 1245     parent = parent->GetParent(); | 1245     parent = parent->PlatformGetParent(); | 
| 1246   } | 1246   } | 
| 1247 | 1247 | 
| 1248   last_hover_ax_tree_id_ = hit_test_result->manager()->ax_tree_id(); | 1248   last_hover_ax_tree_id_ = hit_test_result->manager()->ax_tree_id(); | 
| 1249   last_hover_node_id_ = hit_test_result->GetId(); | 1249   last_hover_node_id_ = hit_test_result->GetId(); | 
| 1250   last_hover_bounds_ = hit_test_result->GetScreenBoundsRect(); | 1250   last_hover_bounds_ = hit_test_result->GetScreenBoundsRect(); | 
| 1251 } | 1251 } | 
| 1252 | 1252 | 
| 1253 }  // namespace content | 1253 }  // namespace content | 
| OLD | NEW | 
|---|