WebKit Bugzilla
Attachment 360161 Details for
Bug 193348
: AX: Introduce isolated accessibility tree
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
patch (text/plain), 103.29 KB, created by
chris fleizach
on 2019-01-25 14:00:16 PST
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
chris fleizach
Created:
2019-01-25 14:00:16 PST
Size:
103.29 KB
patch
obsolete
>Index: Source/JavaScriptCore/ChangeLog >=================================================================== >--- Source/JavaScriptCore/ChangeLog (revision 240470) >+++ Source/JavaScriptCore/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2019-01-25 Chris Fleizach <cfleizach@apple.com> >+ >+ AX: Introduce a static accessibility tree >+ https://bugs.webkit.org/show_bug.cgi?id=193348 >+ <rdar://problem/47203295> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Configurations/FeatureDefines.xcconfig: >+ > 2019-01-24 Keith Miller <keith_miller@apple.com> > > Remove usage of internal macro from private header >Index: Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig (revision 240470) >+++ Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig (working copy) >@@ -40,6 +40,8 @@ > ENABLE_ACCELERATED_OVERFLOW_SCROLLING = $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING_$(WK_COCOA_TOUCH)); > ENABLE_ACCELERATED_OVERFLOW_SCROLLING_cocoatouch = ENABLE_ACCELERATED_OVERFLOW_SCROLLING; > >+ENABLE_ACCESSIBILITY_ISOLATED_TREE = ; >+ > ENABLE_APPLE_PAY = $(ENABLE_APPLE_PAY_$(WK_PLATFORM_NAME)); > ENABLE_APPLE_PAY_iphoneos = ENABLE_APPLE_PAY; > ENABLE_APPLE_PAY_iphonesimulator = ENABLE_APPLE_PAY; >@@ -407,4 +409,4 @@ > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_ACCESSIBILITY_ISOLATED_TREE) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >Index: Source/WebCore/CMakeLists.txt >=================================================================== >--- Source/WebCore/CMakeLists.txt (revision 240470) >+++ Source/WebCore/CMakeLists.txt (working copy) >@@ -58,6 +58,7 @@ > "${WEBCORE_DIR}/Modules/websockets" > "${WEBCORE_DIR}/Modules/webvr" > "${WEBCORE_DIR}/accessibility" >+ "${WEBCORE_DIR}/accessibility/isolatedtree" > "${WEBCORE_DIR}/animation" > "${WEBCORE_DIR}/bindings" > "${WEBCORE_DIR}/bindings/js" >Index: Source/WebCore/ChangeLog >=================================================================== >--- Source/WebCore/ChangeLog (revision 240470) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,78 @@ >+2019-01-25 Chris Fleizach <cfleizach@apple.com> >+ >+ AX: Introduce a static accessibility tree >+ https://bugs.webkit.org/show_bug.cgi?id=193348 >+ <rdar://problem/47203295> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ In order to improve performance when requesting the accessibility hierarchy, we introduce the idea of a "static accessibility tree" which >+ could be accessed on a different thread by assistive technologies. >+ That is accomplished by storing all the data needed to answer accessibility attribute queries in a static object that mirrors the >+ "live" AccessibilityObjects (which interact with both DOM and Render trees). >+ These static objects are generally created after layout is done and final tasks are being performed. They are then stored in the static tree >+ representation and able to be read from anywhere. >+ Tactically this is done with AXIsolatedTreeNodes inside of an AXIsolatedTree. The TreeNodes implement an AccessibilityObjectInterface shared >+ with AccessibilityObject. >+ This allows the wrappers to access either one depending on conditions and platforms without significant code duplication or re-organization. >+ >+ * CMakeLists.txt: >+ * Configurations/FeatureDefines.xcconfig: >+ * Sources.txt: >+ * WebCore.xcodeproj/project.pbxproj: >+ * accessibility/AXObjectCache.cpp: >+ (WebCore::AXObjectCache::remove): >+ (WebCore::AXObjectCache::createIsolatedAccessibilityTree): >+ (WebCore::AXObjectCache::generateStaticAccessibilityTreeIfNeeded): >+ * accessibility/AXObjectCache.h: >+ * accessibility/AccessibilityObject.h: >+ * accessibility/AccessibilityObjectInterface.h: Added. >+ * accessibility/isolatedtree: Added. >+ * accessibility/isolatedtree/AXIsolatedTree.cpp: Added. >+ (WebCore::AXIsolatedTree::treeCache): >+ (WebCore::AXIsolatedTree::AXIsolatedTree): >+ (WebCore::AXIsolatedTree::create): >+ (WebCore::AXIsolatedTree::treeForID): >+ (WebCore::AXIsolatedTree::treeForPageID): >+ (WebCore::AXIsolatedTree::nodeForID const): >+ (WebCore::AXIsolatedTree::rootNode): >+ (WebCore::AXIsolatedTree::removeNode): >+ (WebCore::AXIsolatedTree::appendNodeChanges): >+ (WebCore::AXIsolatedTree::applyPendingChanges): >+ * accessibility/isolatedtree/AXIsolatedTree.h: Added. >+ (WebCore::AXIsolatedTree::treeIdentifier const): >+ * accessibility/isolatedtree/AXIsolatedTreeNode.cpp: Added. >+ To note: we don't mark the attribute map const because even though attributes don't change after initial creation, >+ we may copy an existing node and replace specific values. >+ (WebCore::AXIsolatedTreeNode::AXIsolatedTreeNode): >+ (WebCore::AXIsolatedTreeNode::create): >+ (WebCore::AXIsolatedTreeNode::initializeAttributeData): >+ (WebCore::AXIsolatedTreeNode::setProperty): >+ (WebCore::AXIsolatedTreeNode::doubleAttributeValue const): >+ (WebCore::AXIsolatedTreeNode::unsignedAttributeValue const): >+ (WebCore::AXIsolatedTreeNode::boolAttributeValue const): >+ (WebCore::AXIsolatedTreeNode::stringAttributeValue const): >+ (WebCore::AXIsolatedTreeNode::intAttributeValue const): >+ * accessibility/isolatedtree/AXIsolatedTreeNode.h: Added. >+ * accessibility/mac/AXObjectCacheMac.mm: >+ (WebCore::AXObjectCache::associateIsolatedTreeNode): >+ * accessibility/mac/WebAccessibilityObjectWrapperBase.h: >+ * accessibility/mac/WebAccessibilityObjectWrapperBase.mm: >+ (-[WebAccessibilityObjectWrapperBase initWithAccessibilityObject:]): >+ (-[WebAccessibilityObjectWrapperBase isolatedTreeNode]): >+ (-[WebAccessibilityObjectWrapperBase detach]): >+ (-[WebAccessibilityObjectWrapperBase updateObjectBackingStore]): >+ (-[WebAccessibilityObjectWrapperBase axBackingObject]): >+ (-[WebAccessibilityObjectWrapperBase baseAccessibilityDescription]): >+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: >+ (-[WebAccessibilityObjectWrapper role]): >+ (-[WebAccessibilityObjectWrapper subrole]): >+ (-[WebAccessibilityObjectWrapper roleDescription]): >+ (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): >+ * dom/Document.cpp: >+ (WebCore::Document::pageID const): >+ * dom/Document.h: >+ > 2019-01-24 Zalan Bujtas <zalan@apple.com> > > [LFC][BFC][MarginCollapsing] Refactor MarginCollapse::updateCollapsedMarginAfter >Index: Source/WebCore/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/WebCore/Configurations/FeatureDefines.xcconfig (revision 240470) >+++ Source/WebCore/Configurations/FeatureDefines.xcconfig (working copy) >@@ -40,6 +40,8 @@ > ENABLE_ACCELERATED_OVERFLOW_SCROLLING = $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING_$(WK_COCOA_TOUCH)); > ENABLE_ACCELERATED_OVERFLOW_SCROLLING_cocoatouch = ENABLE_ACCELERATED_OVERFLOW_SCROLLING; > >+ENABLE_ACCESSIBILITY_ISOLATED_TREE = ; >+ > ENABLE_APPLE_PAY = $(ENABLE_APPLE_PAY_$(WK_PLATFORM_NAME)); > ENABLE_APPLE_PAY_iphoneos = ENABLE_APPLE_PAY; > ENABLE_APPLE_PAY_iphonesimulator = ENABLE_APPLE_PAY; >@@ -407,4 +409,4 @@ > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_ACCESSIBILITY_ISOLATED_TREE) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >Index: Source/WebCore/PAL/ChangeLog >=================================================================== >--- Source/WebCore/PAL/ChangeLog (revision 240470) >+++ Source/WebCore/PAL/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2019-01-25 Chris Fleizach <cfleizach@apple.com> >+ >+ AX: Introduce isolated accessibility tree >+ https://bugs.webkit.org/show_bug.cgi?id=193348 >+ <rdar://problem/47203295> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Configurations/FeatureDefines.xcconfig: >+ > 2019-01-24 Eric Carlson <eric.carlson@apple.com> > > [iOS] Silence MediaPlayer compile warnings >Index: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig (revision 240470) >+++ Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig (working copy) >@@ -40,6 +40,8 @@ > ENABLE_ACCELERATED_OVERFLOW_SCROLLING = $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING_$(WK_COCOA_TOUCH)); > ENABLE_ACCELERATED_OVERFLOW_SCROLLING_cocoatouch = ENABLE_ACCELERATED_OVERFLOW_SCROLLING; > >+ENABLE_ACCESSIBILITY_ISOLATED_TREE = ; >+ > ENABLE_APPLE_PAY = $(ENABLE_APPLE_PAY_$(WK_PLATFORM_NAME)); > ENABLE_APPLE_PAY_iphoneos = ENABLE_APPLE_PAY; > ENABLE_APPLE_PAY_iphonesimulator = ENABLE_APPLE_PAY; >@@ -407,4 +409,4 @@ > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_ACCESSIBILITY_ISOLATED_TREE) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >Index: Source/WebCore/Sources.txt >=================================================================== >--- Source/WebCore/Sources.txt (revision 240470) >+++ Source/WebCore/Sources.txt (working copy) >@@ -405,6 +405,8 @@ > accessibility/AccessibilityTree.cpp > accessibility/AccessibilityTreeItem.cpp > accessibility/AccessibleSetValueEvent.cpp >+accessibility/isolatedtree/AXIsolatedTree.cpp >+accessibility/isolatedtree/AXIsolatedTreeNode.cpp > > animation/AnimationEffect.cpp > animation/AnimationPlaybackEvent.cpp >Index: Source/WebCore/WebCore.xcodeproj/project.pbxproj >=================================================================== >--- Source/WebCore/WebCore.xcodeproj/project.pbxproj (revision 240470) >+++ Source/WebCore/WebCore.xcodeproj/project.pbxproj (working copy) >@@ -696,6 +696,7 @@ > 26F9A83818A046AC00AEB88A /* ViewportConfiguration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F9A83618A046AC00AEB88A /* ViewportConfiguration.cpp */; }; > 26F9A83918A046AC00AEB88A /* ViewportConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 26F9A83718A046AC00AEB88A /* ViewportConfiguration.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 2914E3081CAB5A440049966F /* AccessibilityAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 2914E3061CAB5A440049966F /* AccessibilityAttachment.h */; }; >+ 2936BF5C21D69E4B004A8FC9 /* AccessibilityObjectInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 2936BF5A21D6999E004A8FC9 /* AccessibilityObjectInterface.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 293EAE1F1356B2FE0067ACF9 /* RuntimeApplicationChecks.h in Headers */ = {isa = PBXBuildFile; fileRef = 293EAE1E1356B2FE0067ACF9 /* RuntimeApplicationChecks.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 29489FC712C00F0300D83F0F /* AccessibilityScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 29489FC512C00F0300D83F0F /* AccessibilityScrollView.h */; }; > 297BE3D516C03C08003316BD /* PlatformSpeechSynthesisUtterance.h in Headers */ = {isa = PBXBuildFile; fileRef = 2527CC9116BF8BA1009DDAC0 /* PlatformSpeechSynthesisUtterance.h */; }; >@@ -717,6 +718,8 @@ > 29A812430FBB9C1D00510293 /* AccessibilityListBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812250FBB9C1D00510293 /* AccessibilityListBox.h */; }; > 29A812490FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 29A812450FBB9CA900510293 /* WebAccessibilityObjectWrapperBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 29ACB212143E7128006BCA5F /* AccessibilityMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 29ACB211143E7128006BCA5F /* AccessibilityMockObject.h */; }; >+ 29AE212D21AB9EEB00869283 /* AXIsolatedTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 29AE212B21AB9EEB00869283 /* AXIsolatedTree.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ 29AE213521ABA48A00869283 /* AXIsolatedTreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 29AE213321ABA48A00869283 /* AXIsolatedTreeNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 29D7BCFA1444AF7D0070619C /* AccessibilitySpinButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D7BCF91444AF7D0070619C /* AccessibilitySpinButton.h */; }; > 29FAF4B6195AB08900A522DC /* TextUndoInsertionMarkupMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 29FAF4B5195AB08900A522DC /* TextUndoInsertionMarkupMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 2B365C841525119E0091D27B /* RenderSVGEllipse.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B4235A015250F6000DBBCD8 /* RenderSVGEllipse.h */; }; >@@ -6584,6 +6587,7 @@ > 28DB9BC72020EA0400E54A07 /* PerformanceServerTiming.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PerformanceServerTiming.idl; sourceTree = "<group>"; }; > 2914E3051CAB5A440049966F /* AccessibilityAttachment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityAttachment.cpp; sourceTree = "<group>"; }; > 2914E3061CAB5A440049966F /* AccessibilityAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityAttachment.h; sourceTree = "<group>"; }; >+ 2936BF5A21D6999E004A8FC9 /* AccessibilityObjectInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccessibilityObjectInterface.h; sourceTree = "<group>"; }; > 293EAE1E1356B2FE0067ACF9 /* RuntimeApplicationChecks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuntimeApplicationChecks.h; sourceTree = "<group>"; }; > 29489FC512C00F0300D83F0F /* AccessibilityScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityScrollView.h; sourceTree = "<group>"; }; > 29498681195341940072D2BD /* TextUndoInsertionMarkupMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TextUndoInsertionMarkupMac.mm; sourceTree = "<group>"; }; >@@ -6631,6 +6635,10 @@ > 29A812470FBB9CA900510293 /* AXObjectCacheMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AXObjectCacheMac.mm; sourceTree = "<group>"; }; > 29ACB211143E7128006BCA5F /* AccessibilityMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityMockObject.h; sourceTree = "<group>"; }; > 29ACB213143E7498006BCA5F /* AccessibilityMockObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityMockObject.cpp; sourceTree = "<group>"; }; >+ 29AE212B21AB9EEB00869283 /* AXIsolatedTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AXIsolatedTree.h; sourceTree = "<group>"; }; >+ 29AE212C21AB9EEB00869283 /* AXIsolatedTree.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AXIsolatedTree.cpp; sourceTree = "<group>"; }; >+ 29AE213321ABA48A00869283 /* AXIsolatedTreeNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AXIsolatedTreeNode.h; sourceTree = "<group>"; }; >+ 29AE213421ABA48A00869283 /* AXIsolatedTreeNode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AXIsolatedTreeNode.cpp; sourceTree = "<group>"; }; > 29D7BCF51444AF580070619C /* AccessibilitySpinButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilitySpinButton.cpp; sourceTree = "<group>"; }; > 29D7BCF91444AF7D0070619C /* AccessibilitySpinButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySpinButton.h; sourceTree = "<group>"; }; > 29E04A27BED2F81F98E9022B /* JSBeforeUnloadEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBeforeUnloadEvent.h; sourceTree = "<group>"; }; >@@ -17254,6 +17262,7 @@ > 29A812040FBB9B4100510293 /* accessibility */ = { > isa = PBXGroup; > children = ( >+ 29AE212921AB9ECB00869283 /* isolatedtree */, > AAA728EF16D1D8BC00D3BBC6 /* ios */, > 29A812050FBB9B5200510293 /* mac */, > 2981CA9D131822EC00D12F2A /* AccessibilityARIAGrid.cpp */, >@@ -17292,6 +17301,7 @@ > 2985709315CC532D006355CD /* AccessibilityNodeObject.h */, > 2981CAA5131822EC00D12F2A /* AccessibilityObject.cpp */, > 29A812180FBB9C1D00510293 /* AccessibilityObject.h */, >+ 2936BF5A21D6999E004A8FC9 /* AccessibilityObjectInterface.h */, > A409C982116D0DDD007197BD /* AccessibilityProgressIndicator.cpp */, > A409C983116D0DDD007197BD /* AccessibilityProgressIndicator.h */, > 2981CAA6131822EC00D12F2A /* AccessibilityRenderObject.cpp */, >@@ -17347,6 +17357,17 @@ > path = mac; > sourceTree = "<group>"; > }; >+ 29AE212921AB9ECB00869283 /* isolatedtree */ = { >+ isa = PBXGroup; >+ children = ( >+ 29AE212B21AB9EEB00869283 /* AXIsolatedTree.h */, >+ 29AE212C21AB9EEB00869283 /* AXIsolatedTree.cpp */, >+ 29AE213321ABA48A00869283 /* AXIsolatedTreeNode.h */, >+ 29AE213421ABA48A00869283 /* AXIsolatedTreeNode.cpp */, >+ ); >+ path = isolatedtree; >+ sourceTree = "<group>"; >+ }; > 2D0621461DA639EC00A7FB26 /* legacy */ = { > isa = PBXGroup; > children = ( >@@ -29972,6 +29993,7 @@ > 1AE2AA980A1CDD2D00B42B25 /* JSHTMLImageElement.h in Headers */, > A80E7E970A1A83E3007FB8C5 /* JSHTMLInputElement.h in Headers */, > 836B09561F5F34D9003C3702 /* JSHTMLInputElementEntriesAPI.h in Headers */, >+ 2936BF5C21D69E4B004A8FC9 /* AccessibilityObjectInterface.h in Headers */, > A6148A7912E41E3B0044A784 /* JSHTMLKeygenElement.h in Headers */, > 1AE2AB220A1CE63B00B42B25 /* JSHTMLLabelElement.h in Headers */, > 1AE2AB240A1CE63B00B42B25 /* JSHTMLLegendElement.h in Headers */, >@@ -31427,6 +31449,7 @@ > 51405C89190B014400754F94 /* SelectionRectGatherer.h in Headers */, > E44B4BB4141650D7002B1D8B /* SelectorChecker.h in Headers */, > 432D3FE818A8658400D7DC03 /* SelectorCheckerTestFunctions.h in Headers */, >+ 29AE213521ABA48A00869283 /* AXIsolatedTreeNode.h in Headers */, > 26B999971804D54200D01121 /* SelectorCompiler.h in Headers */, > 415071581685067300C3C7B3 /* SelectorFilter.h in Headers */, > 43107BE218CC19DE00CC18E8 /* SelectorPseudoTypeMap.h in Headers */, >@@ -32362,6 +32385,7 @@ > 977E2E0F12F0FC9C00C13380 /* XSSAuditorDelegate.h in Headers */, > A5416FE618810EF80009FC5F /* YouTubeEmbedShadowElement.h in Headers */, > 7A5515F5191830A3009687D2 /* YouTubePluginReplacement.h in Headers */, >+ 29AE212D21AB9EEB00869283 /* AXIsolatedTree.h in Headers */, > FD537353137B651800008DCE /* ZeroPole.h in Headers */, > ); > runOnlyForDeploymentPostprocessing = 0; >Index: Source/WebCore/accessibility/AXObjectCache.cpp >=================================================================== >--- Source/WebCore/accessibility/AXObjectCache.cpp (revision 240470) >+++ Source/WebCore/accessibility/AXObjectCache.cpp (working copy) >@@ -32,6 +32,8 @@ > > #include "AXObjectCache.h" > >+#include "AXIsolatedTree.h" >+#include "AXIsolatedTreeNode.h" > #include "AccessibilityARIAGrid.h" > #include "AccessibilityARIAGridCell.h" > #include "AccessibilityARIAGridRow.h" >@@ -115,6 +117,8 @@ > > using namespace HTMLNames; > >+const AXID InvalidAXID = 0; >+ > // Post value change notifications for password fields or elements contained in password fields at a 40hz interval to thwart analysis of typing cadence > static const Seconds accessibilityPasswordValueChangeNotificationInterval { 25_ms }; > static const Seconds accessibilityLiveRegionChangedNotificationInterval { 20_ms }; >@@ -723,6 +727,10 @@ > object->setAXObjectID(0); > > m_idsInUse.remove(axID); >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ if (auto pageID = m_document.pageID()) >+ AXIsolatedTree::treeForPageID(*pageID, false)->removeNode(axID); >+#endif > > ASSERT(m_objects.size() >= m_idsInUse.size()); > } >@@ -2907,6 +2915,37 @@ > m_deferredFocusedNodeChange.clear(); > } > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+Ref<AXIsolatedTreeNode> AXObjectCache::createIsolatedAccessibilityTree(AccessibilityObject& object, AXID parentID, AXIsolatedTree& tree, Vector<RefPtr<AXIsolatedTreeNode>>& nodes) >+{ >+ auto isolatedTreeNode = AXIsolatedTreeNode::create(object); >+ nodes.append(isolatedTreeNode.ptr()); >+ >+ isolatedTreeNode->setParent(parentID); >+ associateIsolatedTreeNode(object, isolatedTreeNode, tree.treeIdentifier()); >+ >+ for (auto child : object.children()) { >+ auto staticChild = createIsolatedAccessibilityTree(*child, isolatedTreeNode->identifier(), tree, nodes); >+ isolatedTreeNode->appendChild(staticChild->identifier()); >+ } >+ >+ return isolatedTreeNode; >+} >+ >+Ref<AXIsolatedTree> AXObjectCache::generateIsolatedAccessibilityTree() >+{ >+ RELEASE_ASSERT(isMainThread()); >+ >+ auto tree = AXIsolatedTree::treeForPageID(*m_document.pageID(), true); >+ Vector<RefPtr<AXIsolatedTreeNode>> nodes; >+ auto root = createIsolatedAccessibilityTree(*rootObject(), InvalidAXID, tree, nodes); >+ root->setIsRootNode(true); >+ tree->appendNodeChanges(nodes); >+ >+ return tree; >+} >+#endif >+ > void AXObjectCache::deferRecomputeIsIgnoredIfNeeded(Element* element) > { > if (!nodeAndRendererAreValid(element)) >Index: Source/WebCore/accessibility/AXObjectCache.h >=================================================================== >--- Source/WebCore/accessibility/AXObjectCache.h (revision 240470) >+++ Source/WebCore/accessibility/AXObjectCache.h (working copy) >@@ -25,6 +25,9 @@ > > #pragma once > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+#include "AXIsolatedTree.h" >+#endif > #include "AXTextStateChangeIntent.h" > #include "AccessibilityObject.h" > #include "Range.h" >@@ -39,6 +42,9 @@ > > namespace WebCore { > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+class AXIsolatedTreeNode; >+#endif > class Document; > class HTMLAreaElement; > class HTMLTextFormControlElement; >@@ -180,6 +186,13 @@ > void deferAttributeChangeIfNeeded(const QualifiedName&, Element*); > void recomputeIsIgnored(RenderObject* renderer); > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ WEBCORE_EXPORT Ref<AXIsolatedTree> generateIsolatedAccessibilityTree(); >+ >+ void associateIsolatedTreeNode(AccessibilityObject&, AXIsolatedTreeNode&, AXIsolatedTreeID); >+ Ref<AXIsolatedTreeNode> createIsolatedAccessibilityTree(AccessibilityObject&, AXID, AXIsolatedTree&, Vector<RefPtr<AXIsolatedTreeNode>>&); >+#endif >+ > #if HAVE(ACCESSIBILITY) > WEBCORE_EXPORT static void enableAccessibility(); > WEBCORE_EXPORT static void disableAccessibility(); >@@ -187,6 +200,7 @@ > // Enhanced user interface accessibility can be toggled by the assistive technology. > WEBCORE_EXPORT static void setEnhancedUserInterfaceAccessibility(bool flag); > >+ // Note: these may be called from a non-main thread concurrently as other readers. > static bool accessibilityEnabled() { return gAccessibilityEnabled; } > static bool accessibilityEnhancedUserInterfaceEnabled() { return gAccessibilityEnhancedUserInterfaceEnabled; } > #else >Index: Source/WebCore/accessibility/AccessibilityObject.h >=================================================================== >--- Source/WebCore/accessibility/AccessibilityObject.h (revision 240470) >+++ Source/WebCore/accessibility/AccessibilityObject.h (working copy) >@@ -29,6 +29,7 @@ > > #pragma once > >+#include "AccessibilityObjectInterface.h" > #include "FloatQuad.h" > #include "HTMLTextFormControlElement.h" > #include "LayoutRect.h" >@@ -89,157 +90,6 @@ > class ScrollView; > class Widget; > >-typedef unsigned AXID; >- >-enum class AccessibilityRole { >- Annotation = 1, >- Application, >- ApplicationAlert, >- ApplicationAlertDialog, >- ApplicationDialog, >- ApplicationGroup, >- ApplicationLog, >- ApplicationMarquee, >- ApplicationStatus, >- ApplicationTextGroup, >- ApplicationTimer, >- Audio, >- Blockquote, >- Browser, >- BusyIndicator, >- Button, >- Canvas, >- Caption, >- Cell, >- CheckBox, >- ColorWell, >- Column, >- ColumnHeader, >- ComboBox, >- Definition, >- DescriptionList, >- DescriptionListTerm, >- DescriptionListDetail, >- Details, >- Directory, >- DisclosureTriangle, >- Div, >- Document, >- DocumentArticle, >- DocumentMath, >- DocumentNote, >- Drawer, >- EditableText, >- Feed, >- Figure, >- Footer, >- Footnote, >- Form, >- GraphicsDocument, >- GraphicsObject, >- GraphicsSymbol, >- Grid, >- GridCell, >- Group, >- GrowArea, >- Heading, >- HelpTag, >- HorizontalRule, >- Ignored, >- Inline, >- Image, >- ImageMap, >- ImageMapLink, >- Incrementor, >- Label, >- LandmarkBanner, >- LandmarkComplementary, >- LandmarkContentInfo, >- LandmarkDocRegion, >- LandmarkMain, >- LandmarkNavigation, >- LandmarkRegion, >- LandmarkSearch, >- Legend, >- Link, >- List, >- ListBox, >- ListBoxOption, >- ListItem, >- ListMarker, >- Mark, >- MathElement, >- Matte, >- Menu, >- MenuBar, >- MenuButton, >- MenuItem, >- MenuItemCheckbox, >- MenuItemRadio, >- MenuListPopup, >- MenuListOption, >- Outline, >- Paragraph, >- PopUpButton, >- Pre, >- Presentational, >- ProgressIndicator, >- RadioButton, >- RadioGroup, >- RowHeader, >- Row, >- RowGroup, >- RubyBase, >- RubyBlock, >- RubyInline, >- RubyRun, >- RubyText, >- Ruler, >- RulerMarker, >- ScrollArea, >- ScrollBar, >- SearchField, >- Sheet, >- Slider, >- SliderThumb, >- SpinButton, >- SpinButtonPart, >- SplitGroup, >- Splitter, >- StaticText, >- Summary, >- Switch, >- SystemWide, >- SVGRoot, >- SVGText, >- SVGTSpan, >- SVGTextPath, >- TabGroup, >- TabList, >- TabPanel, >- Tab, >- Table, >- TableHeaderContainer, >- TextArea, >- TextGroup, >- Term, >- Time, >- Tree, >- TreeGrid, >- TreeItem, >- TextField, >- ToggleButton, >- Toolbar, >- Unknown, >- UserInterfaceTooltip, >- ValueIndicator, >- Video, >- WebApplication, >- WebArea, >- WebCoreLink, >- Window, >-}; >- > enum class AccessibilityTextSource { > Alternative, > Children, >@@ -491,7 +341,7 @@ > > bool nodeHasPresentationRole(Node*); > >-class AccessibilityObject : public RefCounted<AccessibilityObject> { >+class AccessibilityObject : public RefCounted<AccessibilityObject>, public AccessibilityObjectInterface { > protected: > AccessibilityObject() = default; > >@@ -1159,7 +1009,10 @@ > AccessibilityIsIgnoredFromParentData m_isIgnoredFromParentData { }; > bool m_childrenDirty { false }; > bool m_subtreeDirty { false }; >- >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ bool m_isolatedTreeNodeInitialized { false }; >+#endif >+ > void setIsIgnoredFromParentData(AccessibilityIsIgnoredFromParentData& data) { m_isIgnoredFromParentData = data; } > > virtual bool computeAccessibilityIsIgnored() const { return true; } >Index: Source/WebCore/accessibility/AccessibilityObjectInterface.h >=================================================================== >--- Source/WebCore/accessibility/AccessibilityObjectInterface.h (nonexistent) >+++ Source/WebCore/accessibility/AccessibilityObjectInterface.h (working copy) >@@ -0,0 +1,191 @@ >+/* >+ * Copyright (C) 2019 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+namespace WebCore { >+ >+typedef unsigned AXID; >+extern const AXID InvalidAXID; >+ >+enum class AccessibilityRole { >+ Annotation = 1, >+ Application, >+ ApplicationAlert, >+ ApplicationAlertDialog, >+ ApplicationDialog, >+ ApplicationGroup, >+ ApplicationLog, >+ ApplicationMarquee, >+ ApplicationStatus, >+ ApplicationTextGroup, >+ ApplicationTimer, >+ Audio, >+ Blockquote, >+ Browser, >+ BusyIndicator, >+ Button, >+ Canvas, >+ Caption, >+ Cell, >+ CheckBox, >+ ColorWell, >+ Column, >+ ColumnHeader, >+ ComboBox, >+ Definition, >+ DescriptionList, >+ DescriptionListTerm, >+ DescriptionListDetail, >+ Details, >+ Directory, >+ DisclosureTriangle, >+ Div, >+ Document, >+ DocumentArticle, >+ DocumentMath, >+ DocumentNote, >+ Drawer, >+ EditableText, >+ Feed, >+ Figure, >+ Footer, >+ Footnote, >+ Form, >+ GraphicsDocument, >+ GraphicsObject, >+ GraphicsSymbol, >+ Grid, >+ GridCell, >+ Group, >+ GrowArea, >+ Heading, >+ HelpTag, >+ HorizontalRule, >+ Ignored, >+ Inline, >+ Image, >+ ImageMap, >+ ImageMapLink, >+ Incrementor, >+ Label, >+ LandmarkBanner, >+ LandmarkComplementary, >+ LandmarkContentInfo, >+ LandmarkDocRegion, >+ LandmarkMain, >+ LandmarkNavigation, >+ LandmarkRegion, >+ LandmarkSearch, >+ Legend, >+ Link, >+ List, >+ ListBox, >+ ListBoxOption, >+ ListItem, >+ ListMarker, >+ Mark, >+ MathElement, >+ Matte, >+ Menu, >+ MenuBar, >+ MenuButton, >+ MenuItem, >+ MenuItemCheckbox, >+ MenuItemRadio, >+ MenuListPopup, >+ MenuListOption, >+ Outline, >+ Paragraph, >+ PopUpButton, >+ Pre, >+ Presentational, >+ ProgressIndicator, >+ RadioButton, >+ RadioGroup, >+ RowHeader, >+ Row, >+ RowGroup, >+ RubyBase, >+ RubyBlock, >+ RubyInline, >+ RubyRun, >+ RubyText, >+ Ruler, >+ RulerMarker, >+ ScrollArea, >+ ScrollBar, >+ SearchField, >+ Sheet, >+ Slider, >+ SliderThumb, >+ SpinButton, >+ SpinButtonPart, >+ SplitGroup, >+ Splitter, >+ StaticText, >+ Summary, >+ Switch, >+ SystemWide, >+ SVGRoot, >+ SVGText, >+ SVGTSpan, >+ SVGTextPath, >+ TabGroup, >+ TabList, >+ TabPanel, >+ Tab, >+ Table, >+ TableHeaderContainer, >+ TextArea, >+ TextGroup, >+ Term, >+ Time, >+ Tree, >+ TreeGrid, >+ TreeItem, >+ TextField, >+ ToggleButton, >+ Toolbar, >+ Unknown, >+ UserInterfaceTooltip, >+ ValueIndicator, >+ Video, >+ WebApplication, >+ WebArea, >+ WebCoreLink, >+ Window, >+}; >+ >+class AccessibilityObjectInterface { >+public: >+ virtual ~AccessibilityObjectInterface() = default; >+ >+ virtual bool isMediaControlLabel() const = 0; >+ virtual AccessibilityRole roleValue() const = 0; >+ virtual bool isAttachment() const = 0; >+}; >+ >+} >Index: Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp >=================================================================== >--- Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp (nonexistent) >+++ Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp (working copy) >@@ -0,0 +1,129 @@ >+/* >+ * Copyright (C) 2019 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ >+#include "config.h" >+#include "AXIsolatedTree.h" >+ >+#include "AXIsolatedTreeNode.h" >+#include "Page.h" >+#include <wtf/NeverDestroyed.h> >+ >+namespace WebCore { >+ >+static unsigned s_treeIDCount = 0; >+ >+HashMap<AXIsolatedTreeID, Ref<AXIsolatedTree>>& AXIsolatedTree::treeCache() >+{ >+ static NeverDestroyed<HashMap<AXIsolatedTreeID, Ref<AXIsolatedTree>>> map; >+ return map; >+} >+ >+AXIsolatedTree::AXIsolatedTree() >+ : m_treeID(++s_treeIDCount) >+{ >+} >+ >+AXIsolatedTree::~AXIsolatedTree() = default; >+ >+Ref<AXIsolatedTree> AXIsolatedTree::create() >+{ >+ ASSERT(isMainThread()); >+ return adoptRef(*new AXIsolatedTree()); >+} >+ >+RefPtr<AXIsolatedTree> AXIsolatedTree::treeForID(AXIsolatedTreeID treeID) >+{ >+ return treeCache().get(treeID); >+} >+ >+RefPtr<AXIsolatedTree> AXIsolatedTree::treeForPageID(uint64_t pageID, bool create) >+{ >+ static Lock cacheLock; >+ static NeverDestroyed<HashMap<uint64_t, Ref<AXIsolatedTree>>> pageMap; >+ >+ LockHolder locker(cacheLock); >+ >+ if (auto tree = pageMap.get().get(pageID)) { >+ return makeRefPtr(tree); >+ } >+ >+ if (!create) >+ return nullptr; >+ >+ RefPtr<AXIsolatedTree> newTree = AXIsolatedTree::create(); >+ pageMap.get().set(pageID, newTree.copyRef()); >+ treeCache().set(newTree->treeIdentifier(), newTree.copyRef()); >+ return newTree; >+} >+ >+RefPtr<AXIsolatedTreeNode> AXIsolatedTree::nodeForID(AXID axID) const >+{ >+ ASSERT(!isMainThread()); >+ if (!axID) >+ return nullptr; >+ return m_readerThreadNodeMap.get(axID); >+} >+ >+RefPtr<AXIsolatedTreeNode> AXIsolatedTree::rootNode() >+{ >+ return nodeForID(m_rootNodeID); >+} >+ >+void AXIsolatedTree::removeNode(AXID axID) >+{ >+ LockHolder locker(m_changeLogLock); >+ m_pendingRemovals.append(axID); >+} >+ >+void AXIsolatedTree::appendNodeChanges(Vector<RefPtr<AXIsolatedTreeNode>>& log) >+{ >+ LockHolder locker(m_changeLogLock); >+ m_pendingAppends.appendVector(log); >+} >+ >+void AXIsolatedTree::applyPendingChanges() >+{ >+ RELEASE_ASSERT(!isMainThread()); >+ >+ LockHolder locker(m_changeLogLock); >+ Vector<RefPtr<AXIsolatedTreeNode>> appendCopy({ WTFMove(m_pendingAppends) }); >+ Vector<AXID> removeCopy({ WTFMove(m_pendingRemovals) }); >+ locker.unlockEarly(); >+ >+ for (auto& item : appendCopy) { >+ m_readerThreadNodeMap.set(item->identifier(), *item); >+ if (item->isRootNode()) >+ m_rootNodeID = item->identifier(); >+ } >+ >+ for (auto item : removeCopy) >+ m_readerThreadNodeMap.remove(item); >+} >+ >+} // namespace WebCore >+ >+#endif // ENABLE(ACCESSIBILITY_ISOLATED_TREE) >Index: Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h >=================================================================== >--- Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h (nonexistent) >+++ Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h (working copy) >@@ -0,0 +1,83 @@ >+/* >+ * Copyright (C) 2019 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ >+#include "AXIsolatedTreeNode.h" >+#include <wtf/HashMap.h> >+#include <wtf/RefPtr.h> >+#include <wtf/ThreadSafeRefCounted.h> >+ >+namespace WebCore { >+ >+class Page; >+ >+typedef unsigned AXIsolatedTreeID; >+ >+class AXIsolatedTree : public ThreadSafeRefCounted<AXIsolatedTree> { >+ WTF_MAKE_NONCOPYABLE(AXIsolatedTree); WTF_MAKE_FAST_ALLOCATED; >+ >+public: >+ static Ref<AXIsolatedTree> create(); >+ virtual ~AXIsolatedTree(); >+ >+ // Creation must happen on main thread. >+ WEBCORE_EXPORT static RefPtr<AXIsolatedTree> treeForPageID(uint64_t, bool create); >+ WEBCORE_EXPORT static RefPtr<AXIsolatedTree> treeForID(AXIsolatedTreeID); >+ >+ WEBCORE_EXPORT RefPtr<AXIsolatedTreeNode> rootNode(); >+ RefPtr<AXIsolatedTreeNode> nodeForID(AXID) const; >+ >+ // Call on main thread >+ void appendNodeChanges(Vector<RefPtr<AXIsolatedTreeNode>>&); >+ void removeNode(AXID); >+ >+ // Call on AX thread >+ WEBCORE_EXPORT void applyPendingChanges(); >+ >+ AXIsolatedTreeID treeIdentifier() const { return m_treeID; } >+ >+private: >+ AXIsolatedTree(); >+ >+ static HashMap<AXIsolatedTreeID, Ref<AXIsolatedTree>>& treeCache(); >+ >+ // Only access on AX thread requesting data. >+ HashMap<AXID, Ref<AXIsolatedTreeNode>> m_readerThreadNodeMap; >+ >+ // Written to by main thread under lock, accessed and applied by AX thread. >+ Vector<RefPtr<AXIsolatedTreeNode>> m_pendingAppends; >+ Vector<AXID> m_pendingRemovals; >+ Lock m_changeLogLock; >+ >+ AXIsolatedTreeID m_treeID; >+ AXID m_rootNodeID; >+}; >+ >+} // namespace WebCore >+ >+#endif >Index: Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp >=================================================================== >--- Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp (nonexistent) >+++ Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp (working copy) >@@ -0,0 +1,130 @@ >+/* >+ * Copyright (C) 2019 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ >+#include "config.h" >+#include "AXIsolatedTreeNode.h" >+ >+#include "AccessibilityObject.h" >+ >+namespace WebCore { >+ >+AXIsolatedTreeNode::AXIsolatedTreeNode(const AccessibilityObject& object) >+ : m_identifier(object.axObjectID()) >+{ >+ ASSERT(isMainThread()); >+#if !ASSERT_DISABLED >+ m_initialized = true; >+#endif >+ initializeAttributeData(object); >+} >+ >+Ref<AXIsolatedTreeNode> AXIsolatedTreeNode::create(const AccessibilityObject& object) >+{ >+ return adoptRef(*new AXIsolatedTreeNode(object)); >+} >+ >+AXIsolatedTreeNode::~AXIsolatedTreeNode() = default; >+ >+void AXIsolatedTreeNode::initializeAttributeData(const AccessibilityObject& object) >+{ >+ setProperty(AXPropertyName::RoleValue, static_cast<int>(object.roleValue())); >+ setProperty(AXPropertyName::IsAttachment, object.isAttachment()); >+ setProperty(AXPropertyName::IsMediaControlLabel, object.isMediaControlLabel()); >+} >+ >+void AXIsolatedTreeNode::setProperty(AXPropertyName propertyName, AttributeValueVariant&& value, bool shouldRemove) >+{ >+ ASSERT(!m_initialized); >+ ASSERT(isMainThread()); >+ >+ if (shouldRemove) >+ m_attributeMap.remove(propertyName); >+ else >+ m_attributeMap.set(propertyName, value); >+} >+ >+void AXIsolatedTreeNode::appendChild(AXID axID) >+{ >+ ASSERT(isMainThread()); >+ m_children.append(axID); >+} >+ >+double AXIsolatedTreeNode::doubleAttributeValue(AXPropertyName propertyName) const >+{ >+ auto value = m_attributeMap.get(propertyName); >+ return WTF::switchOn(value, [&] (double& typedValue) { >+ return typedValue; >+ }, [&] (auto&) { >+ return 0.0; >+ }); >+} >+ >+unsigned AXIsolatedTreeNode::unsignedAttributeValue(AXPropertyName propertyName) const >+{ >+ auto value = m_attributeMap.get(propertyName); >+ return WTF::switchOn(value, [&] (unsigned& typedValue) { >+ return typedValue; >+ }, [&] (auto&) { >+ return 0; >+ }); >+} >+ >+bool AXIsolatedTreeNode::boolAttributeValue(AXPropertyName propertyName) const >+{ >+ auto value = m_attributeMap.get(propertyName); >+ return WTF::switchOn(value, [&] (bool& typedValue) { >+ return typedValue; >+ }, [&] (auto&) { >+ return false; >+ }); >+} >+ >+const String& AXIsolatedTreeNode::stringAttributeValue(AXPropertyName propertyName) const >+{ >+ auto value = m_attributeMap.get(propertyName); >+ return WTF::switchOn(value, [&] (String& typedValue) { >+ return typedValue; >+ }, [&] (auto&) { >+ return nullAtom(); >+ }); >+} >+ >+int AXIsolatedTreeNode::intAttributeValue(AXPropertyName propertyName) const >+{ >+ auto value = m_attributeMap.get(propertyName); >+ return WTF::switchOn(value, [&] (int& typedValue) { >+ return typedValue; >+ }, [&] (auto&) { >+ return 0; >+ }); >+} >+ >+#pragma mark - Overrides >+ >+} // namespace WebCore >+ >+#endif // ENABLE((ACCESSIBILITY_ISOLATED_TREE) >Index: Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h >=================================================================== >--- Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h (nonexistent) >+++ Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h (working copy) >@@ -0,0 +1,120 @@ >+/* >+* Copyright (C) 2019 Apple Inc. All rights reserved. >+* >+* Redistribution and use in source and binary forms, with or without >+* modification, are permitted provided that the following conditions >+* are met: >+* 1. Redistributions of source code must retain the above copyright >+* notice, this list of conditions and the following disclaimer. >+* 2. Redistributions in binary form must reproduce the above copyright >+* notice, this list of conditions and the following disclaimer in the >+* documentation and/or other materials provided with the distribution. >+* >+* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+* THE POSSIBILITY OF SUCH DAMAGE. >+*/ >+ >+#pragma once >+ >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ >+#include "AccessibilityObjectInterface.h" >+#include <wtf/Forward.h> >+#include <wtf/HashMap.h> >+#include <wtf/RefPtr.h> >+#include <wtf/RetainPtr.h> >+#include <wtf/ThreadSafeRefCounted.h> >+#include <wtf/Variant.h> >+#include <wtf/Vector.h> >+#include <wtf/WeakPtr.h> >+ >+#if PLATFORM(COCOA) >+OBJC_CLASS WebAccessibilityObjectWrapper; >+#endif >+ >+namespace WebCore { >+ >+class AccessibilityObject; >+ >+class AXIsolatedTreeNode final : public AccessibilityObjectInterface, public ThreadSafeRefCounted<AXIsolatedTreeNode>, public CanMakeWeakPtr<AXIsolatedTreeNode> { >+ >+public: >+ enum class AXPropertyName : uint8_t { >+ None = 0, >+ RoleValue = 1, >+ IsAttachment, >+ IsMediaControlLabel, >+ }; >+ >+ static Ref<AXIsolatedTreeNode> create(const AccessibilityObject&); >+ virtual ~AXIsolatedTreeNode(); >+ >+ AXID identifier() const { return m_identifier; } >+ >+ bool isRootNode() const { return m_isRootNode; } >+ void setIsRootNode(bool value) >+ { >+ ASSERT(isMainThread()); >+ m_isRootNode = value; >+ } >+ >+ void setParent(AXID parent) >+ { >+ ASSERT(isMainThread()); >+ m_parent = parent; >+ } >+ AXID parent() const { return m_parent; } >+ >+ void appendChild(AXID); >+ const Vector<AXID>& children() { return m_children; }; >+ >+#if PLATFORM(COCOA) >+ WebAccessibilityObjectWrapper* wrapper() const { return m_wrapper.get(); } >+ void setWrapper(WebAccessibilityObjectWrapper* wrapper) { m_wrapper = wrapper; } >+#endif >+ >+protected: >+ AXIsolatedTreeNode() = default; >+ >+private: >+ AXIsolatedTreeNode(const AccessibilityObject&); >+ void initializeAttributeData(const AccessibilityObject&); >+ >+ bool isMediaControlLabel() const override { return boolAttributeValue(AXPropertyName::IsMediaControlLabel); } >+ bool isAttachment() const override { return boolAttributeValue(AXPropertyName::IsAttachment); } >+ AccessibilityRole roleValue() const override { return static_cast<AccessibilityRole>(intAttributeValue(AXPropertyName::RoleValue)); } >+ >+ using AttributeValueVariant = Variant<std::nullptr_t, String, bool, int, unsigned, double>; >+ void setProperty(AXPropertyName, AttributeValueVariant&&, bool shouldRemove = false); >+ >+ bool boolAttributeValue(AXPropertyName) const; >+ const String& stringAttributeValue(AXPropertyName) const; >+ int intAttributeValue(AXPropertyName) const; >+ unsigned unsignedAttributeValue(AXPropertyName) const; >+ double doubleAttributeValue(AXPropertyName) const; >+ >+ AXID m_parent; >+ AXID m_identifier; >+ bool m_isRootNode; >+ bool m_initialized; >+ Vector<AXID> m_children; >+ >+#if PLATFORM(COCOA) >+ RetainPtr<WebAccessibilityObjectWrapper> m_wrapper; >+#endif >+ >+ HashMap<AXPropertyName, AttributeValueVariant, WTF::IntHash<AXPropertyName>, WTF::StrongEnumHashTraits<AXPropertyName>> m_attributeMap; >+}; >+ >+} // namespace WebCore >+ >+#endif // ENABLE((ACCESSIBILITY_ISOLATED_TREE)) >Index: Source/WebCore/accessibility/mac/AXObjectCacheMac.mm >=================================================================== >--- Source/WebCore/accessibility/mac/AXObjectCacheMac.mm (revision 240470) >+++ Source/WebCore/accessibility/mac/AXObjectCacheMac.mm (working copy) >@@ -28,6 +28,7 @@ > > #if HAVE(ACCESSIBILITY) && PLATFORM(MAC) > >+#import "AXIsolatedTreeNode.h" > #import "AccessibilityObject.h" > #import "AccessibilityTable.h" > #import "RenderObject.h" >@@ -237,6 +238,15 @@ > obj->setWrapper(nullptr); > } > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+void AXObjectCache::associateIsolatedTreeNode(AccessibilityObject& object, AXIsolatedTreeNode& node, AXIsolatedTreeID treeID) >+{ >+ ASSERT(!object.wrapper().isolatedTreeIdentifier); >+ object.wrapper().isolatedTreeIdentifier = treeID; >+ node.setWrapper(object.wrapper()); >+} >+#endif >+ > void AXObjectCache::attachWrapper(AccessibilityObject* obj) > { > RetainPtr<WebAccessibilityObjectWrapper> wrapper = adoptNS([[WebAccessibilityObjectWrapper alloc] initWithAccessibilityObject:obj]); >Index: Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h >=================================================================== >--- Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h (revision 240470) >+++ Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h (working copy) >@@ -29,11 +29,18 @@ > #ifndef WebAccessibilityObjectWrapperBase_h > #define WebAccessibilityObjectWrapperBase_h > >+#include "AXIsolatedTree.h" > #include "AccessibilityObject.h" > #include <CoreGraphics/CoreGraphics.h> >+#include <wtf/RefPtr.h> >+#include <wtf/Variant.h> >+#include <wtf/WeakPtr.h> > > namespace WebCore { > class AccessibilityObject; >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+class AXIsolatedTreeNode; >+#endif > struct AccessibilitySearchCriteria; > class IntRect; > class FloatPoint; >@@ -44,13 +51,26 @@ > > @interface WebAccessibilityObjectWrapperBase : NSObject { > WebCore::AccessibilityObject* m_object; >+ WebCore::AXID _identifier; > } > > - (id)initWithAccessibilityObject:(WebCore::AccessibilityObject*)axObject; >+ >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+@property (nonatomic, readonly) RefPtr<WebCore::AXIsolatedTreeNode> isolatedTreeNode; >+@property (nonatomic, assign) WebCore::AXIsolatedTreeID isolatedTreeIdentifier; >+#endif >+ > - (void)detach; >+ >+@property (nonatomic, assign) WebCore::AXID identifier; >+ > - (WebCore::AccessibilityObject*)accessibilityObject; > - (BOOL)updateObjectBackingStore; > >+// This can be either an AccessibilityObject or an AXIsolatedTreeNode >+- (WebCore::AccessibilityObjectInterface*)axBackingObject; >+ > // These are pre-fixed with base so that AppKit does not end up calling into these directly (bypassing safety checks). > - (NSString *)baseAccessibilityTitle; > - (NSString *)baseAccessibilityDescription; >Index: Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm >=================================================================== >--- Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm (revision 240470) >+++ Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm (working copy) >@@ -31,10 +31,13 @@ > > #if HAVE(ACCESSIBILITY) > >+#import "AXIsolatedTree.h" >+#import "AXIsolatedTreeNode.h" > #import "AXObjectCache.h" > #import "AccessibilityARIAGridRow.h" > #import "AccessibilityList.h" > #import "AccessibilityListBox.h" >+#import "AccessibilityObjectInterface.h" > #import "AccessibilityRenderObject.h" > #import "AccessibilityScrollView.h" > #import "AccessibilitySpinButton.h" >@@ -270,6 +273,8 @@ > > @implementation WebAccessibilityObjectWrapperBase > >+@synthesize identifier=_identifier; >+ > - (id)initWithAccessibilityObject:(AccessibilityObject*)axObject > { > if (!(self = [super init])) >@@ -276,16 +281,31 @@ > return nil; > > m_object = axObject; >+ _identifier = m_object->axObjectID(); > return self; > } > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+- (RefPtr<WebCore::AXIsolatedTreeNode>)isolatedTreeNode >+{ >+ RELEASE_ASSERT(!isMainThread()); >+ return AXIsolatedTree::treeForID(_isolatedTreeIdentifier)->nodeForID(_identifier); >+} >+#endif >+ > - (void)detach > { > m_object = nullptr; >+ _identifier = 0; > } > > - (BOOL)updateObjectBackingStore > { >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ RELEASE_ASSERT(!isMainThread()); >+ AXIsolatedTree::treeForID(self.isolatedTreeIdentifier)->applyPendingChanges(); >+ return _identifier; >+#else > // Calling updateBackingStore() can invalidate this element so self must be retained. > // If it does become invalidated, m_object will be nil. > CFRetain((__bridge CFTypeRef)self); >@@ -299,6 +319,7 @@ > return NO; > > return YES; >+#endif > } > > - (id)attachmentView >@@ -360,11 +381,21 @@ > return [NSString string]; > } > >+#define _axBackingObject self.axBackingObject >+- (WebCore::AccessibilityObjectInterface*)axBackingObject >+{ >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ return self.isolatedTreeNode.get(); >+#else >+ return m_object; >+#endif >+} >+ > - (NSString *)baseAccessibilityDescription > { > // Static text objects should not have a description. Its content is communicated in its AXValue. > // One exception is the media control labels that have a value and a description. Those are set programatically. >- if (m_object->roleValue() == AccessibilityRole::StaticText && !m_object->isMediaControlLabel()) >+ if (_axBackingObject->roleValue() == AccessibilityRole::StaticText && !_axBackingObject->isMediaControlLabel()) > return [NSString string]; > > Vector<AccessibilityText> textOrder; >Index: Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm >=================================================================== >--- Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (revision 240470) >+++ Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (working copy) >@@ -416,6 +416,8 @@ > #define NSAccessibilityRelativeFrameAttribute @"AXRelativeFrame" > #endif > >+#define _axBackingObject self.axBackingObject >+ > extern "C" AXUIElementRef NSAccessibilityCreateAXUIElementRef(id element); > > @implementation WebAccessibilityObjectWrapper >@@ -1970,10 +1972,10 @@ > - (NSString*)role > { > ALLOW_DEPRECATED_DECLARATIONS_BEGIN >- if (m_object->isAttachment()) >+ if (_axBackingObject->isAttachment()) > return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityRoleAttribute]; > ALLOW_DEPRECATED_DECLARATIONS_END >- AccessibilityRole role = m_object->roleValue(); >+ AccessibilityRole role = _axBackingObject->roleValue(); > > if (role == AccessibilityRole::Label && is<AccessibilityLabel>(*m_object) && downcast<AccessibilityLabel>(*m_object).containsOnlyStaticText()) > role = AccessibilityRole::StaticText; >@@ -2000,7 +2002,7 @@ > if (m_object->isSearchField()) > return NSAccessibilitySearchFieldSubrole; > >- if (m_object->isAttachment()) { >+ if (_axBackingObject->isAttachment()) { > NSView* attachView = [self attachmentView]; > if ([[attachView accessibilityAttributeNames] containsObject:NSAccessibilitySubroleAttribute]) > return [attachView accessibilityAttributeValue:NSAccessibilitySubroleAttribute]; >@@ -2211,7 +2213,7 @@ > > ALLOW_DEPRECATED_DECLARATIONS_BEGIN > // attachments have the AXImage role, but a different subrole >- if (m_object->isAttachment()) >+ if (_axBackingObject->isAttachment()) > return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityRoleDescriptionAttribute]; > ALLOW_DEPRECATED_DECLARATIONS_END > >@@ -2568,7 +2570,7 @@ > return [NSNumber numberWithBool: m_object->isVisited()]; > > if ([attributeName isEqualToString: NSAccessibilityTitleAttribute]) { >- if (m_object->isAttachment()) { >+ if (_axBackingObject->isAttachment()) { > if ([[[self attachmentView] accessibilityAttributeNames] containsObject:NSAccessibilityTitleAttribute]) > return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityTitleAttribute]; > } >@@ -2585,7 +2587,7 @@ > } > > if ([attributeName isEqualToString: NSAccessibilityDescriptionAttribute]) { >- if (m_object->isAttachment()) { >+ if (_axBackingObject->isAttachment()) { > if ([[[self attachmentView] accessibilityAttributeNames] containsObject:NSAccessibilityDescriptionAttribute]) > return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityDescriptionAttribute]; > } >@@ -2593,7 +2595,7 @@ > } > > if ([attributeName isEqualToString: NSAccessibilityValueAttribute]) { >- if (m_object->isAttachment()) { >+ if (_axBackingObject->isAttachment()) { > if ([[[self attachmentView] accessibilityAttributeNames] containsObject:NSAccessibilityValueAttribute]) > return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityValueAttribute]; > } >Index: Source/WebCore/dom/Document.cpp >=================================================================== >--- Source/WebCore/dom/Document.cpp (revision 240470) >+++ Source/WebCore/dom/Document.cpp (working copy) >@@ -8217,6 +8217,11 @@ > > return *m_logger; > } >+ >+Optional<uint64_t> Document::pageID() const >+{ >+ return m_frame->loader().client().pageID(); >+} > > void Document::hasStorageAccess(Ref<DeferredPromise>&& promise) > { >Index: Source/WebCore/dom/Document.h >=================================================================== >--- Source/WebCore/dom/Document.h (revision 240470) >+++ Source/WebCore/dom/Document.h (working copy) >@@ -648,6 +648,7 @@ > WEBCORE_EXPORT AXObjectCache* axObjectCache() const; > void clearAXObjectCache(); > >+ Optional<uint64_t> pageID() const; > // to get visually ordered hebrew and arabic pages right > void setVisuallyOrdered(); > bool visuallyOrdered() const { return m_visuallyOrdered; } >Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 240470) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,15 @@ >+2019-01-25 Chris Fleizach <cfleizach@apple.com> >+ >+ AX: Introduce a static accessibility tree >+ https://bugs.webkit.org/show_bug.cgi?id=193348 >+ <rdar://problem/47203295> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Configurations/FeatureDefines.xcconfig: >+ * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm: >+ (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]): >+ > 2019-01-24 Ryosuke Niwa <rniwa@webkit.org> > > iOS: Split keyboard should not shrink visualViewport.height >Index: Source/WebKit/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/WebKit/Configurations/FeatureDefines.xcconfig (revision 240470) >+++ Source/WebKit/Configurations/FeatureDefines.xcconfig (working copy) >@@ -40,6 +40,8 @@ > ENABLE_ACCELERATED_OVERFLOW_SCROLLING = $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING_$(WK_COCOA_TOUCH)); > ENABLE_ACCELERATED_OVERFLOW_SCROLLING_cocoatouch = ENABLE_ACCELERATED_OVERFLOW_SCROLLING; > >+ENABLE_ACCESSIBILITY_ISOLATED_TREE = ; >+ > ENABLE_APPLE_PAY = $(ENABLE_APPLE_PAY_$(WK_PLATFORM_NAME)); > ENABLE_APPLE_PAY_iphoneos = ENABLE_APPLE_PAY; > ENABLE_APPLE_PAY_iphonesimulator = ENABLE_APPLE_PAY; >@@ -407,4 +409,4 @@ > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_ACCESSIBILITY_ISOLATED_TREE) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >Index: Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h >=================================================================== >--- Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h (revision 240470) >+++ Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h (working copy) >@@ -32,7 +32,9 @@ > > @interface WKAccessibilityWebPageObjectBase : NSObject { > WebKit::WebPage* m_page; >+ uint64_t m_pageID; > id m_parent; >+ bool m_hasPlugin; > } > > - (void)setWebPage:(WebKit::WebPage*)page; >Index: Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm >=================================================================== >--- Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm (revision 240470) >+++ Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm (working copy) >@@ -34,6 +34,7 @@ > #import "WKSharedAPICast.h" > #import "WKString.h" > #import "WKStringCF.h" >+#import <WebCore/AXIsolatedTree.h> > #import <WebCore/AXObjectCache.h> > #import <WebCore/Document.h> > #import <WebCore/Frame.h> >@@ -47,33 +48,72 @@ > > @implementation WKAccessibilityWebPageObjectBase > >-- (id)accessibilityRootObjectWrapper >+- (WebCore::AXObjectCache*)axObjectCache > { >- if (!WebCore::AXObjectCache::accessibilityEnabled()) >- WebCore::AXObjectCache::enableAccessibility(); >- >- if (!m_page) >- return nil; >- >- NSObject* mainFramePluginAccessibilityObjectWrapper = m_page->accessibilityObjectForMainFramePlugin(); >- if (mainFramePluginAccessibilityObjectWrapper) >- return mainFramePluginAccessibilityObjectWrapper; >- > WebCore::Page* page = m_page->corePage(); > if (!page) > return nil; >- > WebCore::Frame& core = page->mainFrame(); > if (!core.document()) > return nil; >+ >+ return core.document()->axObjectCache(); >+} >+ >+- (id)accessibilityPluginObject >+{ >+ auto retrieveBlock = [&self]() -> id { >+ id axPlugin = nil; >+ auto dispatchBlock = [&axPlugin, &self] { >+ if (self->m_page) >+ axPlugin = self->m_page->accessibilityObjectForMainFramePlugin(); >+ }; >+ >+ if (isMainThread()) >+ dispatchBlock(); >+ else >+ callOnMainThreadAndWait([&dispatchBlock] { dispatchBlock(); }); >+ return axPlugin; >+ }; > >- WebCore::AXObjectCache* cache = core.document()->axObjectCache(); >- if (!cache) >- return nil; >- >- if (WebCore::AccessibilityObject* root = cache->rootObject()) >- return root->wrapper(); >- >+ return retrieveBlock(); >+} >+ >+- (id)accessibilityRootObjectWrapper >+{ >+ if (!WebCore::AXObjectCache::accessibilityEnabled()) >+ WebCore::AXObjectCache::enableAccessibility(); >+ >+ if (m_hasPlugin) >+ return self.accessibilityPluginObject; >+ >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ auto generateBlock = [&] { >+ auto dispatchBlock = [&self] { >+ if (AXObjectCache* cache = [self axObjectCache]) >+ cache->generateIsolatedAccessibilityTree(); >+ }; >+ >+ if (isMainThread()) >+ dispatchBlock(); >+ else >+ callOnMainThreadAndWait([&dispatchBlock] { dispatchBlock(); }); >+ }; >+ >+ auto tree = AXIsolatedTree::treeForPageID(m_pageID); >+ auto rootNode = tree->rootNode(); >+ if (!rootNode) >+ generateBlock(); >+ >+ tree->applyPendingChanges(); >+ if ((rootNode = tree->rootNode())) >+ return rootNode->wrapper(); >+#else >+ if (AXObjectCache* cache = [self axObjectCache]) { >+ if (WebCore::AccessibilityObject* root = cache->rootObject()) >+ return root->wrapper(); >+ } >+#endif > return nil; > } > >@@ -80,6 +120,14 @@ > - (void)setWebPage:(WebPage*)page > { > m_page = page; >+ >+ if (page) { >+ m_pageID = page->pageID(); >+ m_hasPlugin = page->accessibilityObjectForMainFramePlugin(); >+ } else { >+ m_pageID = 0; >+ m_hasPlugin = false; >+ } > } > > - (void)setRemoteParent:(id)parent >Index: Source/WebKitLegacy/mac/ChangeLog >=================================================================== >--- Source/WebKitLegacy/mac/ChangeLog (revision 240470) >+++ Source/WebKitLegacy/mac/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2019-01-25 Chris Fleizach <cfleizach@apple.com> >+ >+ AX: Introduce a static accessibility tree >+ https://bugs.webkit.org/show_bug.cgi?id=193348 >+ <rdar://problem/47203295> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Configurations/FeatureDefines.xcconfig: >+ > 2019-01-24 John Wilander <wilander@apple.com> > > Add Ad Click Attribution as an internal/experimental feature >Index: Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig (revision 240470) >+++ Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig (working copy) >@@ -40,6 +40,8 @@ > ENABLE_ACCELERATED_OVERFLOW_SCROLLING = $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING_$(WK_COCOA_TOUCH)); > ENABLE_ACCELERATED_OVERFLOW_SCROLLING_cocoatouch = ENABLE_ACCELERATED_OVERFLOW_SCROLLING; > >+ENABLE_ACCESSIBILITY_ISOLATED_TREE = ; >+ > ENABLE_APPLE_PAY = $(ENABLE_APPLE_PAY_$(WK_PLATFORM_NAME)); > ENABLE_APPLE_PAY_iphoneos = ENABLE_APPLE_PAY; > ENABLE_APPLE_PAY_iphonesimulator = ENABLE_APPLE_PAY; >@@ -407,4 +409,4 @@ > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_ACCESSIBILITY_ISOLATED_TREE) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >Index: Source/cmake/WebKitFeatures.cmake >=================================================================== >--- Source/cmake/WebKitFeatures.cmake (revision 240470) >+++ Source/cmake/WebKitFeatures.cmake (working copy) >@@ -193,6 +193,7 @@ > WEBKIT_OPTION_DEFINE(ENABLE_SMOOTH_SCROLLING "Toggle smooth scrolling" PRIVATE ON) > WEBKIT_OPTION_DEFINE(ENABLE_SPEECH_SYNTHESIS "Toggle Speech Synthesis API support" PRIVATE OFF) > WEBKIT_OPTION_DEFINE(ENABLE_SPELLCHECK "Toggle Spellchecking support (requires Enchant)" PRIVATE OFF) >+ WEBKIT_OPTION_DEFINE(ENABLE_ACCESSIBILITY_STATIC_TREE "Toggle static accessibility tree support" PRIVATE OFF) > WEBKIT_OPTION_DEFINE(ENABLE_STREAMS_API "Toggle Streams API support" PRIVATE ON) > WEBKIT_OPTION_DEFINE(ENABLE_SVG_FONTS "Toggle SVG Fonts support" PRIVATE ON) > WEBKIT_OPTION_DEFINE(ENABLE_TELEPHONE_NUMBER_DETECTION "Toggle telephone number detection support" PRIVATE OFF) >Index: Tools/ChangeLog >=================================================================== >--- Tools/ChangeLog (revision 240470) >+++ Tools/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2019-01-25 Chris Fleizach <cfleizach@apple.com> >+ >+ AX: Introduce a static accessibility tree >+ https://bugs.webkit.org/show_bug.cgi?id=193348 >+ <rdar://problem/47203295> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: >+ > 2019-01-24 Ryan Haddad <ryanhaddad@apple.com> > > Update macOS JSC bot configurations >Index: Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig (revision 240470) >+++ Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig (working copy) >@@ -40,6 +40,8 @@ > ENABLE_ACCELERATED_OVERFLOW_SCROLLING = $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING_$(WK_COCOA_TOUCH)); > ENABLE_ACCELERATED_OVERFLOW_SCROLLING_cocoatouch = ENABLE_ACCELERATED_OVERFLOW_SCROLLING; > >+ENABLE_ACCESSIBILITY_ISOLATED_TREE = ; >+ > ENABLE_APPLE_PAY = $(ENABLE_APPLE_PAY_$(WK_PLATFORM_NAME)); > ENABLE_APPLE_PAY_iphoneos = ENABLE_APPLE_PAY; > ENABLE_APPLE_PAY_iphonesimulator = ENABLE_APPLE_PAY; >@@ -407,4 +409,4 @@ > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_ACCESSIBILITY_ISOLATED_TREE) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_C_LOOP) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_PAINTING_API) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CSS_TYPED_OM) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_CSS_CONIC_GRADIENTS) $(ENABLE_DARK_MODE_CSS) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_EVENTS) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_LOAD_STATISTICS) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_WEB_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_API_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WEBMETAL) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
rniwa
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193348
:
358884
|
358885
|
358886
|
358896
|
358899
|
358900
|
359627
|
359628
|
359629
|
359634
|
359635
|
359637
|
359768
|
359863
|
359864
|
359879
|
359896
|
360093
|
360097
|
360161
|
360262
|
360263
|
360271