diff --git a/src/accessorysetupkit.cs b/src/accessorysetupkit.cs index 3fd8e7e71b22..36700478c2a1 100644 --- a/src/accessorysetupkit.cs +++ b/src/accessorysetupkit.cs @@ -87,6 +87,7 @@ public enum ASAccessoryEventType : long { AccessoryAdded = 30, AccessoryRemoved = 31, AccessoryChanged = 32, + Discovered = 33, PickerDidPresent = 40, PickerDidDismiss = 50, PickerSetupBridging = 60, @@ -156,9 +157,21 @@ interface ASAccessorySession { [iOS (26, 0)] [Export ("updateAuthorization:descriptor:completionHandler:")] void UpdateAuthorization (ASAccessory accessory, ASDiscoveryDescriptor descriptor, ASAccessorySessionUpdateAuthorizationHandler completionHandler); + + [Async] + [iOS (26, 1)] + [Export ("updatePickerShowingDiscoveredDisplayItems:completionHandler:")] + void UpdatePicker (ASDiscoveredDisplayItem [] showingDisplayItems, ASAccessorySessionUpdatePickerHandler completionHandler); + + [Async] + [iOS (26, 1)] + [Export ("finishPickerDiscovery:")] + void FinishPickerDiscovery (ASAccessorySessionFinishPickerDiscoveryHandler completionHandler); } delegate void ASAccessorySessionUpdateAuthorizationHandler ([NullAllowed] NSError error); + delegate void ASAccessorySessionUpdatePickerHandler ([NullAllowed] NSError error); + delegate void ASAccessorySessionFinishPickerDiscoveryHandler ([NullAllowed] NSError error); [BaseType (typeof (NSObject))] [iOS (18, 0)] @@ -295,6 +308,10 @@ interface ASMigrationDisplayItem { [Export ("initWithName:productImage:descriptor:")] [DesignatedInitializer] NativeHandle Constructor (string name, UIImage productImage, ASDiscoveryDescriptor descriptor); + + [iOS (26, 1)] + [Export ("wifiAwarePairedDeviceID")] + ulong WifiAwarePairedDeviceId { get; set; } } [iOS (26, 0)] @@ -328,6 +345,10 @@ interface ASPickerDisplaySettings { [Export ("discoveryTimeout")] double DiscoveryTimeout { get; set; } + + [iOS (26, 1)] + [Export ("options", ArgumentSemantic.Assign)] + ASPickerDisplaySettingsOptions Options { get; set; } } [Static] @@ -343,5 +364,40 @@ partial interface ASPickerDisplaySettingsDiscoveryTimeout { [iOS (26, 0)] [Field ("ASPickerDisplaySettingsDiscoveryTimeoutLong")] double Long { get; } + + [iOS (26, 1)] + [Field ("ASPickerDisplaySettingsDiscoveryTimeoutUnbounded")] + double Unbounded { get; } + } + + [iOS (26, 1)] + [BaseType (typeof (ASAccessory))] + interface ASDiscoveredAccessory { + [NullAllowed] + [Wrap ("WeakBluetoothAdvertisementData")] + CoreBluetooth.AdvertisementData BluetoothAdvertisementData { get; } + + [NullAllowed, Export ("bluetoothAdvertisementData", ArgumentSemantic.Copy)] + NSDictionary WeakBluetoothAdvertisementData { get; } + + [Export ("bluetoothRSSI", ArgumentSemantic.Copy)] + [BindAs (typeof (nint?))] + NSNumber BluetoothRSSI { get; } + } + + [iOS (26, 1)] + [BaseType (typeof (ASPickerDisplayItem))] + [DisableDefaultCtor] + interface ASDiscoveredDisplayItem { + [Export ("initWithName:productImage:accessory:")] + NativeHandle Constructor (string name, UIImage productImage, ASDiscoveredAccessory accessory); + } + + [iOS (26, 1)] + [Flags] + [Native] + public enum ASPickerDisplaySettingsOptions : ulong { + None = 0, + FilterDiscoveryResults = (1uL << 0), } } diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index 293f216807fe..18daee45daa4 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -142,6 +142,7 @@ F:AccessorySetupKit.ASAccessoryEventType.AccessoryAdded F:AccessorySetupKit.ASAccessoryEventType.AccessoryChanged F:AccessorySetupKit.ASAccessoryEventType.AccessoryRemoved F:AccessorySetupKit.ASAccessoryEventType.Activated +F:AccessorySetupKit.ASAccessoryEventType.Discovered F:AccessorySetupKit.ASAccessoryEventType.Invalidated F:AccessorySetupKit.ASAccessoryEventType.MigrationComplete F:AccessorySetupKit.ASAccessoryEventType.PickerDidDismiss @@ -177,6 +178,8 @@ F:AccessorySetupKit.ASErrorCode.UserRestricted F:AccessorySetupKit.ASPickerDisplayItemSetupOptions.ConfirmAuthorization F:AccessorySetupKit.ASPickerDisplayItemSetupOptions.FinishInApp F:AccessorySetupKit.ASPickerDisplayItemSetupOptions.Rename +F:AccessorySetupKit.ASPickerDisplaySettingsOptions.FilterDiscoveryResults +F:AccessorySetupKit.ASPickerDisplaySettingsOptions.None F:AddressBook.ABPropertyType.MultiMask F:AdServices.AAAttributionErrorCode.InternalError F:AdServices.AAAttributionErrorCode.NetworkError @@ -8139,11 +8142,13 @@ M:Accessibility.AXPrefers.HorizontalTextEnabled M:Accessibility.AXPrefers.NonBlinkingTextInsertionIndicator M:AccessorySetupKit.ASAccessorySession.FailAuthorizationAsync(AccessorySetupKit.ASAccessory) M:AccessorySetupKit.ASAccessorySession.FinishAuthorizationAsync(AccessorySetupKit.ASAccessory,AccessorySetupKit.ASAccessorySettings) +M:AccessorySetupKit.ASAccessorySession.FinishPickerDiscoveryAsync M:AccessorySetupKit.ASAccessorySession.RemoveAccessoryAsync(AccessorySetupKit.ASAccessory) M:AccessorySetupKit.ASAccessorySession.RenameAccessoryAsync(AccessorySetupKit.ASAccessory,AccessorySetupKit.ASAccessoryRenameOptions) M:AccessorySetupKit.ASAccessorySession.ShowPickerAsync M:AccessorySetupKit.ASAccessorySession.ShowPickerAsync(AccessorySetupKit.ASPickerDisplayItem[]) M:AccessorySetupKit.ASAccessorySession.UpdateAuthorizationAsync(AccessorySetupKit.ASAccessory,AccessorySetupKit.ASDiscoveryDescriptor) +M:AccessorySetupKit.ASAccessorySession.UpdatePickerAsync(AccessorySetupKit.ASDiscoveredDisplayItem[]) M:Accounts.ACAccountStore.Dispose(System.Boolean) M:AddressBook.ABAddressBook.add_ExternalChange(System.EventHandler{AddressBook.ExternalChangeEventArgs}) M:AddressBook.ABAddressBook.remove_ExternalChange(System.EventHandler{AddressBook.ExternalChangeEventArgs}) @@ -18129,6 +18134,7 @@ P:Accessibility.IAXCustomContentProvider.AccessibilityCustomContentHandler P:Accessibility.IAXDataAxisDescriptor.AttributedTitle P:Accessibility.IAXDataAxisDescriptor.Title P:Accessibility.IAXMathExpressionProvider.AccessibilityMathExpression +P:AccessorySetupKit.ASDiscoveredAccessory.BluetoothAdvertisementData P:AddressBook.ABMultiValue`1.Item(System.IntPtr) P:AppClip.APActivationPayload.Url P:AppKit.INSAccessibility.AccessibilityActivationPoint @@ -24809,7 +24815,9 @@ T:Accessibility.ValueDescriptionProviderHandler T:AccessorySetupKit.ASAccessoryEventType T:AccessorySetupKit.ASAccessoryRenameOptions T:AccessorySetupKit.ASAccessorySessionCompletionHandler +T:AccessorySetupKit.ASAccessorySessionFinishPickerDiscoveryHandler T:AccessorySetupKit.ASAccessorySessionUpdateAuthorizationHandler +T:AccessorySetupKit.ASAccessorySessionUpdatePickerHandler T:AccessorySetupKit.ASAccessoryState T:AccessorySetupKit.ASAccessorySupportOptions T:AccessorySetupKit.ASDiscoveryDescriptorRange @@ -24817,6 +24825,7 @@ T:AccessorySetupKit.ASDiscoveryDescriptorWiFiAwareServiceRole T:AccessorySetupKit.ASErrorCode T:AccessorySetupKit.ASPickerDisplayItemSetupOptions T:AccessorySetupKit.ASPickerDisplaySettingsDiscoveryTimeout +T:AccessorySetupKit.ASPickerDisplaySettingsOptions T:Accounts.ACLinkedInKey T:AdServices.AAAttributionErrorCode T:AppClip.APActivationPayload diff --git a/tests/introspection/ApiCtorInitTest.cs b/tests/introspection/ApiCtorInitTest.cs index 98560fb620f4..2f3ffe6d8cf1 100644 --- a/tests/introspection/ApiCtorInitTest.cs +++ b/tests/introspection/ApiCtorInitTest.cs @@ -457,6 +457,12 @@ protected virtual bool Match (ConstructorInfo ctor, Type type) var cstr = ctor.ToString (); switch (type.Name) { + case "ASDiscoveredDisplayItem": + switch (cstr) { + case "Void .ctor(System.String, UIKit.UIImage, AccessorySetupKit.ASDiscoveryDescriptor)": // NS_UNAVAILABLE + return true; + } + break; case "MKTileOverlayRenderer": // NSInvalidArgumentEception Expected a MKTileOverlay // looks like Apple has not yet added a DI for this type, but it should be `initWithTileOverlay:` diff --git a/tests/introspection/ApiProtocolTest.cs b/tests/introspection/ApiProtocolTest.cs index a966921bad0d..17fbbd848413 100644 --- a/tests/introspection/ApiProtocolTest.cs +++ b/tests/introspection/ApiProtocolTest.cs @@ -330,6 +330,10 @@ protected virtual bool Skip (Type type, string protocolName) case "ASPropertyCompareString": case "PKAddIdentityDocumentMetadata": return true; + // Xcode 26.1 Conformance not in headers + case "ASDiscoveredAccessory": + case "ASDiscoveredDisplayItem": + return true; } break; case "NSMutableCopying": @@ -561,6 +565,10 @@ protected virtual bool Skip (Type type, string protocolName) case "ASPropertyCompareString": case "PKAddIdentityDocumentMetadata": return true; + // Xcode 26.1 Conformance not in headers + case "ASDiscoveredAccessory": + case "ASDiscoveredDisplayItem": + return true; } break; case "NSSecureCoding": @@ -795,6 +803,10 @@ protected virtual bool Skip (Type type, string protocolName) case "ASPropertyCompareString": case "PKAddIdentityDocumentMetadata": return true; + // Xcode 26.1 Conformance not in headers + case "ASDiscoveredAccessory": + case "ASDiscoveredDisplayItem": + return true; } break; // conformance added in Xcode 8 (iOS 10 / macOS 10.12) diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-AccessorySetupKit.todo b/tests/xtro-sharpie/api-annotations-dotnet/iOS-AccessorySetupKit.todo deleted file mode 100644 index 495b608d6844..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-AccessorySetupKit.todo +++ /dev/null @@ -1,14 +0,0 @@ -!missing-enum! ASPickerDisplaySettingsOptions not bound -!missing-enum-value! ASAccessoryEventType native value ASAccessoryEventTypeAccessoryDiscovered = 33 not bound -!missing-field! ASPickerDisplaySettingsDiscoveryTimeoutUnbounded not bound -!missing-selector! ASAccessorySession::finishPickerDiscovery: not bound -!missing-selector! ASAccessorySession::updatePickerShowingDiscoveredDisplayItems:completionHandler: not bound -!missing-selector! ASDiscoveredAccessory::bluetoothAdvertisementData not bound -!missing-selector! ASDiscoveredAccessory::bluetoothRSSI not bound -!missing-selector! ASDiscoveredDisplayItem::initWithName:productImage:accessory: not bound -!missing-selector! ASMigrationDisplayItem::setWifiAwarePairedDeviceID: not bound -!missing-selector! ASMigrationDisplayItem::wifiAwarePairedDeviceID not bound -!missing-selector! ASPickerDisplaySettings::options not bound -!missing-selector! ASPickerDisplaySettings::setOptions: not bound -!missing-type! ASDiscoveredAccessory not bound -!missing-type! ASDiscoveredDisplayItem not bound