Chromium Code Reviews| Index: content/browser/accessibility/browser_accessibility_cocoa.mm |
| diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm |
| index a0a8338f3f294ec228f5613173c49785afc1e264..de60caee54cb1e2175bd2d0e9d62a93999100a39 100644 |
| --- a/content/browser/accessibility/browser_accessibility_cocoa.mm |
| +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm |
| @@ -22,6 +22,8 @@ |
| #include "content/browser/accessibility/one_shot_accessibility_tree_search.h" |
| #include "content/public/common/content_client.h" |
| #include "third_party/skia/include/core/SkColor.h" |
| +#include "ui/accessibility/ax_position.h" |
| +#include "ui/accessibility/ax_range.h" |
| #import "ui/accessibility/platform/ax_platform_node_mac.h" |
| using content::AXTreeIDRegistry; |
| @@ -94,13 +96,6 @@ NSString* const NSAccessibilityScrollToVisibleAction = @"AXScrollToVisible"; |
| // A mapping from an accessibility attribute to its method name. |
| NSDictionary* attributeToMethodNameMap = nil; |
| -struct AXTextMarkerData { |
| - AXTreeIDRegistry::AXTreeID tree_id; |
| - int32_t node_id; |
| - int offset; |
| - ui::AXTextAffinity affinity; |
| -}; |
| - |
| // VoiceOver uses -1 to mean "no limit" for AXResultsLimit. |
| const int kAXResultsLimitNoLimit = -1; |
| @@ -139,11 +134,15 @@ AXTextMarkerRef AXTextMarkerRangeCopyEndMarker( |
| id CreateTextMarker(const BrowserAccessibility& object, |
| int offset, |
| ui::AXTextAffinity affinity) { |
| - AXTextMarkerData marker_data; |
| - marker_data.tree_id = object.manager() ? object.manager()->ax_tree_id() : -1; |
| - marker_data.node_id = object.GetId(); |
| - marker_data.offset = offset; |
| - marker_data.affinity = affinity; |
| + if (!object.instance_active()) |
| + return nil; |
| + |
| + const auto manager = object.manager(); |
| + DCHECK(manager); |
| + const AXPlatformPositionFactory factory; |
|
dmazzoni
2016/10/05 18:15:30
I'm assuming this needs to be updated?
I think cr
|
| + AXPosition marker_data = factory.CreateTextPosition(manager->ax_tree_id(), |
| + object.node_id(), offset); |
| + marker_data.set_affinity(affinity); |
| return (id)base::mac::CFTypeRefToNSObjectAutorelease(AXTextMarkerCreate( |
| kCFAllocatorDefault, reinterpret_cast<const UInt8*>(&marker_data), |
| sizeof(marker_data))); |
| @@ -168,26 +167,20 @@ bool GetTextMarkerData(AXTextMarkerRef text_marker, |
| ui::AXTextAffinity* affinity) { |
| DCHECK(text_marker); |
| DCHECK(object && offset); |
| - const auto* marker_data = reinterpret_cast<const AXTextMarkerData*>( |
| - AXTextMarkerGetBytePtr(text_marker)); |
| + const auto* marker_data = |
| + reinterpret_cast<const AXPosition*>(AXTextMarkerGetBytePtr(text_marker)); |
| if (!marker_data) |
| return false; |
| - const BrowserAccessibilityManager* manager = |
| - BrowserAccessibilityManager::FromID(marker_data->tree_id); |
| - if (!manager) |
| - return false; |
| - |
| - *object = manager->GetFromID(marker_data->node_id); |
| + *object = marker_data->GetAnchor(); |
| if (!*object) |
| return false; |
| - *offset = marker_data->offset; |
| + *offset = marker_data->get_text_offset(); |
| if (*offset < 0) |
| return false; |
| - *affinity = marker_data->affinity; |
| - |
| + *affinity = marker_data->get_affinity(); |
| return true; |
| } |