diff --git a/src/accessoryaccess.cs b/src/accessoryaccess.cs new file mode 100644 index 000000000000..3d756b160876 --- /dev/null +++ b/src/accessoryaccess.cs @@ -0,0 +1,110 @@ +using System; + +using CoreFoundation; +using Foundation; +using ObjCRuntime; + +// 'xpc_object_t' is an opaque OS_object that's shuttled across XPC boundaries; it has no managed API +// surface of its own, so macios binds it as NSObject everywhere (see src/browserenginekit.cs). +using OS_xpc_object = Foundation.NSObject; + +namespace AccessoryAccess { + + [Mac (27, 0)] + [Native] + [ErrorDomain ("AAErrorDomain")] + public enum AAErrorCode : long { + Internal = 1, + AccessoryListenerAlreadyRegistered = 2, + AccessoryNotAccessible = 3, + InvalidAccessoryState = 4, + } + + [Mac (27, 0)] + [Native ("AAUSBAccessoryMatchingCriteriaInterfaceMatchingOption")] + public enum AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption : long { + MatchAll, + MatchAny, + } + + /// A completion handler for opening a USB accessory. + /// A live IOUSBHostDevice handle that remains valid until the accessory is closed. + /// IOUSBHost is not bound in macios, so this handle is surfaced as a raw . To perform USB I/O, hand the accessory to a native/Swift service via or bridge the handle through native IOUSBHost code. + delegate void AAUsbAccessoryOpenCompletionHandler (IntPtr device, [NullAllowed] NSError error); + delegate void AAUsbAccessoryCloseCompletionHandler ([NullAllowed] NSError error); + + [Mac (27, 0)] + [BaseType (typeof (NSObject), Name = "AAUSBAccessory")] + [DisableDefaultCtor] + interface AAUsbAccessory : NSSecureCoding { + [Export ("initWithXPCRepresentation:")] + [DesignatedInitializer] + NativeHandle Constructor (OS_xpc_object xpcRepresentation); + + [Export ("registryID")] + ulong RegistryId { get; } + + [Export ("deviceDescriptorData")] + NSData DeviceDescriptorData { get; } + + [NullAllowed, Export ("configurationDescriptorData")] + NSData ConfigurationDescriptorData { get; } + + [Export ("createXPCRepresentation")] + OS_xpc_object CreateXpcRepresentation (); + + [Export ("openWithServiceQueue:completionHandler:")] + [Async] + void Open ([NullAllowed] DispatchQueue serviceQueue, AAUsbAccessoryOpenCompletionHandler completionHandler); + + [Export ("closeWithCompletionHandler:")] + [Async] + void Close (AAUsbAccessoryCloseCompletionHandler completionHandler); + } + + interface IAAUsbAccessoryListener { } + + [Mac (27, 0)] + [Protocol (BackwardsCompatibleCodeGeneration = false, Name = "AAUSBAccessoryListener"), Model] + [BaseType (typeof (NSObject))] + interface AAUsbAccessoryListener { + [Export ("usbAccessoryDidConnect:")] + void UsbAccessoryDidConnect (AAUsbAccessory usbAccessory); + + [Export ("usbAccessoryDidDisconnect:")] + void UsbAccessoryDidDisconnect (AAUsbAccessory usbAccessory); + } + + delegate void AAUsbAccessoryManagerRegisterListenerCompletionHandler (AAUsbAccessory [] accessories, [NullAllowed] NSError error); + delegate void AAUsbAccessoryManagerUnregisterListenerCompletionHandler (); + + [Mac (27, 0)] + [BaseType (typeof (NSObject), Name = "AAUSBAccessoryManager")] + [DisableDefaultCtor] + interface AAUsbAccessoryManager { + [Static] + [Export ("sharedManager", ArgumentSemantic.Strong)] + AAUsbAccessoryManager SharedManager { get; } + + [Export ("registerListener:withMatchingCriteria:completionHandler:")] + [Async] + void RegisterListener (IAAUsbAccessoryListener listener, AAUsbAccessoryMatchingCriteria [] matchingCriteria, AAUsbAccessoryManagerRegisterListenerCompletionHandler completionHandler); + + [Export ("unregisterListener:completionHandler:")] + [Async] + void UnregisterListener (IAAUsbAccessoryListener listener, AAUsbAccessoryManagerUnregisterListenerCompletionHandler completionHandler); + } + + [Mac (27, 0)] + [BaseType (typeof (NSObject), Name = "AAUSBAccessoryMatchingCriteria")] + [DisableDefaultCtor] + interface AAUsbAccessoryMatchingCriteria : NSCopying { + [Export ("initWithDeviceMatchingDictionary:")] + [DesignatedInitializer] + NativeHandle Constructor (NSDictionary dictionary); + + [Export ("initWithDeviceMatchingDictionary:interfaceMatchingDictionaries:interfaceMatchingOption:")] + [DesignatedInitializer] + NativeHandle Constructor ([NullAllowed] NSDictionary deviceMatchingDictionary, NSDictionary [] interfaceMatchingDictionaries, AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption interfaceMatchingOption); + } +} diff --git a/src/build/dotnet/generator-frameworks.g.cs b/src/build/dotnet/generator-frameworks.g.cs index 71e202ecc825..77f9c0f31d43 100644 --- a/src/build/dotnet/generator-frameworks.g.cs +++ b/src/build/dotnet/generator-frameworks.g.cs @@ -157,6 +157,7 @@ partial class Frameworks { internal readonly HashSet macosframeworks = new HashSet { "Accelerate", "Accessibility", + "AccessoryAccess", "Accounts", "AdServices", "AdSupport", @@ -532,6 +533,7 @@ partial class Frameworks { }; bool? _Accelerate; bool? _Accessibility; + bool? _AccessoryAccess; bool? _AccessorySetupKit; bool? _Accounts; bool? _AddressBook; @@ -706,6 +708,7 @@ partial class Frameworks { bool? _XKit; public bool HaveAccelerate { get { if (!_Accelerate.HasValue) _Accelerate = GetValue ("Accelerate"); return _Accelerate.Value; } } public bool HaveAccessibility { get { if (!_Accessibility.HasValue) _Accessibility = GetValue ("Accessibility"); return _Accessibility.Value; } } + public bool HaveAccessoryAccess { get { if (!_AccessoryAccess.HasValue) _AccessoryAccess = GetValue ("AccessoryAccess"); return _AccessoryAccess.Value; } } public bool HaveAccessorySetupKit { get { if (!_AccessorySetupKit.HasValue) _AccessorySetupKit = GetValue ("AccessorySetupKit"); return _AccessorySetupKit.Value; } } public bool HaveAccounts { get { if (!_Accounts.HasValue) _Accounts = GetValue ("Accounts"); return _Accounts.Value; } } public bool HaveAddressBook { get { if (!_AddressBook.HasValue) _AddressBook = GetValue ("AddressBook"); return _AddressBook.Value; } } diff --git a/src/frameworks.sources b/src/frameworks.sources index 9ad90af5ca37..af7d637a1e07 100644 --- a/src/frameworks.sources +++ b/src/frameworks.sources @@ -2022,6 +2022,7 @@ COMMON_FRAMEWORKS = \ MACOS_FRAMEWORKS = \ $(COMMON_FRAMEWORKS) \ + AccessoryAccess \ Accounts \ AdServices \ AdSupport \ diff --git a/src/rsp/dotnet/macos-defines-dotnet.rsp b/src/rsp/dotnet/macos-defines-dotnet.rsp index 17b1bd296208..00271cdcbf50 100644 --- a/src/rsp/dotnet/macos-defines-dotnet.rsp +++ b/src/rsp/dotnet/macos-defines-dotnet.rsp @@ -1,5 +1,6 @@ -d:HAS_ACCELERATE -d:HAS_ACCESSIBILITY +-d:HAS_ACCESSORYACCESS -d:HAS_ACCOUNTS -d:HAS_ADSERVICES -d:HAS_ADSUPPORT diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index b683a361c4cd..13ad3e1fede8 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -138,6 +138,12 @@ F:Accessibility.AXTechnology.SwitchControl F:Accessibility.AXTechnology.VoiceControl F:Accessibility.AXTechnology.VoiceOver F:Accessibility.AXTechnology.Zoom +F:AccessoryAccess.AAErrorCode.AccessoryListenerAlreadyRegistered +F:AccessoryAccess.AAErrorCode.AccessoryNotAccessible +F:AccessoryAccess.AAErrorCode.Internal +F:AccessoryAccess.AAErrorCode.InvalidAccessoryState +F:AccessoryAccess.AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption.MatchAll +F:AccessoryAccess.AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption.MatchAny F:AccessorySetupKit.ASAccessoryEventType.AccessoryAdded F:AccessorySetupKit.ASAccessoryEventType.AccessoryChanged F:AccessorySetupKit.ASAccessoryEventType.AccessoryRemoved @@ -8350,6 +8356,22 @@ M:Accessibility.AXPrefers.ActionSliderAlternative M:Accessibility.AXPrefers.HorizontalTextEnabled M:Accessibility.AXPrefers.NonBlinkingTextInsertionIndicator M:Accessibility.AXSettings.ShowBordersEnabled +M:AccessoryAccess.AAUsbAccessory.#ctor(Foundation.NSObject) +M:AccessoryAccess.AAUsbAccessory.Close(AccessoryAccess.AAUsbAccessoryCloseCompletionHandler) +M:AccessoryAccess.AAUsbAccessory.CloseAsync +M:AccessoryAccess.AAUsbAccessory.CreateXpcRepresentation +M:AccessoryAccess.AAUsbAccessory.Open(CoreFoundation.DispatchQueue,AccessoryAccess.AAUsbAccessoryOpenCompletionHandler) +M:AccessoryAccess.AAUsbAccessory.OpenAsync(CoreFoundation.DispatchQueue) +M:AccessoryAccess.AAUsbAccessoryListener.UsbAccessoryDidConnect(AccessoryAccess.AAUsbAccessory) +M:AccessoryAccess.AAUsbAccessoryListener.UsbAccessoryDidDisconnect(AccessoryAccess.AAUsbAccessory) +M:AccessoryAccess.AAUsbAccessoryManager.RegisterListener(AccessoryAccess.IAAUsbAccessoryListener,AccessoryAccess.AAUsbAccessoryMatchingCriteria[],AccessoryAccess.AAUsbAccessoryManagerRegisterListenerCompletionHandler) +M:AccessoryAccess.AAUsbAccessoryManager.RegisterListenerAsync(AccessoryAccess.IAAUsbAccessoryListener,AccessoryAccess.AAUsbAccessoryMatchingCriteria[]) +M:AccessoryAccess.AAUsbAccessoryManager.UnregisterListener(AccessoryAccess.IAAUsbAccessoryListener,AccessoryAccess.AAUsbAccessoryManagerUnregisterListenerCompletionHandler) +M:AccessoryAccess.AAUsbAccessoryManager.UnregisterListenerAsync(AccessoryAccess.IAAUsbAccessoryListener) +M:AccessoryAccess.AAUsbAccessoryMatchingCriteria.#ctor(Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject},Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}[],AccessoryAccess.AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption) +M:AccessoryAccess.AAUsbAccessoryMatchingCriteria.#ctor(Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}) +M:AccessoryAccess.IAAUsbAccessoryListener.UsbAccessoryDidConnect(AccessoryAccess.AAUsbAccessory) +M:AccessoryAccess.IAAUsbAccessoryListener.UsbAccessoryDidDisconnect(AccessoryAccess.AAUsbAccessory) M:AccessorySetupKit.ASAccessorySession.Activate(CoreFoundation.DispatchQueue,System.Action{AccessorySetupKit.ASAccessoryEvent}) M:AccessorySetupKit.ASAccessorySession.FailAuthorization(AccessorySetupKit.ASAccessory,AccessorySetupKit.ASAccessorySessionCompletionHandler) M:AccessorySetupKit.ASAccessorySession.FailAuthorizationAsync(AccessorySetupKit.ASAccessory) @@ -31417,6 +31439,10 @@ P:Accessibility.IAXCustomContentProvider.AccessibilityCustomContentHandler P:Accessibility.IAXDataAxisDescriptor.AttributedTitle P:Accessibility.IAXDataAxisDescriptor.Title P:Accessibility.IAXMathExpressionProvider.AccessibilityMathExpression +P:AccessoryAccess.AAUsbAccessory.ConfigurationDescriptorData +P:AccessoryAccess.AAUsbAccessory.DeviceDescriptorData +P:AccessoryAccess.AAUsbAccessory.RegistryId +P:AccessoryAccess.AAUsbAccessoryManager.SharedManager P:AccessorySetupKit.ASAccessory.BluetoothIdentifier P:AccessorySetupKit.ASAccessory.BluetoothTransportBridgingIdentifier P:AccessorySetupKit.ASAccessory.Descriptor @@ -55850,6 +55876,15 @@ T:Accessibility.AXSettings T:Accessibility.AXSettingsFeature T:Accessibility.AXTechnology T:Accessibility.ValueDescriptionProviderHandler +T:AccessoryAccess.AAErrorCode +T:AccessoryAccess.AAUsbAccessory +T:AccessoryAccess.AAUsbAccessoryCloseCompletionHandler +T:AccessoryAccess.AAUsbAccessoryManager +T:AccessoryAccess.AAUsbAccessoryManagerRegisterListenerCompletionHandler +T:AccessoryAccess.AAUsbAccessoryManagerUnregisterListenerCompletionHandler +T:AccessoryAccess.AAUsbAccessoryMatchingCriteria +T:AccessoryAccess.AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption +T:AccessoryAccess.AAUsbAccessoryOpenCompletionHandler T:AccessorySetupKit.ASAccessory T:AccessorySetupKit.ASAccessoryEvent T:AccessorySetupKit.ASAccessoryEventType diff --git a/tests/dotnet/UnitTests/ProjectTest.cs b/tests/dotnet/UnitTests/ProjectTest.cs index 1e35bb2118a5..d6d8581a055c 100644 --- a/tests/dotnet/UnitTests/ProjectTest.cs +++ b/tests/dotnet/UnitTests/ProjectTest.cs @@ -3398,6 +3398,7 @@ public void AppendRuntimeIdentifierToOutputPath_DisableDirectoryBuildProps (Appl "@executable_path/../../Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib", "/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate", "/System/Library/Frameworks/Accessibility.framework/Versions/A/Accessibility", + "/System/Library/Frameworks/AccessoryAccess.framework/Versions/A/AccessoryAccess", "/System/Library/Frameworks/Accounts.framework/Versions/A/Accounts", "/System/Library/Frameworks/AdServices.framework/Versions/A/AdServices", "/System/Library/Frameworks/AdSupport.framework/Versions/A/AdSupport", diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-TrimmableStatic-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-TrimmableStatic-size.txt index 98b915ae7dc0..62471247ebf1 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-TrimmableStatic-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-TrimmableStatic-size.txt @@ -1,17 +1,17 @@ -AppBundleSize: 258,452,232 bytes (252,394.8 KB = 246.5 MB) +AppBundleSize: 258,521,450 bytes (252,462.4 KB = 246.5 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/Info.plist: - 723 bytes (0.7 KB = 0.0 MB) + 741 bytes (0.7 KB = 0.0 MB) Contents/MacOS/SizeTestApp: - 7,355,192 bytes (7,182.8 KB = 7.0 MB) + 7,373,192 bytes (7,200.4 KB = 7.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/_Microsoft.macOS.TypeMap.dll: - 4,875,776 bytes (4,761.5 KB = 4.6 MB) + 4,880,384 bytes (4,766.0 KB = 4.7 MB) Contents/MonoBundle/.xamarin/osx-arm64/_SizeTestApp.TypeMap.dll: 3,072 bytes (3.0 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 892,752 bytes (871.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: - 37,647,872 bytes (36,765.5 KB = 35.9 MB) + 37,668,864 bytes (36,786.0 KB = 35.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,334,608 bytes (1,303.3 KB = 1.3 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll: @@ -357,13 +357,13 @@ Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.XDocument.dll: Contents/MonoBundle/.xamarin/osx-arm64/WindowsBase.dll: 16,208 bytes (15.8 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/_Microsoft.macOS.TypeMap.dll: - 4,875,776 bytes (4,761.5 KB = 4.6 MB) + 4,880,384 bytes (4,766.0 KB = 4.7 MB) Contents/MonoBundle/.xamarin/osx-x64/_SizeTestApp.TypeMap.dll: 3,072 bytes (3.0 KB = 0.0 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll: 795,984 bytes (777.3 KB = 0.8 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll: - 37,647,872 bytes (36,765.5 KB = 35.9 MB) + 37,668,864 bytes (36,786.0 KB = 35.9 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,166,160 bytes (1,138.8 KB = 1.1 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll: diff --git a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt index 73fd77d29ed6..ce8ecd3d8cf5 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt @@ -1,13 +1,13 @@ -AppBundleSize: 248,786,358 bytes (242,955.4 KB = 237.3 MB) +AppBundleSize: 248,831,016 bytes (242,999.0 KB = 237.3 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/Info.plist: - 723 bytes (0.7 KB = 0.0 MB) + 741 bytes (0.7 KB = 0.0 MB) Contents/MacOS/SizeTestApp: - 8,013,368 bytes (7,825.6 KB = 7.6 MB) + 8,015,000 bytes (7,827.1 KB = 7.6 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll: 892,752 bytes (871.8 KB = 0.9 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll: - 37,364,224 bytes (36,488.5 KB = 35.6 MB) + 37,385,728 bytes (36,509.5 KB = 35.7 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll: 1,334,608 bytes (1,303.3 KB = 1.3 MB) Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll: @@ -355,7 +355,7 @@ Contents/MonoBundle/.xamarin/osx-arm64/WindowsBase.dll: Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll: 795,984 bytes (777.3 KB = 0.8 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll: - 37,364,224 bytes (36,488.5 KB = 35.6 MB) + 37,385,728 bytes (36,509.5 KB = 35.7 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll: 1,166,160 bytes (1,138.8 KB = 1.1 MB) Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll: diff --git a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-TrimmableStatic-size.txt b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-TrimmableStatic-size.txt index beb3e1cd0ae4..e657d0dae163 100644 --- a/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-TrimmableStatic-size.txt +++ b/tests/dotnet/UnitTests/expected/MacOSX-NativeAOT-TrimmableStatic-size.txt @@ -1,9 +1,9 @@ -AppBundleSize: 32,655,611 bytes (31,890.2 KB = 31.1 MB) +AppBundleSize: 32,672,029 bytes (31,906.3 KB = 31.2 MB) # The following list of files and their sizes is just informational / for review, and isn't used in the test: Contents/Info.plist: - 723 bytes (0.7 KB = 0.0 MB) + 741 bytes (0.7 KB = 0.0 MB) Contents/MacOS/SizeTestApp: - 29,566,328 bytes (28,873.4 KB = 28.2 MB) + 29,582,728 bytes (28,889.4 KB = 28.2 MB) Contents/MonoBundle/libSystem.Globalization.Native.dylib: 267,872 bytes (261.6 KB = 0.3 MB) Contents/MonoBundle/libSystem.IO.Compression.Native.dylib: diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-AccessoryAccess.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-AccessoryAccess.todo deleted file mode 100644 index f771b1f98988..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-AccessoryAccess.todo +++ /dev/null @@ -1,19 +0,0 @@ -!missing-enum! AAErrorCode not bound -!missing-enum! AAUSBAccessoryMatchingCriteriaInterfaceMatchingOption not bound -!missing-field! AAErrorDomain not bound -!missing-protocol! AAUSBAccessoryListener not bound -!missing-selector! +AAUSBAccessoryManager::sharedManager not bound -!missing-selector! AAUSBAccessory::closeWithCompletionHandler: not bound -!missing-selector! AAUSBAccessory::configurationDescriptorData not bound -!missing-selector! AAUSBAccessory::createXPCRepresentation not bound -!missing-selector! AAUSBAccessory::deviceDescriptorData not bound -!missing-selector! AAUSBAccessory::initWithXPCRepresentation: not bound -!missing-selector! AAUSBAccessory::openWithServiceQueue:completionHandler: not bound -!missing-selector! AAUSBAccessory::registryID not bound -!missing-selector! AAUSBAccessoryManager::registerListener:withMatchingCriteria:completionHandler: not bound -!missing-selector! AAUSBAccessoryManager::unregisterListener:completionHandler: not bound -!missing-selector! AAUSBAccessoryMatchingCriteria::initWithDeviceMatchingDictionary: not bound -!missing-selector! AAUSBAccessoryMatchingCriteria::initWithDeviceMatchingDictionary:interfaceMatchingDictionaries:interfaceMatchingOption: not bound -!missing-type! AAUSBAccessory not bound -!missing-type! AAUSBAccessoryManager not bound -!missing-type! AAUSBAccessoryMatchingCriteria not bound diff --git a/tools/common/Frameworks.cs b/tools/common/Frameworks.cs index a98d2dace76a..b846efdb3c1c 100644 --- a/tools/common/Frameworks.cs +++ b/tools/common/Frameworks.cs @@ -320,6 +320,8 @@ public static Frameworks MacFrameworks { { "SecurityUI", "SecurityUI", 15, 4 }, { "GameSave", "GameSave", 26, 0 }, + + { "AccessoryAccess", "AccessoryAccess", 27, 0 }, }; } return mac_frameworks;