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)