Changeset 258115 in webkit


Ignore:
Timestamp:
Mar 8, 2020 2:49:45 PM (4 years ago)
Author:
Andres Gonzalez
Message:

Implementation of AccessibilitySupport AXSIsolatedTreeMode.
https://bugs.webkit.org/show_bug.cgi?id=208691
<rdar://problem/60178602>

Reviewed by Chris Fleizach.

Source/WebCore:

Honors the system AccessibilitySupport IsolatedTreeMode setting. The
system has three modes for IsolatedTree functionality: off, on on main
thread, and on on secondary thread.

  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::isolatedTreeFocusedObject):
(WebCore::AXObjectCache::focusedUIElementForPage):
(WebCore::AXObjectCache::isIsolatedTreeEnabled):
(WebCore::AXObjectCache::isolatedTreeRootObject):
(WebCore::AXObjectCache::canUseSecondaryAXThread):

  • accessibility/AXObjectCache.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase detach]):
(-[WebAccessibilityObjectWrapperBase axBackingObject]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):

Source/WebCore/PAL:

Added softlinking for the AccessibilitySupport library (libAccessibility.tbd).

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • pal/spi/cocoa/AccessibilitySupportSPI.h: Added.
  • pal/spi/cocoa/AccessibilitySupportSoftLink.cpp: Added.
  • pal/spi/cocoa/AccessibilitySupportSoftLink.h: Added.

Source/WebKit:

Honors system AccessibilitySupport IsolatedTreeMode setting.

  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

(-[WKAccessibilityWebPageObject accessibilityHitTest:]):

Location:
trunk/Source
Files:
3 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r258113 r258115  
     12020-03-08  Andres Gonzalez  <andresg_22@apple.com>
     2
     3        Implementation of AccessibilitySupport AXSIsolatedTreeMode.
     4        https://bugs.webkit.org/show_bug.cgi?id=208691
     5        <rdar://problem/60178602>
     6
     7        Reviewed by Chris Fleizach.
     8
     9        Honors the system AccessibilitySupport IsolatedTreeMode setting. The
     10        system has three modes for IsolatedTree functionality: off, on on main
     11        thread, and on on secondary thread.
     12
     13        * WebCore.xcodeproj/project.pbxproj:
     14        * accessibility/AXObjectCache.cpp:
     15        (WebCore::AXObjectCache::isolatedTreeFocusedObject):
     16        (WebCore::AXObjectCache::focusedUIElementForPage):
     17        (WebCore::AXObjectCache::isIsolatedTreeEnabled):
     18        (WebCore::AXObjectCache::isolatedTreeRootObject):
     19        (WebCore::AXObjectCache::canUseSecondaryAXThread):
     20        * accessibility/AXObjectCache.h:
     21        * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
     22        (-[WebAccessibilityObjectWrapperBase detach]):
     23        (-[WebAccessibilityObjectWrapperBase axBackingObject]):
     24        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
     25        (-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
     26
    1272020-03-08  Jer Noble  <jer.noble@apple.com>
    228
  • trunk/Source/WebCore/PAL/ChangeLog

    r258085 r258115  
     12020-03-08  Andres Gonzalez  <andresg_22@apple.com>
     2
     3        Implementation of AccessibilitySupport AXSIsolatedTreeMode.
     4        https://bugs.webkit.org/show_bug.cgi?id=208691
     5        <rdar://problem/60178602>
     6
     7        Reviewed by Chris Fleizach.
     8
     9        Added softlinking for the AccessibilitySupport library (libAccessibility.tbd).
     10
     11        * PAL.xcodeproj/project.pbxproj:
     12        * pal/PlatformMac.cmake:
     13        * pal/spi/cocoa/AccessibilitySupportSPI.h: Added.
     14        * pal/spi/cocoa/AccessibilitySupportSoftLink.cpp: Added.
     15        * pal/spi/cocoa/AccessibilitySupportSoftLink.h: Added.
     16
    1172020-03-07  Daniel Bates  <dabates@apple.com>
    218
  • trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj

    r258066 r258115  
    112112                1CCEE4F720D8743F0047B097 /* NSAppearanceSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CCEE4F620D8743F0047B097 /* NSAppearanceSPI.h */; };
    113113                1D12CC4B2411BCAE00FDA0A3 /* FeatureFlagsSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D12CC4A2411BCAE00FDA0A3 /* FeatureFlagsSPI.h */; };
     114                293EE4A824154F8F0047493D /* AccessibilitySupportSoftLink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 293EE4A624154F8F0047493D /* AccessibilitySupportSoftLink.cpp */; };
     115                293EE4A924154F8F0047493D /* AccessibilitySupportSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 293EE4A724154F8F0047493D /* AccessibilitySupportSoftLink.h */; };
    114116                2D02E93C2056FAA700A13797 /* AudioToolboxSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D02E93B2056FAA700A13797 /* AudioToolboxSPI.h */; };
    115117                2E1342CC215AA10A007199D2 /* UIKitSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E1342CA215AA10A007199D2 /* UIKitSoftLink.h */; };
     
    286288                1CCEE4F620D8743F0047B097 /* NSAppearanceSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSAppearanceSPI.h; sourceTree = "<group>"; };
    287289                1D12CC4A2411BCAE00FDA0A3 /* FeatureFlagsSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FeatureFlagsSPI.h; sourceTree = "<group>"; };
     290                293EE4A624154F8F0047493D /* AccessibilitySupportSoftLink.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilitySupportSoftLink.cpp; sourceTree = "<group>"; };
     291                293EE4A724154F8F0047493D /* AccessibilitySupportSoftLink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccessibilitySupportSoftLink.h; sourceTree = "<group>"; };
    288292                2D02E93B2056FAA700A13797 /* AudioToolboxSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioToolboxSPI.h; sourceTree = "<group>"; };
    289293                2E1342CA215AA10A007199D2 /* UIKitSoftLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIKitSoftLink.h; sourceTree = "<group>"; };
     
    341345                A3C66CDA1F462D6A009E6EE9 /* SessionID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SessionID.cpp; sourceTree = "<group>"; };
    342346                A3C66CDB1F462D6A009E6EE9 /* SessionID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionID.h; sourceTree = "<group>"; };
     347                C037494124127CCB00D9A36E /* AccessibilitySupportSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccessibilitySupportSPI.h; sourceTree = "<group>"; };
    343348                C15CBB3223F34A1200300CC7 /* NSUserDefaultsSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSUserDefaultsSPI.h; sourceTree = "<group>"; };
    344349                C2147A4A1EFD0AA600056FA5 /* CopyPALHeaders.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = CopyPALHeaders.xcconfig; sourceTree = "<group>"; };
     
    412417                        isa = PBXGroup;
    413418                        children = (
     419                                293EE4A624154F8F0047493D /* AccessibilitySupportSoftLink.cpp */,
     420                                293EE4A724154F8F0047493D /* AccessibilitySupportSoftLink.h */,
     421                                C037494124127CCB00D9A36E /* AccessibilitySupportSPI.h */,
    414422                                576CA9D522B854AB0030143C /* AppSSOSPI.h */,
    415423                                2D02E93B2056FAA700A13797 /* AudioToolboxSPI.h */,
     
    711719                        buildActionMask = 2147483647;
    712720                        files = (
     721                                293EE4A924154F8F0047493D /* AccessibilitySupportSoftLink.h in Headers */,
    713722                                57FD318B22B35989008D0E8B /* AppSSOSoftLink.h in Headers */,
    714723                                576CA9D622B854AB0030143C /* AppSSOSPI.h in Headers */,
     
    926935                        buildActionMask = 2147483647;
    927936                        files = (
     937                                293EE4A824154F8F0047493D /* AccessibilitySupportSoftLink.cpp in Sources */,
    928938                                57FD318A22B3593E008D0E8B /* AppSSOSoftLink.mm in Sources */,
    929939                                077E87B1226A460200A2AFF0 /* AVFoundationSoftLink.mm in Sources */,
  • trunk/Source/WebCore/PAL/pal/PlatformMac.cmake

    r258066 r258115  
    2121    spi/cg/ImageIOSPI.h
    2222
     23    spi/cocoa/AccessibilitySupportSPI.h
     24    spi/cocoa/AccessibilitySupportSoftLink.h
    2325    spi/cocoa/AppSSOSPI.h
    2426    spi/cocoa/AuthKitSPI.h
     
    126128    mac/LookupSoftLink.mm
    127129
     130    spi/cocoa/AccessibilitySupportSoftLink.cpp
     131
    128132    system/cocoa/SleepDisablerCocoa.cpp
    129133
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r258109 r258115  
    39793979                C0C054CC1118C8E400CE2636 /* generate-bindings.pl in Headers */ = {isa = PBXBuildFile; fileRef = 93F8B3070A300FEA00F61AB8 /* generate-bindings.pl */; settings = {ATTRIBUTES = (Private, ); }; };
    39803980                C0C054CD1118C8E400CE2636 /* IDLParser.pm in Headers */ = {isa = PBXBuildFile; fileRef = 14813BF309EDF88E00F757E1 /* IDLParser.pm */; settings = {ATTRIBUTES = (Private, ); }; };
     3981                C0E2F3272412BF29009C73EC /* libAccessibility.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = C0E2F3252412BF29009C73EC /* libAccessibility.tbd */; };
    39813982                C0F2A44113869AAB0066C534 /* preprocessor.pm in Headers */ = {isa = PBXBuildFile; fileRef = C0F2A43F13869A280066C534 /* preprocessor.pm */; settings = {ATTRIBUTES = (Private, ); }; };
    39823983                C105DA640F3AA6B8001DD44F /* TextEncodingDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */; };
     
    1350913510                C046E1AB1208A9FE00BA2CF7 /* LocalizedStrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LocalizedStrings.cpp; sourceTree = "<group>"; };
    1351013511                C078376023DF253E00C9C5C8 /* AXIsolatedObjectMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = AXIsolatedObjectMac.mm; path = mac/AXIsolatedObjectMac.mm; sourceTree = "<group>"; };
     13512                C0E2F3252412BF29009C73EC /* libAccessibility.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libAccessibility.tbd; path = usr/lib/libAccessibility.tbd; sourceTree = SDKROOT; };
    1351113513                C0F2A43F13869A280066C534 /* preprocessor.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; name = preprocessor.pm; path = scripts/preprocessor.pm; sourceTree = "<group>"; };
    1351213514                C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextEncodingDetectorICU.cpp; sourceTree = "<group>"; };
     
    1598415986                                1AB33DA512551E320024457A /* IOKit.framework in Frameworks */,
    1598515987                                93F19B1608245E59001E9ABC /* JavaScriptCore.framework in Frameworks */,
     15988                                C0E2F3272412BF29009C73EC /* libAccessibility.tbd in Frameworks */,
    1598615989                                1C022F0022CFED68006DF01B /* libcompression.tbd in Frameworks */,
    1598715990                                93F19B1708245E59001E9ABC /* libicucore.dylib in Frameworks */,
     
    1658316586                                1AB33DA412551E320024457A /* IOKit.framework */,
    1658416587                                F8216299029F4FB501000131 /* JavaScriptCore.framework */,
     16588                                C0E2F3252412BF29009C73EC /* libAccessibility.tbd */,
    1658516589                                1C8D26D022C09CDE00D125F3 /* libcompression.tbd */,
    1658616590                                93F1D31A0558CC5C00821BC0 /* libicucore.dylib */,
  • trunk/Source/WebCore/accessibility/AXObjectCache.cpp

    r258108 r258115  
    105105
    106106#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) && PLATFORM(MAC)
     107#include <pal/spi/cocoa/AccessibilitySupportSPI.h>
     108#include <pal/spi/cocoa/AccessibilitySupportSoftLink.h>
    107109#include <pal/spi/mac/HIServicesSPI.h>
    108110#endif
     
    393395        // Now that we have created our tree, initialize the secondary thread,
    394396        // so future requests come in on the other thread.
     397        if (_AXSIsolatedTreeModeFunctionIsAvailable() && _AXSIsolatedTreeMode_Soft() == AXSIsolatedTreeModeSecondaryThread)
     398            _AXUIElementUseSecondaryAXThread(true);
    395399        _AXUIElementUseSecondaryAXThread(true);
    396400    }
     
    431435
    432436#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
    433     if (clientSupportsIsolatedTree())
     437    if (isIsolatedTreeEnabled())
    434438        return isolatedTreeFocusedObject(*focusedDocument);
    435439#endif
     
    724728    return _AXGetClientForCurrentRequestUntrusted() == kAXClientTypeVoiceOver;
    725729}
     730
     731bool AXObjectCache::isIsolatedTreeEnabled()
     732{
     733    return _AXSIsolatedTreeModeFunctionIsAvailable() && _AXSIsolatedTreeMode_Soft() != AXSIsolatedTreeModeOff && clientSupportsIsolatedTree();
     734}
     735
    726736#endif
    727737
     
    753763        // Now that we have created our tree, initialize the secondary thread,
    754764        // so future requests come in on the other thread.
    755         _AXUIElementUseSecondaryAXThread(true);
     765        if (_AXSIsolatedTreeModeFunctionIsAvailable() && _AXSIsolatedTreeMode_Soft() == AXSIsolatedTreeModeSecondaryThread)
     766            _AXUIElementUseSecondaryAXThread(true);
    756767    }
    757768
     
    774785    // LayoutTests, but we still want to run LayoutTests using isolated tree on
    775786    // a secondary thread to simulate the actual execution.
    776     return clientSupportsIsolatedTree();
     787    return _AXSIsolatedTreeModeFunctionIsAvailable() && _AXSIsolatedTreeMode_Soft() == AXSIsolatedTreeModeSecondaryThread && clientSupportsIsolatedTree();
    777788#else
    778789    return false;
  • trunk/Source/WebCore/accessibility/AXObjectCache.h

    r258066 r258115  
    353353
    354354#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
    355     WEBCORE_EXPORT static bool clientSupportsIsolatedTree();
     355    WEBCORE_EXPORT static bool isIsolatedTreeEnabled();
    356356private:
     357    static bool clientSupportsIsolatedTree();
    357358    AXCoreObject* isolatedTreeRootObject();
    358359    static AXCoreObject* isolatedTreeFocusedObject(Document&);
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm

    r258066 r258115  
    328328#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
    329329    if (!isMainThread()) {
    330         ASSERT(AXObjectCache::clientSupportsIsolatedTree());
     330        ASSERT(AXObjectCache::isIsolatedTreeEnabled());
    331331        [self detachIsolatedObject];
    332332        return;
     
    367367#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
    368368    if (!isMainThread()) {
    369         ASSERT(AXObjectCache::clientSupportsIsolatedTree());
     369        ASSERT(AXObjectCache::isIsolatedTreeEnabled());
    370370        return m_isolatedObject;
    371371    }
  • trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm

    r258108 r258115  
    14381438
    14391439#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
    1440     if (_AXUIElementRequestServicedBySecondaryAXThread() && AXObjectCache::clientSupportsIsolatedTree())
     1440    if (AXObjectCache::isIsolatedTreeEnabled() && _AXUIElementRequestServicedBySecondaryAXThread())
    14411441        [additional addObject:NSAccessibilityRelativeFrameAttribute];
    14421442#endif
  • trunk/Source/WebKit/ChangeLog

    r258114 r258115  
     12020-03-08  Andres Gonzalez  <andresg_22@apple.com>
     2
     3        Implementation of AccessibilitySupport AXSIsolatedTreeMode.
     4        https://bugs.webkit.org/show_bug.cgi?id=208691
     5        <rdar://problem/60178602>
     6
     7        Reviewed by Chris Fleizach.
     8
     9        Honors system AccessibilitySupport IsolatedTreeMode setting.
     10
     11        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
     12        (-[WKAccessibilityWebPageObject accessibilityHitTest:]):
     13
    1142020-03-08  Megan Gardner  <megan_gardner@apple.com>
    215
  • trunk/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm

    r258066 r258115  
    254254        // Isolated tree frames have the offset encoded into them so we don't need to undo here.
    255255#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
    256         bool queryingIsolatedTree = WebCore::AXObjectCache::clientSupportsIsolatedTree() && _AXUIElementRequestServicedBySecondaryAXThread();
    257         applyContentOffset = !queryingIsolatedTree;
     256        applyContentOffset = !WebCore::AXObjectCache::isIsolatedTreeEnabled() || !_AXUIElementRequestServicedBySecondaryAXThread();
    258257#endif
    259258        if (auto pluginView = WebKit::WebPage::pluginViewForFrame(protectedSelf->m_page->mainFrame()))
Note: See TracChangeset for help on using the changeset viewer.