Skip to content

Commit 1c46ed7

Browse files
dalexsotoCopilot
andcommitted
[Bindings] Update multiple frameworks up to Xcode 27.0 Beta 5
Update bindings for every requested framework: - Accessibility: add the cross-platform AX speech SSML attribute key. - AuthenticationServices: expose the Platform SSO authorization-scope option on macOS. - CoreImage: bind asynchronous RAW decoder resource downloads with progress reporting. - CoreMedia: add human-readable metadata description and specification keys, including the strong dictionary projection. - CoreTelephony: add the NotSupported cellular plan authorization status. - ImageIO: expose the quality-prioritized image source option and test its dictionary serialization. - NetworkExtension: remove the packet-tunnel IP-family API surface that is now visionOS-only, and suppress the intentional branch-base API removals. - PassKit: add the PayPak, Maal, and Elcard payment networks. - PhotosUI: add the iOS photo-search-suggestion initializer. - ReplayKit: deprecate RPScreenRecorder in favor of ScreenCaptureKit on every supported platform. - ThreadNetwork: update the credential-sharing selector and add nearby active-credential retrieval. - UIKit: add sheet placement values and the preferred placement property with tvOS member exclusions. - VideoToolbox: add low-latency super-resolution scale-factor and dimension capability APIs. Compatibility and intentionally unchanged items: - Preserve the shipped VideoToolbox GetSupportedScaleFactors nint[] API for the current ABI, while queuing the header-correct float[] shape under XAMCORE_5_0. - Keep the five older CoreMedia metadata specification keys ignored because the broader metadata registry family remains intentionally unbound and those entries were outside the Beta 5 TODO scope. - Keep NetworkExtension APICompat suppressions limited to branch-base comparisons; the withdrawn APIs never shipped in the stable 26.5 baseline. Validation: - Ran the mandatory initial make world, rebuilt with make world for every binding/API change, and ran a final make world after review fixes. - Clean xtro generation and dotnet-classify passed with Sanity check passed; all 41 in-scope TODO files are resolved and removed. - Clean Cecil tests passed: 112 passed, 4 skipped, 0 failed. - Clean .NET app-size tests completed with 16 intentional skips under the beta-Xcode guard and 0 failures. - Stable and origin/xcode27.0 APICompat comparisons passed for iOS, tvOS, macOS, and Mac Catalyst. - ImageIO monotouch fixtures built and ran on all four platforms; Xcode 27 simulator runs succeeded and desktop hosts reported only expected OS-version skips. - Introspection passed on iOS 27.0 (44/44), tvOS 27.0 (43/43), and macOS (32/32, 2 host-version skips). - Mac Catalyst passed every non-constructor introspection fixture (36 passed, 4 expected ignored); the three constructor tests remain unexecutable in this headless environment because CoreLocationUI.CLLocationButton triggers the documented TCC privacy abort. - GPT-5.6 Sol and Claude Opus 5 reviewed both the interpretations/proposals and the final diff/results at maximum reasoning; all substantive findings were resolved. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b8c0c624-0db9-44a4-b3ef-b8b5d32ca2c7
1 parent 4855eb8 commit 1c46ed7

63 files changed

Lines changed: 405 additions & 117 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/ImageIO/CGImageSource.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,15 @@ public CGImageOptions ()
9898
/// <remarks>To be added.</remarks>
9999
public bool ShouldAllowFloat { get; set; }
100100

101+
/// <summary>Gets or sets whether image decoding prioritizes quality over speed.</summary>
102+
/// <value><see langword="true" /> to use the highest-quality available decoder; otherwise, <see langword="false" />.</value>
103+
/// <remarks>This option currently affects camera RAW images and is ignored for unsupported image formats.</remarks>
104+
[SupportedOSPlatform ("ios27.0")]
105+
[SupportedOSPlatform ("tvos27.0")]
106+
[SupportedOSPlatform ("macos27.0")]
107+
[SupportedOSPlatform ("maccatalyst27.0")]
108+
public bool PrioritizeQuality { get; set; }
109+
101110
internal virtual NSMutableDictionary ToDictionary ()
102111
{
103112
var dict = new NSMutableDictionary ();
@@ -109,6 +118,8 @@ internal virtual NSMutableDictionary ToDictionary ()
109118
using (var allowableTypes = NSArray.FromStrings (AllowableTypes))
110119
dict.LowlevelSetObject (allowableTypes, kAllowableTypes);
111120
}
121+
if (kPrioritizeQuality != IntPtr.Zero && PrioritizeQuality)
122+
dict.LowlevelSetObject (CFBoolean.TrueHandle, kPrioritizeQuality);
112123
#pragma warning restore CA1416
113124
if (!ShouldCache)
114125
dict.LowlevelSetObject (CFBoolean.FalseHandle, kShouldCache);

src/UIKit/UIEnums.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4736,6 +4736,26 @@ public enum UISheetPresentationControllerDetentIdentifier {
47364736
Large,
47374737
}
47384738

4739+
/// <summary>Specifies where a sheet is placed within its presenting view.</summary>
4740+
[TV (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
4741+
[Native]
4742+
public enum UISheetPresentationControllerPlacement : long {
4743+
/// <summary>The system determines the sheet placement.</summary>
4744+
Automatic,
4745+
4746+
/// <summary>Places the sheet on the leading edge.</summary>
4747+
[NoTV]
4748+
Leading,
4749+
4750+
/// <summary>Centers the sheet within the presenting view.</summary>
4751+
[NoTV]
4752+
Center,
4753+
4754+
/// <summary>Places the sheet on the trailing edge.</summary>
4755+
[NoTV]
4756+
Trailing,
4757+
}
4758+
47394759
[TV (15, 0), iOS (15, 0), MacCatalyst (15, 0)]
47404760
[Native]
47414761
public enum UIWindowScenePresentationStyle : ulong {

src/accessibility.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,15 @@ enum AXTechnology {
420420
Zoom,
421421
}
422422

423+
/// <summary>Provides keys for accessibility speech attributes.</summary>
424+
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
425+
[Static]
426+
interface AXSpeechAttributes {
427+
/// <summary>Gets the key for a Speech Synthesis Markup Language fragment.</summary>
428+
[Field ("AXSpeechAttributeSSML")]
429+
NSString Ssml { get; }
430+
}
431+
423432
[iOS (18, 2), NoTV, NoMacCatalyst, NoMac]
424433
[Native]
425434
[ErrorDomain ("AXFeatureOverrideSessionErrorDomain")]

src/authenticationservices.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2118,6 +2118,11 @@ SecKey LoginRequestEncryptionPublicKey {
21182118
[NullAllowed, Export ("additionalAuthorizationScopes")]
21192119
string AdditionalAuthorizationScopes { get; set; }
21202120

2121+
/// <summary>Gets or sets whether requests include the Platform SSO authorization scopes.</summary>
2122+
[Mac (27, 0)]
2123+
[Export ("includePlatformSSOAuthorizationScopes")]
2124+
bool IncludePlatformSsoAuthorizationScopes { get; set; }
2125+
21212126
[NullAllowed]
21222127
[Export ("federationRequestURN")]
21232128
string FederationRequestUrn { get; set; }

src/coreimage.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,6 +1394,10 @@ public enum CIRawDecoderVersion : long {
13941394
Version6Dng = 6,
13951395
}
13961396

1397+
/// <summary>Handler invoked when Core Image finishes downloading resources for a RAW filter.</summary>
1398+
/// <param name="error">The error if the download failed or timed out; otherwise, <see langword="null" />.</param>
1399+
delegate void CIRawFilterDownloadResourcesCompletionHandler ([NullAllowed] NSError error);
1400+
13971401
[iOS (15, 0), MacCatalyst (15, 0), TV (15, 0)]
13981402
[BaseType (typeof (CIFilter), Name = "CIRAWFilter")]
13991403
interface CIRawFilter : CIFilterProtocol {
@@ -1409,6 +1413,18 @@ interface CIRawFilter : CIFilterProtocol {
14091413
[Export ("supportedCameraModelsWithVersion:")]
14101414
string [] GetSupportedCameraModels ([BindAs (typeof (CIRawDecoderVersion))] NSString version);
14111415

1416+
/// <summary>Downloads on-demand resources required to decode the filter's image.</summary>
1417+
/// <param name="timeout">The maximum time, in seconds, to wait for the download.</param>
1418+
/// <param name="completionHandler">The handler to invoke when the download finishes.</param>
1419+
/// <returns>An object that tracks and can cancel the download.</returns>
1420+
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
1421+
[Async (XmlDocs = """
1422+
<summary>Asynchronously downloads on-demand resources required to decode the filter's image.</summary>
1423+
<returns>A task that represents the asynchronous download operation.</returns>
1424+
""")]
1425+
[Export ("downloadResourcesWithTimeout:completionHandler:")]
1426+
NSProgress DownloadResources (double timeout, CIRawFilterDownloadResourcesCompletionHandler completionHandler);
1427+
14121428
[Export ("supportedDecoderVersions")]
14131429
string [] SupportedDecoderVersions { get; }
14141430

src/coremedia.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ enum CMFormatDescriptionHeroEye {
255255
Right,
256256
}
257257

258+
/// <summary>Provides keys for Core Media metadata format descriptions.</summary>
258259
[Static]
259260
interface CMMetadataFormatDescriptionKeys {
260261
[Field ("kCMMetadataFormatDescriptionKey_Namespace")]
@@ -283,6 +284,20 @@ interface CMMetadataFormatDescriptionKeys {
283284

284285
[Field ("kCMMetadataFormatDescriptionKey_SetupData")]
285286
NSString SetupData { get; }
287+
288+
/// <summary>Gets the key for a human-readable description of the metadata.</summary>
289+
[iOS (27, 0), TV (27, 0), Mac (27, 0), MacCatalyst (27, 0)]
290+
[Field ("kCMMetadataFormatDescriptionKey_HumanReadableString")]
291+
NSString HumanReadableString { get; }
292+
}
293+
294+
/// <summary>Provides keys for Core Media metadata format description specifications.</summary>
295+
[iOS (27, 0), TV (27, 0), Mac (27, 0), MacCatalyst (27, 0)]
296+
[Static]
297+
interface CMMetadataFormatDescriptionMetadataSpecificationKeys {
298+
/// <summary>Gets the key for a human-readable description of the metadata specification.</summary>
299+
[Field ("kCMMetadataFormatDescriptionMetadataSpecificationKey_HumanReadableString")]
300+
NSString HumanReadableString { get; }
286301
}
287302

288303
[StrongDictionary ("CMMetadataFormatDescriptionKeys", Suffix = "")]
@@ -305,6 +320,10 @@ interface CMMetadataFormatDescription {
305320
NSDictionary StructuralDependency { get; }
306321

307322
NSData SetupData { get; }
323+
324+
/// <summary>Gets the human-readable description of the metadata.</summary>
325+
[iOS (27, 0), TV (27, 0), Mac (27, 0), MacCatalyst (27, 0)]
326+
string HumanReadableString { get; }
308327
}
309328

310329
[Static]

src/coretelephony.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public enum CTCellularPlanStatusAuthorization : long {
3838
Authorized,
3939
/// <summary>Cellular plan status checks are unavailable for the phone number.</summary>
4040
Restricted,
41+
/// <summary>The device doesn't support authorization requests for cellular plan status.</summary>
42+
NotSupported,
4143
}
4244

4345
/// <summary>Values that describe a device's quick-switch status.</summary>

src/imageio.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4048,6 +4048,11 @@ interface CGImageOptions {
40484048
[Internal]
40494049
[Field ("kCGImageSourceShouldAllowFloat")]
40504050
IntPtr kShouldAllowFloat { get; }
4051+
4052+
[iOS (27, 0), TV (27, 0), Mac (27, 0), MacCatalyst (27, 0)]
4053+
[Internal]
4054+
[Field ("kCGImageSourcePrioritizeQuality")]
4055+
IntPtr kPrioritizeQuality { get; }
40514056
}
40524057

40534058
/// <summary>Configuration options used when loading thumbnails using CGImageSource.</summary>

src/networkextension.cs

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3742,20 +3742,6 @@ interface NEFilterReport : NSSecureCoding, NSCopying {
37423742
nuint BytesOutboundCount { get; }
37433743
}
37443744

3745-
/// <summary>Specifies the IP families to which a packet tunnel network setting applies.</summary>
3746-
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
3747-
[Native ("NEPacketTunnelNetworkSettingsIPFamily")]
3748-
enum NEPacketTunnelNetworkSettingsIpFamily : long {
3749-
/// <summary>The setting is disabled.</summary>
3750-
None = 0,
3751-
/// <summary>The setting applies to both IPv4 and IPv6 traffic.</summary>
3752-
Any = 1,
3753-
/// <summary>The setting applies only to IPv4 traffic.</summary>
3754-
IPv4 = 2,
3755-
/// <summary>The setting applies only to IPv6 traffic.</summary>
3756-
IPv6 = 3,
3757-
}
3758-
37593745
/// <summary>Contains settings for a <see cref="NetworkExtension.NEPacketTunnelFlow" />.</summary>
37603746
/// <remarks>To be added.</remarks>
37613747
/// <related type="externalDocumentation" href="https://developer.apple.com/library/ios/documentation/NetworkExtension/Reference/NEPacketTunnelNetworkSettingsClassRef/index.html">Apple documentation for <c>NEPacketTunnelNetworkSettings</c></related>
@@ -3808,36 +3794,6 @@ interface NEPacketTunnelNetworkSettings {
38083794
[Export ("MTU", ArgumentSemantic.Copy)]
38093795
[NullAllowed]
38103796
NSNumber Mtu { get; set; }
3811-
3812-
/// <summary>Gets or sets the IP families whose traffic is routed through the tunnel.</summary>
3813-
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
3814-
[Export ("includeAllNetworks", ArgumentSemantic.Assign)]
3815-
NEPacketTunnelNetworkSettingsIpFamily IncludeAllNetworks { get; set; }
3816-
3817-
/// <summary>Gets or sets the IP families whose local network traffic is excluded from the tunnel.</summary>
3818-
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
3819-
[Export ("excludeLocalNetworks", ArgumentSemantic.Assign)]
3820-
NEPacketTunnelNetworkSettingsIpFamily ExcludeLocalNetworks { get; set; }
3821-
3822-
/// <summary>Gets or sets whether internet-routable cellular services traffic is excluded from the tunnel.</summary>
3823-
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
3824-
[Export ("excludeCellularServices")]
3825-
bool ExcludeCellularServices { get; set; }
3826-
3827-
/// <summary>Gets or sets whether Apple Push Notification service traffic is excluded from the tunnel.</summary>
3828-
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
3829-
[Export ("excludeAPNs")]
3830-
bool ExcludeAPNs { get; set; }
3831-
3832-
/// <summary>Gets or sets whether traffic used to communicate with directly connected devices is excluded from the tunnel.</summary>
3833-
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
3834-
[Export ("excludeDeviceCommunication")]
3835-
bool ExcludeDeviceCommunication { get; set; }
3836-
3837-
/// <summary>Gets or sets whether this tunnel's routes take precedence over locally defined routes.</summary>
3838-
[TV (27, 0), Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0)]
3839-
[Export ("enforceRoutes")]
3840-
bool EnforceRoutes { get; set; }
38413797
}
38423798

38433799
/// <summary>Provides IO over a TUN interface.</summary>

src/passkit.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2097,6 +2097,21 @@ interface PKPaymentNetwork {
20972097
[Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0), NoTV]
20982098
[Field ("PKPaymentNetworkUzCard")]
20992099
NSString UzCard { get; }
2100+
2101+
/// <summary>Gets the PayPak payment network.</summary>
2102+
[Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0), NoTV]
2103+
[Field ("PKPaymentNetworkPayPak")]
2104+
NSString PayPak { get; }
2105+
2106+
/// <summary>Gets the Maal payment network.</summary>
2107+
[Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0), NoTV]
2108+
[Field ("PKPaymentNetworkMaal")]
2109+
NSString Maal { get; }
2110+
2111+
/// <summary>Gets the Elcard payment network.</summary>
2112+
[Mac (27, 0), iOS (27, 0), MacCatalyst (27, 0), NoTV]
2113+
[Field ("PKPaymentNetworkElcard")]
2114+
NSString Elcard { get; }
21002115
}
21012116

21022117
/// <summary>A button used to activate an Apple Pay payment. Available styles and types are defined by <see cref="PassKit.PKPaymentButtonStyle" /> and <see cref="PassKit.PKPaymentButtonType" />.</summary>

0 commit comments

Comments
 (0)