[ImageIO] Update bindings up to Xcode 27.0 Beta 3 - #26175
Conversation
Expose the new per-image-source format allowlist through CGImageOptions.AllowableTypes on iOS, tvOS, macOS, and Mac Catalyst. Marshal UTI arrays into the ImageIO options dictionary while preserving the distinct null and empty-array semantics and safely guarding older runtimes. Add behavioral coverage that verifies allowed PNG decoding, rejection of a mismatched JPEG allowlist, and the empty-list disablement behavior. Remove the four resolved ImageIO xtro todo files. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2d20acbf-41e7-403e-ba47-1cf6618300ec
There was a problem hiding this comment.
Pull request overview
This PR updates the ImageIO bindings to match Xcode 27.0 beta 3 by exposing the new kCGImageSourceAllowableTypes option as CGImageOptions.AllowableTypes, while preserving null-vs-empty behavior and safely omitting the key on older OS versions.
Changes:
- Added
CGImageOptions.AllowableTypes(iOS/tvOS/macOS/Mac Catalyst 27.0) and plumbed it into the options dictionary only when the native key exists. - Added a monotouch-test that validates decoding behavior for allowed, disallowed, and empty allowlists.
- Removed the now-resolved ImageIO xtro todo entries for all platforms.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/xtro-sharpie/api-annotations-dotnet/tvOS-ImageIO.todo | Removed resolved xtro annotation for the newly bound field. |
| tests/xtro-sharpie/api-annotations-dotnet/macOS-ImageIO.todo | Removed resolved xtro annotation for the newly bound field. |
| tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-ImageIO.todo | Removed resolved xtro annotation for the newly bound field. |
| tests/xtro-sharpie/api-annotations-dotnet/iOS-ImageIO.todo | Removed resolved xtro annotation for the newly bound field. |
| tests/monotouch-test/ImageIO/CGImageSourceTest.cs | Added runtime-behavior coverage for allowable-types filtering. |
| src/ImageIO/CGImageSource.cs | Added the public AllowableTypes option and ensured it’s only applied when the native key is available. |
| src/imageio.cs | Bound kCGImageSourceAllowableTypes as an internal versioned field for dictionary-key usage. |
✅ API diff for current PR / commitNET (empty diffs)✅ API diff vs stableNET (empty diffs)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
🚀 [CI Build #a39abcd] Test results 🚀Test results✅ All tests passed on VSTS: test results. 🎉 All 195 tests passed 🎉 Tests counts✅ assembly-processing: All 1 tests passed. [attempt 2] Html Report (VSDrops) Download macOS tests✅ Tests on macOS Sonoma (14): All 5 tests passed. Html Report (VSDrops) Download Linux Build VerificationPipeline on Agent |
Summary
kCGImageSourceAllowableTypescreation option asCGImageOptions.AllowableTypeson iOS, tvOS, macOS, and Mac Catalyst.Validation
make worldon the currentxcode27.0tiprun-bareis blocked by the known unsigned-app TCC privacy abort on the macOS 26.5 host