Changeset 230808 in webkit


Ignore:
Timestamp:
Apr 19, 2018 10:36:40 AM (6 years ago)
Author:
n_wang@apple.com
Message:

AX: AOM: respect the accessibility setting for dispatching the accessible events
https://bugs.webkit.org/show_bug.cgi?id=184619

Reviewed by Ryosuke Niwa.

Source/WebCore:

Added accessibilityEventsEnabled as a setting on the page.

Test: accessibility/ios-simulator/accessibility-events-setting.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::shouldDispatchAccessibilityEvent const):

  • page/Settings.yaml:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setAccessibilityEventsEnabled):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebKit:

Linked libAccessibility on iOS and macOS to use the platform accessibility settings
for allowing dispatching the accessibility events.

  • Configurations/WebKit.xcconfig:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):
(accessibilityEventsEnabledChangedCallback):
(-[WKWebView _updateAccessibilityEventsEnabled]):

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::updateAccessibilityEventsEnabled):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updateAccessibilityEventsEnabled):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Source/WTF:

  • wtf/Platform.h:

LayoutTests:

  • accessibility/ios-simulator/accessibility-events-setting-expected.txt: Added.
  • accessibility/ios-simulator/accessibility-events-setting.html: Added.
  • platform/ios-wk1/TestExpectations:
  • platform/ios-wk2/TestExpectations:
Location:
trunk
Files:
2 added
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r230806 r230808  
     12018-04-19  Nan Wang  <n_wang@apple.com>
     2
     3        AX: AOM: respect the accessibility setting for dispatching the accessible events
     4        https://bugs.webkit.org/show_bug.cgi?id=184619
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * accessibility/ios-simulator/accessibility-events-setting-expected.txt: Added.
     9        * accessibility/ios-simulator/accessibility-events-setting.html: Added.
     10        * platform/ios-wk1/TestExpectations:
     11        * platform/ios-wk2/TestExpectations:
     12
    1132018-04-19  Tadeu Zagallo  <tzagallo@apple.com>
    214
  • trunk/LayoutTests/platform/ios-wk1/TestExpectations

    r230531 r230808  
    105105# Not supported on WK1
    106106accessibility/ios-simulator/speak-selection-content.html [ Skip ]
     107accessibility/ios-simulator/accessibility-events-setting.html [ Skip ]
    107108
    108109# FIXME: Tests that fail due to lack of textInputController <rdar://problem/5106287>
  • trunk/LayoutTests/platform/ios-wk2/TestExpectations

    r230703 r230808  
    11291129webkit.org/b/155056 fast/viewport/ios/force-always-user-scalable.html [ Skip ]
    11301130
     1131# Setting accessibility events enabled is not supported on certain OS version.
     1132webkit.org/b/184619 accessibility/ios-simulator/accessibility-events-setting.html [ Skip ]
    11311133
    11321134webkit.org/b/155495 compositing/visible-rect/animated-from-none.html [ Pass Failure ]
  • trunk/Source/WTF/ChangeLog

    r230774 r230808  
     12018-04-19  Nan Wang  <n_wang@apple.com>
     2
     3        AX: AOM: respect the accessibility setting for dispatching the accessible events
     4        https://bugs.webkit.org/show_bug.cgi?id=184619
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * wtf/Platform.h:
     9
    1102018-04-18  Ross Kirsling  <ross.kirsling@sony.com>
    211
  • trunk/Source/WTF/wtf/Platform.h

    r229990 r230808  
    13301330#endif
    13311331
     1332#if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400)
     1333#define ENABLE_ACCESSIBILITY_EVENTS 1
     1334#endif
     1335
    13321336#endif /* WTF_Platform_h */
  • trunk/Source/WebCore/ChangeLog

    r230807 r230808  
     12018-04-19  Nan Wang  <n_wang@apple.com>
     2
     3        AX: AOM: respect the accessibility setting for dispatching the accessible events
     4        https://bugs.webkit.org/show_bug.cgi?id=184619
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Added accessibilityEventsEnabled as a setting on the page.
     9
     10        Test: accessibility/ios-simulator/accessibility-events-setting.html
     11
     12        * accessibility/AccessibilityObject.cpp:
     13        (WebCore::AccessibilityObject::shouldDispatchAccessibilityEvent const):
     14        * page/Settings.yaml:
     15        * testing/InternalSettings.cpp:
     16        (WebCore::InternalSettings::Backup::Backup):
     17        (WebCore::InternalSettings::Backup::restoreTo):
     18        (WebCore::InternalSettings::setAccessibilityEventsEnabled):
     19        * testing/InternalSettings.h:
     20        * testing/InternalSettings.idl:
     21
    1222018-04-18  Jer Noble  <jer.noble@apple.com>
    223
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r230211 r230808  
    21582158bool AccessibilityObject::shouldDispatchAccessibilityEvent() const
    21592159{
    2160     return RuntimeEnabledFeatures::sharedFeatures().accessibilityObjectModelEnabled();
     2160    bool shouldDispatch = RuntimeEnabledFeatures::sharedFeatures().accessibilityObjectModelEnabled();
     2161#if ENABLE(ACCESSIBILITY_EVENTS)
     2162    return shouldDispatch &= this->page()->settings().accessibilityEventsEnabled();
     2163#endif
     2164    return shouldDispatch;
    21612165}
    21622166
  • trunk/Source/WebCore/page/Settings.yaml

    r230039 r230808  
    731731  initial: false
    732732  onChange: setNeedsRecalcStyleInAllFrames
     733
     734accessibilityEventsEnabled:
     735  initial: true
     736  conditional: ACCESSIBILITY_EVENTS
  • trunk/Source/WebCore/testing/InternalSettings.cpp

    r230211 r230808  
    9494    , m_deferredCSSParserEnabled(settings.deferredCSSParserEnabled())
    9595    , m_inputEventsEnabled(settings.inputEventsEnabled())
     96#if ENABLE(ACCESSIBILITY_EVENTS)
     97    , m_accessibilityEventsEnabled(settings.accessibilityEventsEnabled())
     98#endif
    9699    , m_userInterfaceDirectionPolicy(settings.userInterfaceDirectionPolicy())
    97100    , m_systemLayoutDirection(settings.systemLayoutDirection())
     
    201204    FontCache::singleton().setShouldMockBoldSystemFontForAccessibility(m_shouldMockBoldSystemFontForAccessibility);
    202205    settings.setFrameFlattening(m_frameFlattening);
     206#if ENABLE(ACCESSIBILITY_EVENTS)
     207    settings.setAccessibilityEventsEnabled(m_accessibilityEventsEnabled);
     208#endif
    203209
    204210#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
     
    877883}
    878884
     885ExceptionOr<void> InternalSettings::setAccessibilityEventsEnabled(bool enabled)
     886{
     887    if (!m_page)
     888        return Exception { InvalidAccessError };
     889#if ENABLE(ACCESSIBILITY_EVENTS)
     890    settings().setAccessibilityEventsEnabled(enabled);
     891#else
     892    UNUSED_PARAM(enabled);
     893#endif
     894    return { };
     895}
     896
    879897static InternalSettings::ForcedAccessibilityValue settingsToInternalSettingsValue(Settings::ForcedAccessibilityValue value)
    880898{
  • trunk/Source/WebCore/testing/InternalSettings.h

    r230000 r230808  
    101101    ExceptionOr<void> setShouldManageAudioSessionCategory(bool);
    102102    ExceptionOr<void> setCustomPasteboardDataEnabled(bool);
     103    ExceptionOr<void> setAccessibilityEventsEnabled(bool);
    103104
    104105    using FrameFlatteningValue = FrameFlattening;
     
    190191        bool m_deferredCSSParserEnabled;
    191192        bool m_inputEventsEnabled;
    192 
     193#if ENABLE(ACCESSIBILITY_EVENTS)
     194        bool m_accessibilityEventsEnabled;
     195#endif
    193196        UserInterfaceDirectionPolicy m_userInterfaceDirectionPolicy;
    194197        TextDirection m_systemLayoutDirection;
  • trunk/Source/WebCore/testing/InternalSettings.idl

    r230000 r230808  
    112112
    113113    [EnabledAtRuntime=WebAnimations] boolean cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled();
     114
     115    [MayThrowException] void setAccessibilityEventsEnabled(boolean enabled);
    114116};
    115117
  • trunk/Source/WebKit/ChangeLog

    r230794 r230808  
     12018-04-19  Nan Wang  <n_wang@apple.com>
     2
     3        AX: AOM: respect the accessibility setting for dispatching the accessible events
     4        https://bugs.webkit.org/show_bug.cgi?id=184619
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Linked libAccessibility on iOS and macOS to use the platform accessibility settings
     9        for allowing dispatching the accessibility events.
     10
     11        * Configurations/WebKit.xcconfig:
     12        * UIProcess/API/Cocoa/WKWebView.mm:
     13        (-[WKWebView _initializeWithConfiguration:]):
     14        (accessibilityEventsEnabledChangedCallback):
     15        (-[WKWebView _updateAccessibilityEventsEnabled]):
     16        * UIProcess/API/Cocoa/WKWebViewInternal.h:
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::updateAccessibilityEventsEnabled):
     19        * UIProcess/WebPageProxy.h:
     20        * WebProcess/WebPage/WebPage.cpp:
     21        (WebKit::WebPage::updateAccessibilityEventsEnabled):
     22        * WebProcess/WebPage/WebPage.h:
     23        * WebProcess/WebPage/WebPage.messages.in:
     24
    1252018-04-18  Chris Dumez  <cdumez@apple.com>
    226
  • trunk/Source/WebKit/Configurations/WebKit.xcconfig

    r230606 r230808  
    4040LIBRARY_SEARCH_PATHS = $(inherited) "$(LIBWEBRTC_LIBRARY_DIR)";
    4141
    42 WK_ACCESSIBILITY_LDFLAGS = $(WK_ACCESSIBILITY_LDFLAGS_$(WK_COCOA_TOUCH));
    43 WK_ACCESSIBILITY_LDFLAGS_cocoatouch = -lAccessibility;
     42WK_ACCESSIBILITY_LDFLAGS = $(WK_ACCESSIBILITY_LDFLAGS_$(WK_PLATFORM_NAME));
     43WK_ACCESSIBILITY_LDFLAGS_iphoneos = -lAccessibility;
     44WK_ACCESSIBILITY_LDFLAGS_iphonesimulator = $(WK_ACCESSIBILITY_LDFLAGS_iphoneos);
     45WK_ACCESSIBILITY_LDFLAGS_watchos = $(WK_ACCESSIBILITY_LDFLAGS_iphoneos);
     46WK_ACCESSIBILITY_LDFLAGS_appletvos = $(WK_ACCESSIBILITY_LDFLAGS_iphoneos);
     47WK_ACCESSIBILITY_LDFLAGS_macosx = $(WK_ACCESSIBILITY_LDFLAGS$(WK_MACOS_1014));
     48WK_ACCESSIBILITY_LDFLAGS_MACOS_SINCE_1014 = -lAccessibility;
    4449
    4550WK_APPKIT_LDFLAGS = $(WK_APPKIT_LDFLAGS_$(WK_PLATFORM_NAME));
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm

    r230527 r230808  
    151151#import <pal/spi/cocoa/QuartzCoreSPI.h>
    152152
    153 #if __has_include(<AccessibilitySupport.h>)
    154 #include <AccessibilitySupport.h>
    155 #else
    156 extern "C" {
    157 CFStringRef kAXSAllowForceWebScalingEnabledNotification;
    158 }
    159 #endif
    160 
    161153#define RELEASE_LOG_IF_ALLOWED(...) RELEASE_LOG_IF(_page && _page->isAlwaysOnLoggingAllowed(), ViewState, __VA_ARGS__)
    162154
     
    214206#endif // HAVE(TOUCH_BAR)
    215207#endif // PLATFORM(MAC)
     208
     209#if ENABLE(ACCESSIBILITY_EVENTS)
     210#if __has_include(<AccessibilitySupport.h>)
     211#include <AccessibilitySupport.h>
     212#else
     213extern "C" {
     214CFStringRef kAXSWebAccessibilityEventsEnabledNotification;
     215Boolean _AXSWebAccessibilityEventsEnabled();
     216}
     217#endif
     218#endif
    216219
    217220static HashMap<WebKit::WebPageProxy*, WKWebView *>& pageToViewMap()
     
    696699#endif
    697700
     701#if ENABLE(ACCESSIBILITY_EVENTS)
     702    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), (__bridge const void *)(self), accessibilityEventsEnabledChangedCallback, kAXSWebAccessibilityEventsEnabledNotification, 0, CFNotificationSuspensionBehaviorDeliverImmediately);
     703    [self _updateAccessibilityEventsEnabled];
     704#endif
     705
    698706    _page->setBackgroundExtendsBeyondPage(true);
    699707
     
    30533061
    30543062#endif // PLATFORM(IOS)
     3063
     3064#if ENABLE(ACCESSIBILITY_EVENTS)
     3065static void accessibilityEventsEnabledChangedCallback(CFNotificationCenterRef, void* observer, CFStringRef, const void*, CFDictionaryRef)
     3066{
     3067    ASSERT(observer);
     3068    WKWebView* webview = static_cast<WKWebView*>(observer);
     3069    [webview _updateAccessibilityEventsEnabled];
     3070}
     3071
     3072- (void)_updateAccessibilityEventsEnabled
     3073{
     3074    _page->updateAccessibilityEventsEnabled(_AXSWebAccessibilityEventsEnabled());
     3075}
     3076#endif
    30553077
    30563078#pragma mark OS X-specific methods
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h

    r230268 r230808  
    150150#endif
    151151
     152#if ENABLE(ACCESSIBILITY_EVENTS)
     153- (void)_updateAccessibilityEventsEnabled;
     154#endif
     155
    152156#if ENABLE(ATTACHMENT_ELEMENT)
    153157- (void)_didRemoveAttachment:(NSString *)identifier;
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r230773 r230808  
    27552755}
    27562756
     2757#if ENABLE(ACCESSIBILITY_EVENTS)
     2758void WebPageProxy::updateAccessibilityEventsEnabled(bool enabled)
     2759{
     2760    if (!isValid())
     2761        return;
     2762
     2763    m_process->send(Messages::WebPage::UpdateAccessibilityEventsEnabled(enabled), m_pageID);
     2764}
     2765#endif
     2766
    27572767void WebPageProxy::setUseFixedLayout(bool fixed)
    27582768{
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r230773 r230808  
    746746    void windowScreenDidChange(WebCore::PlatformDisplayID);
    747747    void accessibilitySettingsDidChange();
     748#if ENABLE(ACCESSIBILITY_EVENTS)
     749    void updateAccessibilityEventsEnabled(bool);
     750#endif
    748751
    749752    void setUseFixedLayout(bool);
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r230794 r230808  
    17341734}
    17351735
     1736#if ENABLE(ACCESSIBILITY_EVENTS)
     1737void WebPage::updateAccessibilityEventsEnabled(bool enabled)
     1738{
     1739    m_page->settings().setAccessibilityEventsEnabled(enabled);
     1740}
     1741#endif
     1742
    17361743void WebPage::setUseFixedLayout(bool fixed)
    17371744{
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.h

    r230764 r230808  
    430430
    431431    void accessibilitySettingsDidChange();
     432#if ENABLE(ACCESSIBILITY_EVENTS)
     433    void updateAccessibilityEventsEnabled(bool);
     434#endif
    432435
    433436    void scalePage(double scale, const WebCore::IntPoint& origin);
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in

    r230764 r230808  
    209209
    210210    AccessibilitySettingsDidChange()
     211#if ENABLE(ACCESSIBILITY_EVENTS)
     212    UpdateAccessibilityEventsEnabled(bool enabled)
     213#endif
    211214
    212215    ScalePage(double scale, WebCore::IntPoint origin)
Note: See TracChangeset for help on using the changeset viewer.