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

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

Issue 2393123002: Implement caching asynchronous accessibility hit testing. (Closed)
Patch Set: Made test more robust 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 cca823d03b6b15222eb5c886e226b062133b4a63..c844cdb09abb09cb113faab19f84abbb7570f3a6 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -2853,25 +2853,15 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
if (![self instanceActive])
return nil;
- BrowserAccessibilityCocoa* hit = self;
- for (BrowserAccessibilityCocoa* child in [self children]) {
- if (!child->browserAccessibility_)
- continue;
- NSPoint origin = [child origin];
- NSSize size = [[child size] sizeValue];
- NSRect rect;
- rect.origin = origin;
- rect.size = size;
- if (NSPointInRect(point, rect)) {
- hit = child;
- id childResult = [child accessibilityHitTest:point];
- if (![childResult accessibilityIsIgnored]) {
- hit = childResult;
- break;
- }
- }
- }
- return NSAccessibilityUnignoredAncestor(hit);
+ BrowserAccessibilityManager* manager = browserAccessibility_->manager();
+ gfx::Point screen_point(point.x, point.y);
+ screen_point += manager->GetViewBounds().OffsetFromOrigin();
+
+ BrowserAccessibility* hit = manager->CachingAsyncHitTest(screen_point);
+ if (!hit)
+ return nil;
+
+ return NSAccessibilityUnignoredAncestor(ToBrowserAccessibilityCocoa(hit));
}
- (BOOL)isEqual:(id)object {

Powered by Google App Engine
This is Rietveld 408576698