| 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 cca823d03b6b15222eb5c886e226b062133b4a63..ebd49012ee5c50859a402a5c3ef90a512b4c1cc0 100644
|
| --- a/content/browser/accessibility/browser_accessibility_cocoa.mm
|
| +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
|
| @@ -16,6 +16,7 @@
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "content/app/strings/grit/content_strings.h"
|
| +#include "content/browser/accessibility/ax_platform_position.h"
|
| #include "content/browser/accessibility/browser_accessibility_mac.h"
|
| #include "content/browser/accessibility/browser_accessibility_manager.h"
|
| #include "content/browser/accessibility/browser_accessibility_manager_mac.h"
|
| @@ -94,13 +95,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;
|
|
|
| @@ -134,14 +128,17 @@ 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);
|
| + auto marker_data = AXPlatformPosition::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)));
|
| + kCFAllocatorDefault, reinterpret_cast<const UInt8*>(marker_data),
|
| + sizeof(*marker_data)));
|
| }
|
|
|
| id CreateTextMarkerRange(const BrowserAccessibility& start_object,
|
| @@ -163,26 +160,20 @@ bool GetTextMarkerData(AXTextMarkerRef text_marker,
|
| ui::AXTextAffinity* affinity) {
|
| DCHECK(text_marker);
|
| DCHECK(object && offset);
|
| - const auto* marker_data = reinterpret_cast<const AXTextMarkerData*>(
|
| + const auto* marker_data = reinterpret_cast<const AXPlatformPosition*>(
|
| 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;
|
| }
|
|
|
|
|