WebKit Bugzilla
Attachment 359768 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), 101.76 KB, created by
chris fleizach
on 2019-01-22 13:23:24 PST
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
chris fleizach
Created:
2019-01-22 13:23:24 PST
Size:
101.76 KB
patch
obsolete
>Index: Source/JavaScriptCore/ChangeLog >=================================================================== >--- Source/JavaScriptCore/ChangeLog (revision 240246) >+++ Source/JavaScriptCore/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2019-01-11 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-21 Yusuke Suzuki <ysuzuki@apple.com> > > [JSC] StrictModeTypeErrorFunction is no longer used >Index: Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig (revision 240206) >+++ 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; >@@ -406,4 +408,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_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_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_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 240246) >+++ 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 240246) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,78 @@ >+2019-01-11 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 AXIsolatedTreeCache. 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::createStaticAccessibilityTree): >+ (WebCore::AXObjectCache::generateStaticAccessibilityTreeIfNeeded): >+ * accessibility/AXObjectCache.h: >+ * accessibility/AccessibilityObject.h: >+ (WebCore::AccessibilityObject::setInitializedIsolatedTreeNode): >+ (WebCore::AccessibilityObject::initializedIsolatedTreeNode const): >+ * accessibility/AccessibilityObjectInterface.h: Added. >+ * accessibility/isolatedtree: Added. >+ * accessibility/isolatedtree/AXIsolatedTreeCache.cpp: Added. >+ (WebCore::AXIsolatedTreeCache::pageRootMap): >+ (WebCore::AXIsolatedTreeCache::treeCache): >+ (WebCore::AXIsolatedTreeCache::AXIsolatedTreeCache): >+ (WebCore::AXIsolatedTreeCache::create): >+ (WebCore::AXIsolatedTreeCache::cacheForID): >+ (WebCore::AXIsolatedTreeCache::cacheForPage): >+ (WebCore::AXIsolatedTreeCache::nodeForID const): >+ (WebCore::AXIsolatedTreeCache::rootNode): >+ (WebCore::AXIsolatedTreeCache::removeNode): >+ (WebCore::AXIsolatedTreeCache::appendNodeChanges): >+ (WebCore::AXIsolatedTreeCache::applyChangeLog): >+ * accessibility/isolatedtree/AXIsolatedTreeCache.h: Added. >+ (WebCore::AXIsolatedTreeCache::cacheIdentifier const): >+ * accessibility/isolatedtree/AXIsolatedTreeNode.cpp: Added. >+ (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. >+ (WebCore::AXIsolatedTreeRelationship::create): >+ (WebCore::AXIsolatedTreeRelationship::AXIsolatedTreeRelationship): >+ (WebCore::AXIsolatedTreeRelationship::operator=): >+ (WebCore::AXIsolatedTreeRelationship::setParent): >+ (WebCore::AXIsolatedTreeRelationship::parent const): >+ (WebCore::AXIsolatedTreeRelationship::children): >+ * 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:]): >+ > 2019-01-21 Brent Fulgham <bfulgham@apple.com> > > Implement message handlers for NetworkProcess-based ResourceLoadStatistics >Index: Source/WebCore/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/WebCore/Configurations/FeatureDefines.xcconfig (revision 240206) >+++ 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; >@@ -406,4 +408,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_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_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_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 240246) >+++ Source/WebCore/PAL/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2019-01-19 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-21 David Kilzer <ddkilzer@apple.com> > > Sort PAL Xcode project file >Index: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig (revision 240206) >+++ 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; >@@ -406,4 +408,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_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_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_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 240246) >+++ Source/WebCore/Sources.txt (working copy) >@@ -405,6 +405,8 @@ > accessibility/AccessibilityTree.cpp > accessibility/AccessibilityTreeItem.cpp > accessibility/AccessibleSetValueEvent.cpp >+accessibility/isolatedtree/AXIsolatedTreeCache.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 240246) >+++ Source/WebCore/WebCore.xcodeproj/project.pbxproj (working copy) >@@ -694,6 +694,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 */; }; >@@ -715,6 +716,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 /* AXIsolatedTreeCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 29AE212B21AB9EEB00869283 /* AXIsolatedTreeCache.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 */; }; >@@ -6581,6 +6584,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>"; }; >@@ -6628,6 +6632,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 /* AXIsolatedTreeCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AXIsolatedTreeCache.h; sourceTree = "<group>"; }; >+ 29AE212C21AB9EEB00869283 /* AXIsolatedTreeCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AXIsolatedTreeCache.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>"; }; >@@ -17253,6 +17261,7 @@ > 29A812040FBB9B4100510293 /* accessibility */ = { > isa = PBXGroup; > children = ( >+ 29AE212921AB9ECB00869283 /* isolatedtree */, > AAA728EF16D1D8BC00D3BBC6 /* ios */, > 29A812050FBB9B5200510293 /* mac */, > 2981CA9D131822EC00D12F2A /* AccessibilityARIAGrid.cpp */, >@@ -17291,6 +17300,7 @@ > 2985709315CC532D006355CD /* AccessibilityNodeObject.h */, > 2981CAA5131822EC00D12F2A /* AccessibilityObject.cpp */, > 29A812180FBB9C1D00510293 /* AccessibilityObject.h */, >+ 2936BF5A21D6999E004A8FC9 /* AccessibilityObjectInterface.h */, > A409C982116D0DDD007197BD /* AccessibilityProgressIndicator.cpp */, > A409C983116D0DDD007197BD /* AccessibilityProgressIndicator.h */, > 2981CAA6131822EC00D12F2A /* AccessibilityRenderObject.cpp */, >@@ -17346,6 +17356,17 @@ > path = mac; > sourceTree = "<group>"; > }; >+ 29AE212921AB9ECB00869283 /* isolatedtree */ = { >+ isa = PBXGroup; >+ children = ( >+ 29AE212B21AB9EEB00869283 /* AXIsolatedTreeCache.h */, >+ 29AE212C21AB9EEB00869283 /* AXIsolatedTreeCache.cpp */, >+ 29AE213321ABA48A00869283 /* AXIsolatedTreeNode.h */, >+ 29AE213421ABA48A00869283 /* AXIsolatedTreeNode.cpp */, >+ ); >+ path = isolatedtree; >+ sourceTree = "<group>"; >+ }; > 2D0621461DA639EC00A7FB26 /* legacy */ = { > isa = PBXGroup; > children = ( >@@ -29984,6 +30005,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 */, >@@ -31438,6 +31460,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 */, >@@ -32373,6 +32396,7 @@ > 977E2E0F12F0FC9C00C13380 /* XSSAuditorDelegate.h in Headers */, > A5416FE618810EF80009FC5F /* YouTubeEmbedShadowElement.h in Headers */, > 7A5515F5191830A3009687D2 /* YouTubePluginReplacement.h in Headers */, >+ 29AE212D21AB9EEB00869283 /* AXIsolatedTreeCache.h in Headers */, > FD537353137B651800008DCE /* ZeroPole.h in Headers */, > ); > runOnlyForDeploymentPostprocessing = 0; >Index: Source/WebCore/accessibility/AXObjectCache.cpp >=================================================================== >--- Source/WebCore/accessibility/AXObjectCache.cpp (revision 240246) >+++ Source/WebCore/accessibility/AXObjectCache.cpp (working copy) >@@ -32,6 +32,8 @@ > > #include "AXObjectCache.h" > >+#include "AXIsolatedTreeCache.h" >+#include "AXIsolatedTreeNode.h" > #include "AccessibilityARIAGrid.h" > #include "AccessibilityARIAGridCell.h" > #include "AccessibilityARIAGridRow.h" >@@ -723,7 +725,10 @@ > object->setAXObjectID(0); > > m_idsInUse.remove(axID); >- >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ AXIsolatedTreeCache::cacheForPage(m_document.page())->removeNode(axID); >+#endif >+ > ASSERT(m_objects.size() >= m_idsInUse.size()); > } > >@@ -2907,6 +2912,40 @@ > m_deferredFocusedNodeChange.clear(); > } > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+RefPtr<AXIsolatedTreeNode> AXObjectCache::createStaticAccessibilityTree(AccessibilityObject& object, AXID parentID, AXIsolatedTreeCache& cache, Vector<RefPtr<AXIsolatedTreeNode>>& nodes) >+{ >+ RefPtr<AXIsolatedTreeNode> isolatedTreeNode = AXIsolatedTreeNode::create(object); >+ nodes.append(isolatedTreeNode); >+ >+ RefPtr<AXIsolatedTreeRelationship> relationship = AXIsolatedTreeRelationship::create(); >+ relationship->setParent(parentID); >+ object.setInitializedIsolatedTreeNode(true); >+ associateIsolatedTreeNode(object, *isolatedTreeNode, cache.cacheIdentifier()); >+ >+ for (auto child : object.children()) { >+ auto staticChild = createStaticAccessibilityTree(*child, isolatedTreeNode->identifier(), cache, nodes); >+ relationship->children().append(staticChild->identifier()); >+ } >+ >+ isolatedTreeNode->setRelationship(relationship); >+ return isolatedTreeNode; >+} >+ >+void AXObjectCache::generateStaticAccessibilityTreeIfNeeded() >+{ >+ if (rootObject()->initializedIsolatedTreeNode()) >+ return; >+ >+ RefPtr<AXIsolatedTreeCache> cache = AXIsolatedTreeCache::cacheForPage(m_document.page()); >+ Vector<RefPtr<AXIsolatedTreeNode>> nodes; >+ RefPtr<AXIsolatedTreeNode> root = createStaticAccessibilityTree(*rootObject(), 0, *cache, nodes); >+ root->setIsRootNode(true); >+ >+ cache->appendNodeChanges(nodes); >+} >+#endif >+ > void AXObjectCache::deferRecomputeIsIgnoredIfNeeded(Element* element) > { > if (!nodeAndRendererAreValid(element)) >Index: Source/WebCore/accessibility/AXObjectCache.h >=================================================================== >--- Source/WebCore/accessibility/AXObjectCache.h (revision 240246) >+++ Source/WebCore/accessibility/AXObjectCache.h (working copy) >@@ -25,6 +25,9 @@ > > #pragma once > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+#include "AXIsolatedTreeCache.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 void generateStaticAccessibilityTreeIfNeeded(); >+ >+ void associateIsolatedTreeNode(AccessibilityObject&, AXIsolatedTreeNode&, AXIsolatedCacheID); >+ RefPtr<AXIsolatedTreeNode> createStaticAccessibilityTree(AccessibilityObject&, AXID, AXIsolatedTreeCache&, Vector<RefPtr<AXIsolatedTreeNode>>&); >+#endif >+ > #if HAVE(ACCESSIBILITY) > WEBCORE_EXPORT static void enableAccessibility(); > WEBCORE_EXPORT static void disableAccessibility(); >Index: Source/WebCore/accessibility/AccessibilityObject.h >=================================================================== >--- Source/WebCore/accessibility/AccessibilityObject.h (revision 240246) >+++ 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; > >@@ -1150,6 +1000,11 @@ > void clearIsIgnoredFromParentData() { m_isIgnoredFromParentData = AccessibilityIsIgnoredFromParentData(); } > void setIsIgnoredFromParentDataForChild(AccessibilityObject*); > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ void setInitializedIsolatedTreeNode(bool initialized) { m_isolatedTreeNodeInitialized = initialized; } >+ bool initializedIsolatedTreeNode() const { return m_isolatedTreeNodeInitialized; } >+#endif >+ > protected: > AXID m_id { 0 }; > AccessibilityChildrenVector m_children; >@@ -1159,7 +1014,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,190 @@ >+/* >+ * 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; >+ >+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/AXIsolatedTreeCache.cpp >=================================================================== >--- Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeCache.cpp (nonexistent) >+++ Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeCache.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 "AXIsolatedTreeCache.h" >+ >+#include "AXIsolatedTreeNode.h" >+#include "Page.h" >+#include <wtf/NeverDestroyed.h> >+ >+namespace WebCore { >+ >+static unsigned s_cacheIDCount = 0; >+HashMap<Page*, RefPtr<AXIsolatedTreeCache>>& AXIsolatedTreeCache::pageRootMap() >+{ >+ static NeverDestroyed<HashMap<Page*, RefPtr<AXIsolatedTreeCache>>> map; >+ return map; >+} >+ >+HashMap<AXIsolatedCacheID, RefPtr<AXIsolatedTreeCache>>& AXIsolatedTreeCache::treeCache() >+{ >+ static NeverDestroyed<HashMap<AXIsolatedCacheID, RefPtr<AXIsolatedTreeCache>>> map; >+ return map; >+} >+ >+AXIsolatedTreeCache::AXIsolatedTreeCache() >+ : m_cacheID(++s_cacheIDCount) >+{ >+} >+ >+AXIsolatedTreeCache::~AXIsolatedTreeCache() = default; >+ >+Ref<AXIsolatedTreeCache> AXIsolatedTreeCache::create() >+{ >+ return adoptRef(*new AXIsolatedTreeCache()); >+} >+ >+RefPtr<AXIsolatedTreeCache> AXIsolatedTreeCache::cacheForID(AXIsolatedCacheID cacheID) >+{ >+ return treeCache().get(cacheID); >+} >+ >+RefPtr<AXIsolatedTreeCache> AXIsolatedTreeCache::cacheForPage(Page* page) >+{ >+ RefPtr<AXIsolatedTreeCache> cache = pageRootMap().get(page); >+ if (!cache) { >+ cache = AXIsolatedTreeCache::create(); >+ pageRootMap().set(page, cache); >+ treeCache().set(cache->cacheIdentifier(), cache); >+ } >+ return cache; >+} >+ >+RefPtr<AXIsolatedTreeNode> AXIsolatedTreeCache::nodeForID(AXID axID) const >+{ >+ if (!axID) >+ return nullptr; >+ return m_cache.get(axID); >+} >+ >+RefPtr<AXIsolatedTreeNode> AXIsolatedTreeCache::rootNode() >+{ >+ return nodeForID(m_rootNodeID); >+} >+ >+void AXIsolatedTreeCache::removeNode(AXID axID) >+{ >+ m_changeLogLock.lock(); >+ m_removeChangeLog.append(axID); >+ m_changeLogLock.unlock(); >+} >+ >+void AXIsolatedTreeCache::appendNodeChanges(Vector<RefPtr<AXIsolatedTreeNode>>& log) >+{ >+ m_changeLogLock.lock(); >+ m_appendChangeLog.appendVector(log); >+ m_changeLogLock.unlock(); >+} >+ >+void AXIsolatedTreeCache::applyChangeLog() >+{ >+ Vector<RefPtr<AXIsolatedTreeNode>> appendCopy; >+ Vector<AXID> removeCopy; >+ >+ m_changeLogLock.lock(); >+ appendCopy = m_appendChangeLog; >+ removeCopy = m_removeChangeLog; >+ >+ m_appendChangeLog.clear(); >+ m_removeChangeLog.clear(); >+ m_changeLogLock.unlock(); >+ >+ for (auto item : appendCopy) { >+ m_cache.set(item->identifier(), item); >+ if (item->isRootNode()) >+ m_rootNodeID = item->identifier(); >+ } >+ >+ for (auto item : removeCopy) >+ m_cache.remove(item); >+} >+ >+} // namespace WebCore >+ >+#endif // ENABLE(ACCESSIBILITY_ISOLATED_TREE) >Index: Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeCache.h >=================================================================== >--- Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeCache.h (nonexistent) >+++ Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeCache.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 AXIsolatedCacheID; >+ >+class AXIsolatedTreeCache : public ThreadSafeRefCounted<AXIsolatedTreeCache> { >+ WTF_MAKE_NONCOPYABLE(AXIsolatedTreeCache); WTF_MAKE_FAST_ALLOCATED; >+ >+public: >+ static Ref<AXIsolatedTreeCache> create(); >+ virtual ~AXIsolatedTreeCache(); >+ >+ WEBCORE_EXPORT static RefPtr<AXIsolatedTreeCache> cacheForPage(Page*); >+ WEBCORE_EXPORT static RefPtr<AXIsolatedTreeCache> cacheForID(AXIsolatedCacheID); >+ >+ 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 applyChangeLog(); >+ >+ AXIsolatedCacheID cacheIdentifier() const { return m_cacheID; } >+ >+private: >+ AXIsolatedTreeCache(); >+ >+ static HashMap<Page*, RefPtr<AXIsolatedTreeCache>>& pageRootMap(); >+ static HashMap<AXIsolatedCacheID, RefPtr<AXIsolatedTreeCache>>& treeCache(); >+ >+ // Only access on AX thread requesting data. >+ HashMap<AXID, RefPtr<AXIsolatedTreeNode>> m_cache; >+ >+ // Written to by main thread under lock, accessed and applied by AX thread. >+ Vector<RefPtr<AXIsolatedTreeNode>> m_appendChangeLog; >+ Vector<AXID> m_removeChangeLog; >+ Lock m_changeLogLock; >+ >+ AXIsolatedCacheID m_cacheID; >+ 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,118 @@ >+/* >+ * 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()) >+ , m_relationship(nullptr) >+{ >+ 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) >+{ >+ if (shouldRemove) >+ m_attributeMap.remove(propertyName); >+ else >+ m_attributeMap.set(propertyName, value); >+} >+ >+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,154 @@ >+/* >+* 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 AXIsolatedTreeRelationship : public ThreadSafeRefCounted<AXIsolatedTreeRelationship> { >+public: >+ static Ref<AXIsolatedTreeRelationship> create() { return adoptRef(*new AXIsolatedTreeRelationship()); } >+ virtual ~AXIsolatedTreeRelationship() = default; >+ >+ AXIsolatedTreeRelationship(const AXIsolatedTreeRelationship& relationship) >+ : m_parent(relationship.m_parent) >+ , m_children(relationship.m_children) >+ { >+ } >+ >+ AXIsolatedTreeRelationship& operator=(const AXIsolatedTreeRelationship& relationship) >+ { >+ m_parent = relationship.m_parent; >+ m_children = relationship.m_children; >+ return *this; >+ } >+ >+ void setParent(AXID parent) { m_parent = parent; } >+ AXID parent() const { return m_parent; } >+ >+ Vector<AXID>& children() { return m_children; }; >+ >+private: >+ AXIsolatedTreeRelationship() { } >+ >+ AXID m_parent; >+ Vector<AXID> m_children; >+}; >+ >+ >+class AXIsolatedTreeNode final : public AccessibilityObjectInterface, public ThreadSafeRefCounted<AXIsolatedTreeNode>, public CanMakeWeakPtr<AXIsolatedTreeNode> { >+ >+enum class AXPropertyName : uint16_t { >+ None = 0, >+ RoleValue = 1, >+ IsAttachment, >+ IsMediaControlLabel, >+}; >+ >+struct AXPropertyHashTraits : WTF::StrongEnumHashTraits<AXPropertyName> { >+ static const bool emptyValueIsZero = false; >+ static AXPropertyName emptyValue() { return AXPropertyName::None; }; >+ static void constructDeletedValue(AXPropertyName& slot) >+ { >+ slot = static_cast<AXPropertyName>(static_cast<int>(AXPropertyName::None) - 1); >+ } >+ static bool isDeletedValue(AXPropertyName value) >+ { >+ return static_cast<int>(value) == static_cast<int>(AXPropertyName::None) - 1; >+ } >+}; >+ >+protected: >+ AXIsolatedTreeNode() = default; >+ >+public: >+ static Ref<AXIsolatedTreeNode> create(const AccessibilityObject&); >+ virtual ~AXIsolatedTreeNode(); >+ >+ AXID identifier() const { return m_identifier; } >+ >+ void setRelationship(Ref<AXIsolatedTreeRelationship> relationship) { m_relationship = relationship; } >+ Ref<AXIsolatedTreeRelationship>& relationship() { return m_relationship; } >+ >+ bool isRootNode() const { return m_isRootNode; } >+ void setIsRootNode(bool value) { m_isRootNode = value; } >+ >+#if PLATFORM(COCOA) >+ WebAccessibilityObjectWrapper* wrapper() const { return m_wrapper.get(); } >+ void setWrapper(WebAccessibilityObjectWrapper* wrapper) >+ { >+ m_wrapper = wrapper; >+ } >+#endif >+ >+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_identifier; >+ bool m_isRootNode; >+ Ref<AXIsolatedTreeRelationship> m_relationship; >+ >+#if PLATFORM(COCOA) >+ RetainPtr<WebAccessibilityObjectWrapper> m_wrapper; >+#endif >+ >+ const HashMap<AXPropertyName, AttributeValueVariant, WTF::IntHash<AXPropertyName>, AXPropertyHashTraits> m_attributeMap; >+}; >+ >+} // namespace WebCore >+ >+#endif // ENABLE((ACCESSIBILITY_ISOLATED_TREE)) >Index: Source/WebCore/accessibility/mac/AXObjectCacheMac.mm >=================================================================== >--- Source/WebCore/accessibility/mac/AXObjectCacheMac.mm (revision 240246) >+++ 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,14 @@ > obj->setWrapper(nullptr); > } > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+void AXObjectCache::associateIsolatedTreeNode(AccessibilityObject& object, AXIsolatedTreeNode& node, AXIsolatedCacheID cacheID) >+{ >+ object.wrapper().isolatedCacheIdentifier = cacheID; >+ 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 240246) >+++ Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h (working copy) >@@ -29,11 +29,18 @@ > #ifndef WebAccessibilityObjectWrapperBase_h > #define WebAccessibilityObjectWrapperBase_h > >+#include "AXIsolatedTreeCache.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::AXIsolatedCacheID isolatedCacheIdentifier; >+#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 240246) >+++ Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm (working copy) >@@ -31,10 +31,13 @@ > > #if HAVE(ACCESSIBILITY) > >+#import "AXIsolatedTreeCache.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,30 @@ > return nil; > > m_object = axObject; >+ _identifier = m_object->axObjectID(); > return self; > } > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+- (RefPtr<WebCore::AXIsolatedTreeNode>)isolatedTreeNode >+{ >+ return AXIsolatedTreeCache::cacheForID(_isolatedCacheIdentifier)->nodeForID(_identifier); >+} >+ >+#endif >+ > - (void)detach > { > m_object = nullptr; >+ _identifier = 0; > } > > - (BOOL)updateObjectBackingStore > { >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ AXIsolatedTreeCache::cacheForID(self.isolatedCacheIdentifier)->applyChangeLog(); >+ 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 +318,7 @@ > return NO; > > return YES; >+#endif > } > > - (id)attachmentView >@@ -360,11 +380,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 240246) >+++ 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/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 240246) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,15 @@ >+2019-01-11 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-21 Brent Fulgham <bfulgham@apple.com> > > Implement message handlers for NetworkProcess-based ResourceLoadStatistics >Index: Source/WebKit/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/WebKit/Configurations/FeatureDefines.xcconfig (revision 240206) >+++ 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; >@@ -406,4 +408,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_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_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_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.mm >=================================================================== >--- Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm (revision 240246) >+++ Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm (working copy) >@@ -34,6 +34,7 @@ > #import "WKSharedAPICast.h" > #import "WKString.h" > #import "WKStringCF.h" >+#import <WebCore/AXIsolatedTreeCache.h> > #import <WebCore/AXObjectCache.h> > #import <WebCore/Document.h> > #import <WebCore/Frame.h> >@@ -47,6 +48,18 @@ > > @implementation WKAccessibilityWebPageObjectBase > >+- (WebCore::AXObjectCache*)axObjectCache >+{ >+ 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)accessibilityRootObjectWrapper > { > if (!WebCore::AXObjectCache::accessibilityEnabled()) >@@ -62,18 +75,46 @@ > WebCore::Page* page = m_page->corePage(); > if (!page) > return nil; >- >- WebCore::Frame& core = page->mainFrame(); >- if (!core.document()) >- return nil; >- >- WebCore::AXObjectCache* cache = core.document()->axObjectCache(); >+ >+ AXObjectCache* cache = [self axObjectCache]; > if (!cache) > return nil; > >+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE) >+ auto generateBlock = [&] { >+ auto dispatchBlock = [&cache] { >+ cache->generateStaticAccessibilityTreeIfNeeded(); >+ }; >+ >+ if (RunLoop::isMain()) >+ dispatchBlock(); >+ else >+ dispatch_sync(dispatch_get_main_queue(), dispatchBlock); >+ }; >+ >+ auto isolatedCache = AXIsolatedTreeCache::cacheForPage(page); >+ if (!isolatedCache) { >+ generateBlock(); >+ isolatedCache = AXIsolatedTreeCache::cacheForPage(page); >+ ASSERT(isolatedCache); >+ if (!isolatedCache) >+ return nil; >+ >+ isolatedCache->applyChangeLog(); >+ } >+ >+ auto rootNode = isolatedCache->rootNode(); >+ if (!rootNode) { >+ generateBlock(); >+ isolatedCache->applyChangeLog(); >+ } >+ >+ if ((rootNode = isolatedCache->rootNode())) >+ return rootNode->wrapper(); >+#else > if (WebCore::AccessibilityObject* root = cache->rootObject()) > return root->wrapper(); >- >+#endif > return nil; > } > >Index: Source/WebKitLegacy/mac/ChangeLog >=================================================================== >--- Source/WebKitLegacy/mac/ChangeLog (revision 240246) >+++ Source/WebKitLegacy/mac/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2019-01-11 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-15 Darin Adler <darin@apple.com> > > Use references rather than pointers for register/unregister functions, and more >Index: Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig (revision 240206) >+++ 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; >@@ -406,4 +408,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_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_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_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 240246) >+++ Source/cmake/WebKitFeatures.cmake (working copy) >@@ -187,6 +187,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 240246) >+++ Tools/ChangeLog (working copy) >@@ -1,3 +1,13 @@ >+2019-01-11 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-21 Fujii Hironori <Hironori.Fujii@sony.com> > > [GTK][WPE] libgcrypt-1.7.6 can't be compiled on Ubuntu 18.10 >Index: Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig >=================================================================== >--- Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig (revision 240206) >+++ 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; >@@ -406,4 +408,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_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_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_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