Commit 1f47937b authored by Kevin Babbitt's avatar Kevin Babbitt Committed by Commit Bot

Fix accessibility hit testing issue on Mac

https://crrev.com/c/2117330 refactored accessibility hit testing to use
physical pixel coordinates consistently but overlooked the fact that
MacOS passes hit test points in device-independent coordinates. This CL
scales the input by device scale factor to compensate. Test will come in
a follow-up CL.

Bug: 1086819
AX-Relnotes: Fixes an issue with accessibility hit testing on the Mac.
Change-Id: I3fcc2cee34082e58d7fd38fdc219672680674095
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2225334Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Commit-Queue: Kevin Babbitt <kbabbitt@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#773765}
parent ef447abf
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "content/browser/accessibility/browser_accessibility_position.h" #include "content/browser/accessibility/browser_accessibility_position.h"
#include "content/browser/accessibility/one_shot_accessibility_tree_search.h" #include "content/browser/accessibility/one_shot_accessibility_tree_search.h"
#include "content/public/common/content_client.h" #include "content/public/common/content_client.h"
#include "content/public/common/use_zoom_for_dsf_policy.h"
#include "third_party/blink/public/strings/grit/blink_strings.h" #include "third_party/blink/public/strings/grit/blink_strings.h"
#include "third_party/skia/include/core/SkColor.h" #include "third_party/skia/include/core/SkColor.h"
#include "ui/accessibility/ax_enum_util.h" #include "ui/accessibility/ax_enum_util.h"
...@@ -55,6 +56,7 @@ using content::BrowserAccessibilityDelegate; ...@@ -55,6 +56,7 @@ using content::BrowserAccessibilityDelegate;
using content::BrowserAccessibilityManager; using content::BrowserAccessibilityManager;
using content::BrowserAccessibilityManagerMac; using content::BrowserAccessibilityManagerMac;
using content::ContentClient; using content::ContentClient;
using content::IsUseZoomForDSFEnabled;
using content::OneShotAccessibilityTreeSearch; using content::OneShotAccessibilityTreeSearch;
using ui::AXNodeData; using ui::AXNodeData;
using ui::AXTreeIDRegistry; using ui::AXTreeIDRegistry;
...@@ -3672,7 +3674,13 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; ...@@ -3672,7 +3674,13 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
screen_point += screen_point +=
manager->GetViewBoundsInScreenCoordinates().OffsetFromOrigin(); manager->GetViewBoundsInScreenCoordinates().OffsetFromOrigin();
BrowserAccessibility* hit = manager->CachingAsyncHitTest(screen_point); gfx::Point physical_pixel_point =
content::IsUseZoomForDSFEnabled()
? screen_point
: ScaleToRoundedPoint(screen_point, manager->device_scale_factor());
BrowserAccessibility* hit =
manager->CachingAsyncHitTest(physical_pixel_point);
if (!hit) if (!hit)
return nil; return nil;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment