• Ian Prest's avatar
    A11y: Turn on a11y when VoiceControl is in use · 95ffeb85
    Ian Prest authored
    Previously, to detect if VoiceOver was running on the Mac, we used an
    undocumented attribute (AXEnhancedUserInterface) that was set on the
    application.  Unfortunately, this doesn't work with the new VoiceControl
    system.
    
    After discussions with Apple, they recommended that we turn on a11y
    whenever an AT accesses the 'accessibilityRole' property.  This would
    work for VoiceControl, and should work with any new ATs in the future.
    Since this attribute is called frequently, we use 'dispatch_once' to
    ensure the expensive work is only done once.
    
    One disadvantage is that we can no longer turn *off* a11y when the
    'AXEnhancedUserInterface' attribute is set to zero, because doing so
    breaks compatibility with VoiceControl.  (A11y would be enabled, then
    quickly disabled again.)
    
    Bug: 1143047
    Change-Id: I41ed07b31476cef4a04fd0f2d9c994acc9311654
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2538257Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
    Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
    Commit-Queue: Ian Prest <iapres@microsoft.com>
    Cr-Commit-Position: refs/heads/master@{#833149}
    95ffeb85
chrome_browser_application_mac.mm 14.6 KB