Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Unified Diff: content/browser/accessibility/browser_accessibility_cocoa.mm

Issue 2271893002: Creates AXPosition to uniquely identify a position in the accessibility tree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed AXRange class. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 c844cdb09abb09cb113faab19f84abbb7570f3a6..5f14d665699a2a4385974b3e2db5ceea8c591428 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,16 @@ 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, 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 +159,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->text_offset();
if (*offset < 0)
return false;
- *affinity = marker_data->affinity;
-
+ *affinity = marker_data->affinity();
return true;
}

Powered by Google App Engine
This is Rietveld 408576698