Title: [221381] trunk/Source
Revision
221381
Author
aes...@apple.com
Date
2017-08-30 10:37:43 -0700 (Wed, 30 Aug 2017)

Log Message

[Mac] Upstream Accessibility-related WebKitSystemInterface functions
https://bugs.webkit.org/show_bug.cgi?id=176093

Reviewed by Eric Carlson.

Source/WebCore:

* accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper unregisterUniqueIdForUIElement]):
(AXObjectIsTextMarker):
(AXObjectIsTextMarkerRange):
(AXTextMarkerRange):
(AXTextMarkerRangeStart):
(AXTextMarkerRangeEnd):
(getBytesFromAXTextMarker):
(isTextMarkerIgnored):
(accessibilityObjectForTextMarker):
(startOrEndTextmarkerForRange):
(nextTextMarkerForCharacterOffset):
(previousTextMarkerForCharacterOffset):
(textMarkerForCharacterOffset):
(characterOffsetForTextMarker):
(textMarkerForVisiblePosition):
(-[WebAccessibilityObjectWrapper textMarkerForFirstPositionInTextControl:]):
(visiblePositionForTextMarker):
(AXAttributeStringSetElement):
* platform/mac/WebCoreSystemInterface.h:
* platform/mac/WebCoreSystemInterface.mm:

Source/WebCore/PAL:

* PAL.xcodeproj/project.pbxproj:
* pal/spi/mac/HIServicesSPI.h: Added.
* pal/spi/mac/NSAccessibilitySPI.h:

Source/WebKit:

* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setAccessibilityWebProcessToken):
(WebKit::WebViewImpl::updateRemoteAccessibilityRegistration):
(WebKit::WebViewImpl::accessibilityRegisterUIProcessTokens):
* WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
(InitWebCoreSystemInterface):
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformInitialize):
(WebKit::WebPage::registerUIProcessAccessibilityTokens):

Source/WebKitLegacy/mac:

* WebCoreSupport/WebSystemInterface.mm:
(InitWebCoreSystemInterface):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (221380 => 221381)


--- trunk/Source/WebCore/ChangeLog	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebCore/ChangeLog	2017-08-30 17:37:43 UTC (rev 221381)
@@ -1,3 +1,34 @@
+2017-08-30  Andy Estes  <aes...@apple.com>
+
+        [Mac] Upstream Accessibility-related WebKitSystemInterface functions
+        https://bugs.webkit.org/show_bug.cgi?id=176093
+
+        Reviewed by Eric Carlson.
+
+        * accessibility/mac/AXObjectCacheMac.mm:
+        (WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        (-[WebAccessibilityObjectWrapper unregisterUniqueIdForUIElement]):
+        (AXObjectIsTextMarker):
+        (AXObjectIsTextMarkerRange):
+        (AXTextMarkerRange):
+        (AXTextMarkerRangeStart):
+        (AXTextMarkerRangeEnd):
+        (getBytesFromAXTextMarker):
+        (isTextMarkerIgnored):
+        (accessibilityObjectForTextMarker):
+        (startOrEndTextmarkerForRange):
+        (nextTextMarkerForCharacterOffset):
+        (previousTextMarkerForCharacterOffset):
+        (textMarkerForCharacterOffset):
+        (characterOffsetForTextMarker):
+        (textMarkerForVisiblePosition):
+        (-[WebAccessibilityObjectWrapper textMarkerForFirstPositionInTextControl:]):
+        (visiblePositionForTextMarker):
+        (AXAttributeStringSetElement):
+        * platform/mac/WebCoreSystemInterface.h:
+        * platform/mac/WebCoreSystemInterface.mm:
+
 2017-08-30  Antti Koivisto  <an...@apple.com>
 
         RenderMultiColumnFlowThread - Avoid render tree mutation during layout

Modified: trunk/Source/WebCore/PAL/ChangeLog (221380 => 221381)


--- trunk/Source/WebCore/PAL/ChangeLog	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebCore/PAL/ChangeLog	2017-08-30 17:37:43 UTC (rev 221381)
@@ -1,5 +1,16 @@
 2017-08-30  Andy Estes  <aes...@apple.com>
 
+        [Mac] Upstream Accessibility-related WebKitSystemInterface functions
+        https://bugs.webkit.org/show_bug.cgi?id=176093
+
+        Reviewed by Eric Carlson.
+
+        * PAL.xcodeproj/project.pbxproj:
+        * pal/spi/mac/HIServicesSPI.h: Added.
+        * pal/spi/mac/NSAccessibilitySPI.h:
+
+2017-08-30  Andy Estes  <aes...@apple.com>
+
         [Mac] Upstream Carbon-related WebKitSystemInterface functions
         https://bugs.webkit.org/show_bug.cgi?id=176087
 

Modified: trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj (221380 => 221381)


--- trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj	2017-08-30 17:37:43 UTC (rev 221381)
@@ -100,6 +100,7 @@
 		A10265871F56746100B4C844 /* FoundationSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = A10265861F56746100B4C844 /* FoundationSPI.h */; };
 		A10265891F56747A00B4C844 /* HIToolboxSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = A10265881F56747A00B4C844 /* HIToolboxSPI.h */; };
 		A102658B1F56748C00B4C844 /* QuickDrawSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = A102658A1F56748C00B4C844 /* QuickDrawSPI.h */; };
+		A102658E1F567E9D00B4C844 /* HIServicesSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = A102658D1F567E9D00B4C844 /* HIServicesSPI.h */; };
 		A1F55DCF1F5528EC00EDB75F /* MetadataSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = A1F55DCE1F5528EC00EDB75F /* MetadataSPI.h */; };
 		A30D41211F0DD0EA00B71954 /* KillRing.h in Headers */ = {isa = PBXBuildFile; fileRef = A30D411E1F0DD0EA00B71954 /* KillRing.h */; };
 		A30D41221F0DD0EA00B71954 /* KillRingNone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A30D411F1F0DD0EA00B71954 /* KillRingNone.cpp */; };
@@ -215,6 +216,7 @@
 		A10265861F56746100B4C844 /* FoundationSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FoundationSPI.h; sourceTree = "<group>"; };
 		A10265881F56747A00B4C844 /* HIToolboxSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIToolboxSPI.h; sourceTree = "<group>"; };
 		A102658A1F56748C00B4C844 /* QuickDrawSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuickDrawSPI.h; sourceTree = "<group>"; };
+		A102658D1F567E9D00B4C844 /* HIServicesSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HIServicesSPI.h; sourceTree = "<group>"; };
 		A1F55DCE1F5528EC00EDB75F /* MetadataSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MetadataSPI.h; sourceTree = "<group>"; };
 		A30D411E1F0DD0EA00B71954 /* KillRing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KillRing.h; sourceTree = "<group>"; };
 		A30D411F1F0DD0EA00B71954 /* KillRingNone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KillRingNone.cpp; sourceTree = "<group>"; };
@@ -338,6 +340,7 @@
 			children = (
 				0C7785701F45130F00F4EBB6 /* AVFoundationSPI.h */,
 				0C7785711F45130F00F4EBB6 /* DataDetectorsSPI.h */,
+				A102658D1F567E9D00B4C844 /* HIServicesSPI.h */,
 				A10265881F56747A00B4C844 /* HIToolboxSPI.h */,
 				0C7785721F45130F00F4EBB6 /* LookupSPI.h */,
 				0C7785731F45130F00F4EBB6 /* MediaRemoteSPI.h */,
@@ -510,6 +513,7 @@
 				0C2D9E731EEF5AF600DBC317 /* ExportMacros.h in Headers */,
 				A10265871F56746100B4C844 /* FoundationSPI.h in Headers */,
 				0C5AF91B1F43A4C7002EAC02 /* GraphicsServicesSPI.h in Headers */,
+				A102658E1F567E9D00B4C844 /* HIServicesSPI.h in Headers */,
 				A10265891F56747A00B4C844 /* HIToolboxSPI.h in Headers */,
 				0C2DA11F1F3BE9E000DBC317 /* ImageIOSPI.h in Headers */,
 				0C2DA1421F3BEB4900DBC317 /* IOPMLibSPI.h in Headers */,

Added: trunk/Source/WebCore/PAL/pal/spi/mac/HIServicesSPI.h (0 => 221381)


--- trunk/Source/WebCore/PAL/pal/spi/mac/HIServicesSPI.h	                        (rev 0)
+++ trunk/Source/WebCore/PAL/pal/spi/mac/HIServicesSPI.h	2017-08-30 17:37:43 UTC (rev 221381)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2017 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 USE(APPLE_INTERNAL_SDK)
+
+#include <HIServices/AXTextMarker.h>
+
+#endif
+
+typedef const struct __AXTextMarker *AXTextMarkerRef;
+typedef const struct __AXTextMarkerRange *AXTextMarkerRangeRef;
+
+WTF_EXTERN_C_BEGIN
+
+CFTypeID AXTextMarkerGetTypeID();
+CFTypeID AXTextMarkerRangeGetTypeID();
+AXTextMarkerRef AXTextMarkerCreate(CFAllocatorRef, const UInt8* bytes, CFIndex length);
+CFIndex AXTextMarkerGetLength(AXTextMarkerRef);
+const UInt8* AXTextMarkerGetBytePtr(AXTextMarkerRef);
+AXTextMarkerRangeRef AXTextMarkerRangeCreate(CFAllocatorRef, AXTextMarkerRef startMarker, AXTextMarkerRef endMarker);
+AXTextMarkerRef AXTextMarkerRangeCopyStartMarker(AXTextMarkerRangeRef);
+AXTextMarkerRef AXTextMarkerRangeCopyEndMarker(AXTextMarkerRangeRef);
+
+WTF_EXTERN_C_END

Modified: trunk/Source/WebCore/PAL/pal/spi/mac/NSAccessibilitySPI.h (221380 => 221381)


--- trunk/Source/WebCore/PAL/pal/spi/mac/NSAccessibilitySPI.h	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebCore/PAL/pal/spi/mac/NSAccessibilitySPI.h	2017-08-30 17:37:43 UTC (rev 221381)
@@ -34,9 +34,26 @@
 @interface NSAccessibilityRemoteUIElement : NSObject
 
 + (void)setRemoteUIApp:(BOOL)flag;
++ (NSData *)remoteTokenForLocalUIElement:(id)localUIElement;
++ (void)registerRemoteUIProcessIdentifier:(pid_t)pid;
++ (void)unregisterRemoteUIProcessIdentifier:(pid_t)pid;
 
+- (id)initWithRemoteToken:(NSData *)remoteToken;
+- (pid_t)processIdentifier;
+- (void)accessibilitySetPresenterProcessIdentifier:(pid_t)presenterPID;
+
+@property (retain) id windowUIElement;
+@property (retain) id topLevelUIElement;
+
 @end
 
 #endif // USE(APPLE_INTERNAL_SDK)
 
+WTF_EXTERN_C_BEGIN
+
+void NSAccessibilityHandleFocusChanged();
+void NSAccessibilityUnregisterUniqueIdForUIElement(id element);
+
+WTF_EXTERN_C_END
+
 #endif // USE(APPKIT)

Modified: trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm (221380 => 221381)


--- trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm	2017-08-30 17:37:43 UTC (rev 221381)
@@ -33,6 +33,7 @@
 #import "RenderObject.h"
 #import "WebAccessibilityObjectWrapperMac.h"
 #import "WebCoreSystemInterface.h"
+#import <pal/spi/mac/NSAccessibilitySPI.h>
 
 #if USE(APPLE_INTERNAL_SDK)
 #include <HIServices/AccessibilityPriv.h>
@@ -509,7 +510,7 @@
 
 void AXObjectCache::platformHandleFocusedUIElementChanged(Node*, Node*)
 {
-    wkAccessibilityHandleFocusChanged();
+    NSAccessibilityHandleFocusChanged();
     // AXFocusChanged is a test specific notification name and not something a real AT will be listening for
     if (UNLIKELY(axShouldRepostNotificationsForTests))
         [rootWebArea()->wrapper() accessibilityPostedNotification:@"AXFocusChanged" userInfo:nil];

Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (221380 => 221381)


--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2017-08-30 17:37:43 UTC (rev 221381)
@@ -78,6 +78,8 @@
 #import "WebCoreFrameView.h"
 #import "WebCoreObjCExtras.h"
 #import "WebCoreSystemInterface.h"
+#import <pal/spi/mac/HIServicesSPI.h>
+#import <pal/spi/mac/NSAccessibilitySPI.h>
 #import <wtf/ObjcRuntimeExtras.h>
 #if ENABLE(TREE_DEBUGGING) || ENABLE(METER_ELEMENT)
 #import <wtf/text/StringBuilder.h>
@@ -404,11 +406,13 @@
 #define NSAccessibilityHighestEditableAncestorAttribute @"AXHighestEditableAncestor"
 #endif
 
+extern "C" AXUIElementRef NSAccessibilityCreateAXUIElementRef(id element);
+
 @implementation WebAccessibilityObjectWrapper
 
 - (void)unregisterUniqueIdForUIElement
 {
-    wkUnregisterUniqueIdForElement(self);
+    NSAccessibilityUnregisterUniqueIdForUIElement(self);
 }
 
 - (void)detach
@@ -434,12 +438,12 @@
 
 static inline BOOL AXObjectIsTextMarker(id obj)
 {
-    return obj != nil && CFGetTypeID(obj) == wkGetAXTextMarkerTypeID();
+    return obj != nil && CFGetTypeID(obj) == AXTextMarkerGetTypeID();
 }
 
 static inline BOOL AXObjectIsTextMarkerRange(id obj)
 {
-    return obj != nil && CFGetTypeID(obj) == wkGetAXTextMarkerRangeTypeID();
+    return obj != nil && CFGetTypeID(obj) == AXTextMarkerRangeGetTypeID();
 }
 
 static id AXTextMarkerRange(id startMarker, id endMarker)
@@ -446,23 +450,23 @@
 {
     ASSERT(startMarker != nil);
     ASSERT(endMarker != nil);
-    ASSERT(CFGetTypeID(startMarker) == wkGetAXTextMarkerTypeID());
-    ASSERT(CFGetTypeID(endMarker) == wkGetAXTextMarkerTypeID());
-    return CFBridgingRelease(wkCreateAXTextMarkerRange((CFTypeRef)startMarker, (CFTypeRef)endMarker));
+    ASSERT(CFGetTypeID(startMarker) == AXTextMarkerGetTypeID());
+    ASSERT(CFGetTypeID(endMarker) == AXTextMarkerGetTypeID());
+    return CFBridgingRelease(AXTextMarkerRangeCreate(kCFAllocatorDefault, (AXTextMarkerRef)startMarker, (AXTextMarkerRef)endMarker));
 }
 
 static id AXTextMarkerRangeStart(id range)
 {
     ASSERT(range != nil);
-    ASSERT(CFGetTypeID(range) == wkGetAXTextMarkerRangeTypeID());
-    return CFBridgingRelease(wkCopyAXTextMarkerRangeStart(range));
+    ASSERT(CFGetTypeID(range) == AXTextMarkerRangeGetTypeID());
+    return CFBridgingRelease(AXTextMarkerRangeCopyStartMarker((AXTextMarkerRangeRef)range));
 }
 
 static id AXTextMarkerRangeEnd(id range)
 {
     ASSERT(range != nil);
-    ASSERT(CFGetTypeID(range) == wkGetAXTextMarkerRangeTypeID());
-    return CFBridgingRelease(wkCopyAXTextMarkerRangeEnd(range));
+    ASSERT(CFGetTypeID(range) == AXTextMarkerRangeGetTypeID());
+    return CFBridgingRelease(AXTextMarkerRangeCopyEndMarker((AXTextMarkerRangeRef)range));
 }
 
 #pragma mark Other helpers
@@ -531,6 +535,24 @@
 
 #pragma mark Text Marker helpers
 
+static BOOL getBytesFromAXTextMarker(CFTypeRef textMarker, void* bytes, size_t length)
+{
+    if (!textMarker)
+        return NO;
+
+    AXTextMarkerRef ref = (AXTextMarkerRef)textMarker;
+    ASSERT(CFGetTypeID(ref) == AXTextMarkerGetTypeID());
+    if (CFGetTypeID(ref) != AXTextMarkerGetTypeID())
+        return NO;
+
+    CFIndex expectedLength = length;
+    if (AXTextMarkerGetLength(ref) != expectedLength)
+        return NO;
+
+    memcpy(bytes, AXTextMarkerGetBytePtr(ref), length);
+    return YES;
+}
+
 static bool isTextMarkerIgnored(id textMarker)
 {
     if (!textMarker)
@@ -537,7 +559,7 @@
         return false;
     
     TextMarkerData textMarkerData;
-    if (!wkGetBytesFromAXTextMarker(textMarker, &textMarkerData, sizeof(textMarkerData)))
+    if (!getBytesFromAXTextMarker(textMarker, &textMarkerData, sizeof(textMarkerData)))
         return false;
     
     return textMarkerData.ignored;
@@ -554,7 +576,7 @@
         return nullptr;
     
     TextMarkerData textMarkerData;
-    if (!wkGetBytesFromAXTextMarker(textMarker, &textMarkerData, sizeof(textMarkerData)))
+    if (!getBytesFromAXTextMarker(textMarker, &textMarkerData, sizeof(textMarkerData)))
         return nullptr;
     return cache->accessibilityObjectForTextMarkerData(textMarkerData);
 }
@@ -586,7 +608,7 @@
     if (!textMarkerData.axID)
         return nil;
     
-    return CFBridgingRelease(wkCreateAXTextMarker(&textMarkerData, sizeof(textMarkerData)));
+    return CFBridgingRelease(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&textMarkerData, sizeof(textMarkerData)));
 }
 
 static id nextTextMarkerForCharacterOffset(AXObjectCache* cache, CharacterOffset& characterOffset)
@@ -598,7 +620,7 @@
     cache->textMarkerDataForNextCharacterOffset(textMarkerData, characterOffset);
     if (!textMarkerData.axID)
         return nil;
-    return CFBridgingRelease(wkCreateAXTextMarker(&textMarkerData, sizeof(textMarkerData)));
+    return CFBridgingRelease(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&textMarkerData, sizeof(textMarkerData)));
 }
 
 static id previousTextMarkerForCharacterOffset(AXObjectCache* cache, CharacterOffset& characterOffset)
@@ -610,7 +632,7 @@
     cache->textMarkerDataForPreviousCharacterOffset(textMarkerData, characterOffset);
     if (!textMarkerData.axID)
         return nil;
-    return CFBridgingRelease(wkCreateAXTextMarker(&textMarkerData, sizeof(textMarkerData)));
+    return CFBridgingRelease(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&textMarkerData, sizeof(textMarkerData)));
 }
 
 - (id)nextTextMarkerForCharacterOffset:(CharacterOffset&)characterOffset
@@ -638,7 +660,7 @@
     if (!textMarkerData.axID && !textMarkerData.ignored)
         return nil;
     
-    return CFBridgingRelease(wkCreateAXTextMarker(&textMarkerData, sizeof(textMarkerData)));
+    return CFBridgingRelease(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&textMarkerData, sizeof(textMarkerData)));
 }
 
 - (RefPtr<Range>)rangeForTextMarkerRange:(id)textMarkerRange
@@ -667,7 +689,7 @@
         return CharacterOffset();
     
     TextMarkerData textMarkerData;
-    if (!wkGetBytesFromAXTextMarker(textMarker, &textMarkerData, sizeof(textMarkerData)))
+    if (!getBytesFromAXTextMarker(textMarker, &textMarkerData, sizeof(textMarkerData)))
         return CharacterOffset();
     
     return cache->characterOffsetForTextMarkerData(textMarkerData);
@@ -686,7 +708,7 @@
     if (!textMarkerData)
         return nil;
 
-    return CFBridgingRelease(wkCreateAXTextMarker(&textMarkerData.value(), sizeof(textMarkerData.value())));
+    return CFBridgingRelease(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&textMarkerData.value(), sizeof(textMarkerData.value())));
 }
 
 - (id)textMarkerForVisiblePosition:(const VisiblePosition &)visiblePos
@@ -704,7 +726,7 @@
     if (!textMarkerData)
         return nil;
 
-    return CFBridgingRelease(wkCreateAXTextMarker(&textMarkerData.value(), sizeof(textMarkerData.value())));
+    return CFBridgingRelease(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&textMarkerData.value(), sizeof(textMarkerData.value())));
 }
 
 static VisiblePosition visiblePositionForTextMarker(AXObjectCache* cache, CFTypeRef textMarker)
@@ -714,7 +736,7 @@
     if (!textMarker)
         return VisiblePosition();
     TextMarkerData textMarkerData;
-    if (!wkGetBytesFromAXTextMarker(textMarker, &textMarkerData, sizeof(textMarkerData)))
+    if (!getBytesFromAXTextMarker(textMarker, &textMarkerData, sizeof(textMarkerData)))
         return VisiblePosition();
     
     return cache->visiblePositionForTextMarkerData(textMarkerData);
@@ -982,7 +1004,7 @@
         if (!cache)
             return;
         
-        AXUIElementRef axElement = wkCreateAXUIElementRef(object->wrapper());
+        AXUIElementRef axElement = NSAccessibilityCreateAXUIElementRef(object->wrapper());
         if (axElement) {
             [attrString addAttribute:attribute value:(id)axElement range:range];
             CFRelease(axElement);

Modified: trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h (221380 => 221381)


--- trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h	2017-08-30 17:37:43 UTC (rev 221381)
@@ -195,17 +195,6 @@
 #if !PLATFORM(IOS)
 extern NSArray *(*wkSpeechSynthesisGetVoiceIdentifiers)(void);
 extern NSString *(*wkSpeechSynthesisGetDefaultVoiceIdentifierForLocale)(NSLocale *);
-
-extern void (*wkUnregisterUniqueIdForElement)(id element);
-extern void (*wkAccessibilityHandleFocusChanged)(void);    
-extern CFTypeID (*wkGetAXTextMarkerTypeID)(void);
-extern CFTypeID (*wkGetAXTextMarkerRangeTypeID)(void);
-extern CFTypeRef (*wkCreateAXTextMarkerRange)(CFTypeRef start, CFTypeRef end);
-extern CFTypeRef (*wkCopyAXTextMarkerRangeStart)(CFTypeRef range);
-extern CFTypeRef (*wkCopyAXTextMarkerRangeEnd)(CFTypeRef range);
-extern CFTypeRef (*wkCreateAXTextMarker)(const void *bytes, size_t len);
-extern BOOL (*wkGetBytesFromAXTextMarker)(CFTypeRef textMarker, void *bytes, size_t length);
-extern AXUIElementRef (*wkCreateAXUIElementRef)(id element);
 #endif // !PLATFORM(IOS)
 
 #if PLATFORM(IOS)

Modified: trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm (221380 => 221381)


--- trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm	2017-08-30 17:37:43 UTC (rev 221381)
@@ -81,16 +81,6 @@
 NSArray *(*wkSpeechSynthesisGetVoiceIdentifiers)(void);
 NSString *(*wkSpeechSynthesisGetDefaultVoiceIdentifierForLocale)(NSLocale *);
 
-void (*wkUnregisterUniqueIdForElement)(id element);
-void (*wkAccessibilityHandleFocusChanged)(void);
-CFTypeID (*wkGetAXTextMarkerTypeID)(void);
-CFTypeID (*wkGetAXTextMarkerRangeTypeID)(void);
-CFTypeRef (*wkCreateAXTextMarkerRange)(CFTypeRef start, CFTypeRef end);
-CFTypeRef (*wkCopyAXTextMarkerRangeStart)(CFTypeRef range);
-CFTypeRef (*wkCopyAXTextMarkerRangeEnd)(CFTypeRef range);
-CFTypeRef (*wkCreateAXTextMarker)(const void *bytes, size_t len);
-BOOL (*wkGetBytesFromAXTextMarker)(CFTypeRef textMarker, void *bytes, size_t length);
-AXUIElementRef (*wkCreateAXUIElementRef)(id element);
 
 #if !PLATFORM(IOS)
 CGFloat (*wkNSElasticDeltaForTimeDelta)(CGFloat initialPosition, CGFloat initialVelocity, CGFloat elapsedTime);

Modified: trunk/Source/WebKit/ChangeLog (221380 => 221381)


--- trunk/Source/WebKit/ChangeLog	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebKit/ChangeLog	2017-08-30 17:37:43 UTC (rev 221381)
@@ -1,3 +1,22 @@
+2017-08-30  Andy Estes  <aes...@apple.com>
+
+        [Mac] Upstream Accessibility-related WebKitSystemInterface functions
+        https://bugs.webkit.org/show_bug.cgi?id=176093
+
+        Reviewed by Eric Carlson.
+
+        * UIProcess/Cocoa/WebViewImpl.h:
+        * UIProcess/Cocoa/WebViewImpl.mm:
+        (WebKit::WebViewImpl::setAccessibilityWebProcessToken):
+        (WebKit::WebViewImpl::updateRemoteAccessibilityRegistration):
+        (WebKit::WebViewImpl::accessibilityRegisterUIProcessTokens):
+        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
+        (InitWebCoreSystemInterface):
+        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
+        * WebProcess/WebPage/mac/WebPageMac.mm:
+        (WebKit::WebPage::platformInitialize):
+        (WebKit::WebPage::registerUIProcessAccessibilityTokens):
+
 2017-08-30  Carlos Alberto Lopez Perez  <clo...@igalia.com>
 
         [WPE] Enable MEMORY_SAMPLER

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h (221380 => 221381)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h	2017-08-30 17:37:43 UTC (rev 221381)
@@ -42,6 +42,7 @@
 #include <wtf/WeakPtr.h>
 #include <wtf/text/WTFString.h>
 
+OBJC_CLASS NSAccessibilityRemoteUIElement;
 OBJC_CLASS NSImmediateActionGestureRecognizer;
 OBJC_CLASS NSTextInputContext;
 OBJC_CLASS NSView;
@@ -694,7 +695,7 @@
     bool m_allowsBackForwardNavigationGestures { false };
     bool m_allowsMagnification { false };
 
-    RetainPtr<id> m_remoteAccessibilityChild;
+    RetainPtr<NSAccessibilityRemoteUIElement> m_remoteAccessibilityChild;
 
     RefPtr<WebCore::Image> m_promisedImage;
     String m_promisedFilename;

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (221380 => 221381)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm	2017-08-30 17:37:43 UTC (rev 221381)
@@ -91,6 +91,7 @@
 #import <pal/spi/cocoa/NSTouchBarSPI.h>
 #import <pal/spi/mac/DataDetectorsSPI.h>
 #import <pal/spi/mac/LookupSPI.h>
+#import <pal/spi/mac/NSAccessibilitySPI.h>
 #import <pal/spi/mac/NSApplicationSPI.h>
 #import <pal/spi/mac/NSImmediateActionGestureRecognizerSPI.h>
 #import <pal/spi/mac/NSSpellCheckerSPI.h>
@@ -3282,7 +3283,7 @@
 
 void WebViewImpl::setAccessibilityWebProcessToken(NSData *data)
 {
-    m_remoteAccessibilityChild = WKAXRemoteElementForToken(data);
+    m_remoteAccessibilityChild = data.length ? adoptNS([[NSAccessibilityRemoteUIElement alloc] initWithRemoteToken:data]) : nil;
     updateRemoteAccessibilityRegistration(true);
 }
 
@@ -3295,18 +3296,23 @@
     if (registerProcess)
         pid = m_page->process().processIdentifier();
     else if (!registerProcess) {
-        pid = WKAXRemoteProcessIdentifier(m_remoteAccessibilityChild.get());
+        pid = [m_remoteAccessibilityChild processIdentifier];
         m_remoteAccessibilityChild = nil;
     }
-    if (pid)
-        WKAXRegisterRemoteProcess(registerProcess, pid);
+    if (!pid)
+        return;
+
+    if (registerProcess)
+        [NSAccessibilityRemoteUIElement registerRemoteUIProcessIdentifier:pid];
+    else
+        [NSAccessibilityRemoteUIElement unregisterRemoteUIProcessIdentifier:pid];
 }
 
 void WebViewImpl::accessibilityRegisterUIProcessTokens()
 {
     // Initialize remote accessibility when the window connection has been established.
-    NSData *remoteElementToken = WKAXRemoteTokenForElement(m_view.getAutoreleased());
-    NSData *remoteWindowToken = WKAXRemoteTokenForElement([m_view window]);
+    NSData *remoteElementToken = [NSAccessibilityRemoteUIElement remoteTokenForLocalUIElement:m_view.getAutoreleased()];
+    NSData *remoteWindowToken = [NSAccessibilityRemoteUIElement remoteTokenForLocalUIElement:[m_view window]];
     IPC::DataReference elementToken = IPC::DataReference(reinterpret_cast<const uint8_t*>([remoteElementToken bytes]), [remoteElementToken length]);
     IPC::DataReference windowToken = IPC::DataReference(reinterpret_cast<const uint8_t*>([remoteWindowToken bytes]), [remoteWindowToken length]);
     m_page->registerUIProcessAccessibilityTokens(elementToken, windowToken);

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm (221380 => 221381)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm	2017-08-30 17:37:43 UTC (rev 221381)
@@ -83,16 +83,6 @@
         INIT(WindowSetAlpha);
         INIT(SpeechSynthesisGetVoiceIdentifiers);
         INIT(SpeechSynthesisGetDefaultVoiceIdentifierForLocale);
-        INIT(GetAXTextMarkerTypeID);
-        INIT(GetAXTextMarkerRangeTypeID);
-        INIT(CreateAXTextMarker);
-        INIT(GetBytesFromAXTextMarker);
-        INIT(CreateAXTextMarkerRange);
-        INIT(CopyAXTextMarkerRangeStart);
-        INIT(CopyAXTextMarkerRangeEnd);
-        INIT(AccessibilityHandleFocusChanged);
-        INIT(CreateAXUIElementRef);
-        INIT(UnregisterUniqueIdForElement);
         INIT(NSElasticDeltaForTimeDelta);
         INIT(NSElasticDeltaForReboundDelta);
         INIT(NSReboundDeltaForElasticDelta);

Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm (221380 => 221381)


--- trunk/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm	2017-08-30 17:37:43 UTC (rev 221381)
@@ -45,6 +45,7 @@
 #import <WebCore/ScrollView.h>
 #import <WebCore/Scrollbar.h>
 #import <WebKitSystemInterface.h>
+#import <pal/spi/mac/NSAccessibilitySPI.h>
 #import <wtf/ObjcRuntimeExtras.h>
 
 using namespace WebCore;
@@ -54,7 +55,7 @@
 
 - (void)dealloc
 {
-    WKUnregisterUniqueIdForElement(self);
+    NSAccessibilityUnregisterUniqueIdForUIElement(self);
     [m_parent release];
     [super dealloc];
 }

Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm (221380 => 221381)


--- trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm	2017-08-30 17:37:43 UTC (rev 221381)
@@ -91,6 +91,7 @@
 #import <WebCore/VisibleUnits.h>
 #import <WebCore/WindowsKeyboardCodes.h>
 #import <WebKitSystemInterface.h>
+#import <pal/spi/mac/NSAccessibilitySPI.h>
 #import <wtf/SetForScope.h>
 
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
@@ -108,11 +109,14 @@
 
     // Get the pid for the starting process.
     pid_t pid = WebCore::presentingApplicationPID();
-    WKAXInitializeElementWithPresenterPid(mockAccessibilityElement, pid);
+    // FIXME: WKAccessibilityWebPageObject doesn't respond to -accessibilitySetPresenterProcessIdentifier:.
+    // Either it needs to or this call should be removed.
+    if ([mockAccessibilityElement respondsToSelector:@selector(accessibilitySetPresenterProcessIdentifier:)])
+        [(id)mockAccessibilityElement accessibilitySetPresenterProcessIdentifier:pid];
     [mockAccessibilityElement setWebPage:this];
-    
+
     // send data back over
-    NSData* remoteToken = (NSData *)WKAXRemoteTokenForElement(mockAccessibilityElement); 
+    NSData* remoteToken = [NSAccessibilityRemoteUIElement remoteTokenForLocalUIElement:mockAccessibilityElement];
     IPC::DataReference dataToken = IPC::DataReference(reinterpret_cast<const uint8_t*>([remoteToken bytes]), [remoteToken length]);
     send(Messages::WebPageProxy::RegisterWebProcessAccessibilityToken(dataToken));
     m_mockAccessibilityElement = mockAccessibilityElement;
@@ -618,13 +622,14 @@
 
 void WebPage::registerUIProcessAccessibilityTokens(const IPC::DataReference& elementToken, const IPC::DataReference& windowToken)
 {
-    NSData* elementTokenData = [NSData dataWithBytes:elementToken.data() length:elementToken.size()];
-    NSData* windowTokenData = [NSData dataWithBytes:windowToken.data() length:windowToken.size()];
-    id remoteElement = WKAXRemoteElementForToken(elementTokenData);
-    id remoteWindow = WKAXRemoteElementForToken(windowTokenData);
-    WKAXSetWindowForRemoteElement(remoteWindow, remoteElement);
-    
-    [accessibilityRemoteObject() setRemoteParent:remoteElement];
+    NSData *elementTokenData = [NSData dataWithBytes:elementToken.data() length:elementToken.size()];
+    NSData *windowTokenData = [NSData dataWithBytes:windowToken.data() length:windowToken.size()];
+    auto remoteElement = elementTokenData.length ? adoptNS([[NSAccessibilityRemoteUIElement alloc] initWithRemoteToken:elementTokenData]) : nil;
+    auto remoteWindow = windowTokenData.length ? adoptNS([[NSAccessibilityRemoteUIElement alloc] initWithRemoteToken:windowTokenData]) : nil;
+    [remoteElement setWindowUIElement:remoteWindow.get()];
+    [remoteElement setTopLevelUIElement:remoteWindow.get()];
+
+    [accessibilityRemoteObject() setRemoteParent:remoteElement.get()];
 }
 
 void WebPage::readSelectionFromPasteboard(const String& pasteboardName, bool& result)

Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (221380 => 221381)


--- trunk/Source/WebKitLegacy/mac/ChangeLog	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog	2017-08-30 17:37:43 UTC (rev 221381)
@@ -1,5 +1,15 @@
 2017-08-30  Andy Estes  <aes...@apple.com>
 
+        [Mac] Upstream Accessibility-related WebKitSystemInterface functions
+        https://bugs.webkit.org/show_bug.cgi?id=176093
+
+        Reviewed by Eric Carlson.
+
+        * WebCoreSupport/WebSystemInterface.mm:
+        (InitWebCoreSystemInterface):
+
+2017-08-30  Andy Estes  <aes...@apple.com>
+
         [Mac] Upstream Carbon-related WebKitSystemInterface functions
         https://bugs.webkit.org/show_bug.cgi?id=176087
 

Modified: trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebSystemInterface.mm (221380 => 221381)


--- trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebSystemInterface.mm	2017-08-30 17:33:26 UTC (rev 221380)
+++ trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebSystemInterface.mm	2017-08-30 17:37:43 UTC (rev 221381)
@@ -91,16 +91,6 @@
     INIT(Cursor);
     INIT(SpeechSynthesisGetVoiceIdentifiers);
     INIT(SpeechSynthesisGetDefaultVoiceIdentifierForLocale);
-    INIT(GetAXTextMarkerTypeID);
-    INIT(GetAXTextMarkerRangeTypeID);
-    INIT(CreateAXTextMarker);
-    INIT(GetBytesFromAXTextMarker);
-    INIT(CreateAXTextMarkerRange);
-    INIT(CopyAXTextMarkerRangeStart);
-    INIT(CopyAXTextMarkerRangeEnd);
-    INIT(AccessibilityHandleFocusChanged);
-    INIT(CreateAXUIElementRef);
-    INIT(UnregisterUniqueIdForElement);
 #endif
 
 #if !PLATFORM(IOS)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to