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

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: Added test skeleton. 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 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;
}

Powered by Google App Engine
This is Rietveld 408576698