From 0e38dec2d8f7c6373bf17256a1b460206c39593a Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 29 Apr 2025 08:17:12 +0200 Subject: [PATCH 01/11] Bump to Xcode 16.4 beta 1. --- Make.config | 6 ++--- Make.versions | 8 +++--- builds/Versions-MacCatalyst.plist.in | 2 ++ builds/Versions-iOS.plist.in | 2 ++ builds/Versions-macOS.plist.in | 2 ++ builds/Versions-tvOS.plist.in | 2 ++ tools/common/SdkVersions.cs | 26 +++++++++---------- tools/devops/automation/build-pipeline.yml | 2 +- .../devops/automation/build-pull-request.yml | 2 +- .../templates/pipelines/api-diff-pipeline.yml | 2 +- .../templates/pipelines/build-pipeline.yml | 2 +- .../pipelines/run-tests-pipeline.yml | 2 +- 12 files changed, 33 insertions(+), 25 deletions(-) diff --git a/Make.config b/Make.config index ea2eab2960d6..c8488a2d73b3 100644 --- a/Make.config +++ b/Make.config @@ -201,9 +201,9 @@ MACCATALYST_NUGET_VERSION_NO_METADATA=$(MACCATALYST_NUGET_VERSION)$(NUGET_PREREL MACCATALYST_NUGET_VERSION_FULL=$(MACCATALYST_NUGET_VERSION_NO_METADATA)$(NUGET_BUILD_METADATA) # Xcode version should have both a major and a minor version (even if the minor version is 0) -XCODE_VERSION=16.3 -XCODE_URL=https://dl.internalx.com/internal-files/xcodes/Xcode_16.3.xip -XCODE_DEVELOPER_ROOT=/Applications/Xcode_16.3.0.app/Contents/Developer +XCODE_VERSION=16.4 +XCODE_URL=https://dl.internalx.com/internal-files/xcodes/Xcode_16.4_beta.xip +XCODE_DEVELOPER_ROOT=/Applications/Xcode_16.4.0-beta.app/Contents/Developer XCODE_PRODUCT_BUILD_VERSION:=$(shell /usr/libexec/PlistBuddy -c 'Print :ProductBuildVersion' $(XCODE_DEVELOPER_ROOT)/../version.plist 2>/dev/null || echo " $(shell tput setaf 1 2>/dev/null)The required Xcode ($(XCODE_VERSION)) is not installed in $(basename $(basename $(XCODE_DEVELOPER_ROOT)))$(shell tput sgr0 2>/dev/null)" >&2) # We define stable Xcode as the Xcode app being named like "Xcode_#.#[.#].app" diff --git a/Make.versions b/Make.versions index 67d06d8e1652..dd21f2d9ab7e 100644 --- a/Make.versions +++ b/Make.versions @@ -21,10 +21,10 @@ # IMPORTANT: There must be *no* managed API differences unless the two first # numbers (major.minor) changes. -IOS_NUGET_OS_VERSION=18.4 -TVOS_NUGET_OS_VERSION=18.4 -MACOS_NUGET_OS_VERSION=15.4 -MACCATALYST_NUGET_OS_VERSION=18.4 +IOS_NUGET_OS_VERSION=18.5 +TVOS_NUGET_OS_VERSION=18.5 +MACOS_NUGET_OS_VERSION=15.5 +MACCATALYST_NUGET_OS_VERSION=18.5 # The following are the OS versions we first supported with the current .NET version. # These versions must *not* change with minor .NET updates, only major .NET releases. diff --git a/builds/Versions-MacCatalyst.plist.in b/builds/Versions-MacCatalyst.plist.in index ea571e75ba44..2a0ce18579e0 100644 --- a/builds/Versions-MacCatalyst.plist.in +++ b/builds/Versions-MacCatalyst.plist.in @@ -23,6 +23,7 @@ 18.2 18.3 18.4 + 18.5 SupportedTargetPlatformVersions @@ -56,6 +57,7 @@ 18.2 18.3 18.4 + 18.5 MacCatalystVersionMap diff --git a/builds/Versions-iOS.plist.in b/builds/Versions-iOS.plist.in index 52b0344742da..f1b7fa2216c9 100644 --- a/builds/Versions-iOS.plist.in +++ b/builds/Versions-iOS.plist.in @@ -40,6 +40,7 @@ 18.2 18.3 18.4 + 18.5 SupportedTargetPlatformVersions @@ -92,6 +93,7 @@ 18.2 18.3 18.4 + 18.5 RecommendedXcodeVersion diff --git a/builds/Versions-macOS.plist.in b/builds/Versions-macOS.plist.in index dae075f88892..1dcf6d2ea1cd 100644 --- a/builds/Versions-macOS.plist.in +++ b/builds/Versions-macOS.plist.in @@ -25,6 +25,7 @@ 15.2 15.3 15.4 + 15.5 SupportedTargetPlatformVersions @@ -56,6 +57,7 @@ 15.2 15.3 15.4 + 15.5 RecommendedXcodeVersion diff --git a/builds/Versions-tvOS.plist.in b/builds/Versions-tvOS.plist.in index 17abd0c50363..6d3a495a8375 100644 --- a/builds/Versions-tvOS.plist.in +++ b/builds/Versions-tvOS.plist.in @@ -35,6 +35,7 @@ 18.2 18.3 18.4 + 18.5 SupportedTargetPlatformVersions @@ -82,6 +83,7 @@ 18.2 18.3 18.4 + 18.5 RecommendedXcodeVersion diff --git a/tools/common/SdkVersions.cs b/tools/common/SdkVersions.cs index 4e4155fe0a61..6f3d4028d5c3 100644 --- a/tools/common/SdkVersions.cs +++ b/tools/common/SdkVersions.cs @@ -14,11 +14,11 @@ namespace Xamarin { static class SdkVersions { - public const string Xcode = "16.3"; - public const string OSX = "15.4"; - public const string iOS = "18.4"; - public const string TVOS = "18.4"; - public const string MacCatalyst = "18.4"; + public const string Xcode = "16.4"; + public const string OSX = "15.5"; + public const string iOS = "18.5"; + public const string TVOS = "18.5"; + public const string MacCatalyst = "18.5"; public const string MinOSX = "12.0"; public const string MiniOS = "12.2"; @@ -32,16 +32,16 @@ static class SdkVersions { public const string MiniOSSimulator = "16.0"; public const string MinTVOSSimulator = "16.0"; - public const string MaxiOSSimulator = "18.4"; - public const string MaxTVOSSimulator = "18.4"; + public const string MaxiOSSimulator = "18.5"; + public const string MaxTVOSSimulator = "18.5"; - public const string MaxiOSDeploymentTarget = "18.4"; - public const string MaxTVOSDeploymentTarget = "18.4"; + public const string MaxiOSDeploymentTarget = "18.5"; + public const string MaxTVOSDeploymentTarget = "18.5"; - public const string TargetPlatformVersionExecutableiOS = "18.4"; - public const string TargetPlatformVersionExecutabletvOS = "18.4"; - public const string TargetPlatformVersionExecutablemacOS = "15.4"; - public const string TargetPlatformVersionExecutableMacCatalyst = "18.4"; + public const string TargetPlatformVersionExecutableiOS = "18.5"; + public const string TargetPlatformVersionExecutabletvOS = "18.5"; + public const string TargetPlatformVersionExecutablemacOS = "15.5"; + public const string TargetPlatformVersionExecutableMacCatalyst = "18.5"; public const string TargetPlatformVersionLibraryiOS = "18.0"; public const string TargetPlatformVersionLibrarytvOS = "18.0"; diff --git a/tools/devops/automation/build-pipeline.yml b/tools/devops/automation/build-pipeline.yml index eb7c1699bbaa..ed184a2b111e 100644 --- a/tools/devops/automation/build-pipeline.yml +++ b/tools/devops/automation/build-pipeline.yml @@ -124,7 +124,7 @@ extends: stages: - template: templates/main-stage.yml parameters: - xcodeChannel: Stable + xcodeChannel: Beta macOSName: ${{ parameters.macOSName }} isPR: false provisionatorChannel: ${{ parameters.provisionatorChannel }} diff --git a/tools/devops/automation/build-pull-request.yml b/tools/devops/automation/build-pull-request.yml index 456c68492cda..0c1b3d275bc7 100644 --- a/tools/devops/automation/build-pull-request.yml +++ b/tools/devops/automation/build-pull-request.yml @@ -117,7 +117,7 @@ extends: stages: - template: templates/main-stage.yml parameters: - xcodeChannel: Stable + xcodeChannel: Beta macOSName: ${{ parameters.macOSName }} isPR: true provisionatorChannel: ${{ parameters.provisionatorChannel }} diff --git a/tools/devops/automation/templates/pipelines/api-diff-pipeline.yml b/tools/devops/automation/templates/pipelines/api-diff-pipeline.yml index 4ae2c07f6d99..b4b6bfe13d82 100644 --- a/tools/devops/automation/templates/pipelines/api-diff-pipeline.yml +++ b/tools/devops/automation/templates/pipelines/api-diff-pipeline.yml @@ -54,7 +54,7 @@ variables: stages: - template: ../api-diff-stage.yml parameters: - xcodeChannel: Stable + xcodeChannel: Beta macOSName: ${{ parameters.macOSName }} isPR: ${{ parameters.isPR }} provisionatorChannel: ${{ parameters.provisionatorChannel }} diff --git a/tools/devops/automation/templates/pipelines/build-pipeline.yml b/tools/devops/automation/templates/pipelines/build-pipeline.yml index be1c7f2c0e5a..c112662bab12 100644 --- a/tools/devops/automation/templates/pipelines/build-pipeline.yml +++ b/tools/devops/automation/templates/pipelines/build-pipeline.yml @@ -89,7 +89,7 @@ variables: stages: - template: ../main-stage.yml parameters: - xcodeChannel: Stable + xcodeChannel: Beta macOSName: ${{ parameters.macOSName }} isPR: ${{ parameters.isPR }} provisionatorChannel: ${{ parameters.provisionatorChannel }} diff --git a/tools/devops/automation/templates/pipelines/run-tests-pipeline.yml b/tools/devops/automation/templates/pipelines/run-tests-pipeline.yml index c16ea34a0392..2f259c4b8526 100644 --- a/tools/devops/automation/templates/pipelines/run-tests-pipeline.yml +++ b/tools/devops/automation/templates/pipelines/run-tests-pipeline.yml @@ -55,7 +55,7 @@ variables: stages: - template: ../tests-stage.yml parameters: - xcodeChannel: Stable + xcodeChannel: Beta macOSName: ${{ parameters.macOSName }} isPR: ${{ parameters.isPR }} provisionatorChannel: ${{ parameters.provisionatorChannel }} From 3ce6da3a38b0ba4d4aa8d694b43a49dff5fa1de3 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 29 Apr 2025 10:36:44 +0200 Subject: [PATCH 02/11] Update cecil tests. --- .../Documentation.KnownFailures.txt | 177 ++++++++++++++---- 1 file changed, 140 insertions(+), 37 deletions(-) diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index 6abdd4c20e43..862b61be7b19 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -7440,7 +7440,17 @@ M:AppKit.NSBrowserDelegate_Extensions.ValidateDrop(AppKit.INSBrowserDelegate,App M:AppKit.NSButton.Dispose(System.Boolean) M:AppKit.NSButtonTouchBarItem.Dispose(System.Boolean) M:AppKit.NSCandidateListTouchBarItem.Dispose(System.Boolean) +M:AppKit.NSCell.AccessibilityPerformAction(Foundation.NSString) M:AppKit.NSCell.Dispose(System.Boolean) +M:AppKit.NSCell.GetAccessibilityActionDescription(Foundation.NSString) +M:AppKit.NSCell.GetAccessibilityArrayAttributeCount(Foundation.NSString) +M:AppKit.NSCell.GetAccessibilityArrayAttributeValues(Foundation.NSString,System.UIntPtr,System.UIntPtr) +M:AppKit.NSCell.GetAccessibilityHitTest(CoreGraphics.CGPoint) +M:AppKit.NSCell.GetAccessibilityIndexOfChild(Foundation.NSObject) +M:AppKit.NSCell.GetAccessibilityValue(Foundation.NSString,Foundation.NSObject) +M:AppKit.NSCell.GetAccessibilityValue(Foundation.NSString) +M:AppKit.NSCell.IsAccessibilityAttributeSettable(Foundation.NSString) +M:AppKit.NSCell.SetAccessibilityValue(Foundation.NSString,Foundation.NSObject) M:AppKit.NSCollectionLayoutAnchor.Create(AppKit.NSDirectionalRectEdge,AppKit.NSCollectionLayoutAnchorOffsetType,CoreGraphics.CGPoint) M:AppKit.NSCollectionLayoutGroup.GetHorizontalGroup(AppKit.NSCollectionLayoutSize,AppKit.NSCollectionLayoutItem,System.IntPtr) M:AppKit.NSCollectionLayoutGroup.GetVerticalGroup(AppKit.NSCollectionLayoutSize,AppKit.NSCollectionLayoutItem,System.IntPtr) @@ -7845,9 +7855,19 @@ M:AppKit.NSTouch.#ctor M:AppKit.NSTouchBar.Dispose(System.Boolean) M:AppKit.NSUserInterfaceItemSearching_Extensions.PerformAction(AppKit.INSUserInterfaceItemSearching,Foundation.NSObject) M:AppKit.NSUserInterfaceItemSearching_Extensions.ShowAllHelpTopics(AppKit.INSUserInterfaceItemSearching,System.String) +M:AppKit.NSView.AccessibilityPerformAction(Foundation.NSString) M:AppKit.NSView.AddToolTip(CoreGraphics.CGRect,AppKit.INSToolTipOwner) M:AppKit.NSView.AddToolTip(CoreGraphics.CGRect,Foundation.NSObject) M:AppKit.NSView.Dispose(System.Boolean) +M:AppKit.NSView.GetAccessibilityActionDescription(Foundation.NSString) +M:AppKit.NSView.GetAccessibilityArrayAttributeCount(Foundation.NSString) +M:AppKit.NSView.GetAccessibilityArrayAttributeValues(Foundation.NSString,System.UIntPtr,System.UIntPtr) +M:AppKit.NSView.GetAccessibilityHitTest(CoreGraphics.CGPoint) +M:AppKit.NSView.GetAccessibilityIndexOfChild(Foundation.NSObject) +M:AppKit.NSView.GetAccessibilityValue(Foundation.NSString,Foundation.NSObject) +M:AppKit.NSView.GetAccessibilityValue(Foundation.NSString) +M:AppKit.NSView.IsAccessibilityAttributeSettable(Foundation.NSString) +M:AppKit.NSView.SetAccessibilityValue(Foundation.NSString,Foundation.NSObject) M:AppKit.NSView.SortSubviews(System.Func{AppKit.NSView,AppKit.NSView,Foundation.NSComparisonResult}) M:AppKit.NSViewController.Dispose(System.Boolean) M:AppKit.NSWindow.add_DidBecomeKey(System.EventHandler) @@ -10620,19 +10640,6 @@ M:Foundation.NSArray.ToArray M:Foundation.NSArray.ToArray``1 M:Foundation.NSArray`1.ToArray M:Foundation.NSAttributedString.#ctor(System.String,AppKit.NSFont,AppKit.NSColor,AppKit.NSColor,AppKit.NSColor,AppKit.NSColor,AppKit.NSColor,Foundation.NSUnderlineStyle,Foundation.NSUnderlineStyle,AppKit.NSParagraphStyle,System.Single,AppKit.NSShadow,Foundation.NSUrl,System.Boolean,AppKit.NSTextAttachment,Foundation.NSLigatureType,System.Single,System.Single,System.Single,System.Single,AppKit.NSCursor,System.String,System.Int32,AppKit.NSGlyphInfo,Foundation.NSArray,System.Boolean,AppKit.NSTextLayoutOrientation,AppKit.NSTextAlternatives,AppKit.NSSpellingState) -M:Foundation.NSAttributedString.Create(AppKit.NSAdaptiveImageGlyph,Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}) -M:Foundation.NSAttributedString.Create(UIKit.NSAdaptiveImageGlyph,Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}) -M:Foundation.NSAttributedString.DoubleClick(System.UIntPtr) -M:Foundation.NSAttributedString.FromAttachment(AppKit.NSTextAttachment,Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}) -M:Foundation.NSAttributedString.FromAttachment(UIKit.NSTextAttachment,Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}) -M:Foundation.NSAttributedString.GetItemNumber(AppKit.NSTextList,System.UIntPtr) -M:Foundation.NSAttributedString.GetLineBreak(System.UIntPtr,Foundation.NSRange) -M:Foundation.NSAttributedString.GetLineBreakByHyphenating(System.UIntPtr,Foundation.NSRange) -M:Foundation.NSAttributedString.GetNextWord(System.UIntPtr,System.Boolean) -M:Foundation.NSAttributedString.GetRange(AppKit.NSTextBlock,System.UIntPtr) -M:Foundation.NSAttributedString.GetRange(AppKit.NSTextList,System.UIntPtr) -M:Foundation.NSAttributedString.GetRange(AppKit.NSTextTable,System.UIntPtr) -M:Foundation.NSAttributedString.GetUrl(System.UIntPtr,Foundation.NSRange@) M:Foundation.NSAttributedString.LoadDataAsync(System.String,Foundation.NSProgress@) M:Foundation.NSAttributedString.LoadFromHtml(Foundation.NSData,Foundation.NSAttributedStringDocumentAttributes,Foundation.NSAttributedStringCompletionHandler) M:Foundation.NSAttributedString.LoadFromHtml(Foundation.NSUrl,Foundation.NSAttributedStringDocumentAttributes,Foundation.NSAttributedStringCompletionHandler) @@ -10642,21 +10649,15 @@ M:Foundation.NSAttributedString.LoadFromHtmlAsync(Foundation.NSData,Foundation.N M:Foundation.NSAttributedString.LoadFromHtmlAsync(Foundation.NSUrl,Foundation.NSAttributedStringDocumentAttributes) M:Foundation.NSAttributedString.LoadFromHtmlAsync(Foundation.NSUrlRequest,Foundation.NSAttributedStringDocumentAttributes) M:Foundation.NSAttributedString.LoadFromHtmlAsync(System.String,Foundation.NSAttributedStringDocumentAttributes) -M:Foundation.NSAttributedString.PrefersRtfdInRange(Foundation.NSRange) M:Foundation.NSBindingSelectionMarker.GetDefaultPlaceholder(Foundation.NSBindingSelectionMarker,ObjCRuntime.Class,System.String) M:Foundation.NSBindingSelectionMarker.SetDefaultPlaceholder(Foundation.NSObject,Foundation.NSBindingSelectionMarker,ObjCRuntime.Class,System.String) -M:Foundation.NSBundle.GetLocalizedString(Foundation.NSString,Foundation.NSString,Foundation.NSString,Foundation.NSString[]) M:Foundation.NSCache.add_WillEvictObject(System.EventHandler{Foundation.NSObjectEventArgs}) M:Foundation.NSCache.Dispose(System.Boolean) M:Foundation.NSCache.remove_WillEvictObject(System.EventHandler{Foundation.NSObjectEventArgs}) M:Foundation.NSCache.SetObjectForKey(Foundation.NSObject,Foundation.NSObject) -M:Foundation.NSCoder.DecodeBytes(System.String,System.UIntPtr) -M:Foundation.NSCoder.DecodeBytes(System.UIntPtr) M:Foundation.NSConnection.Dispose(System.Boolean) M:Foundation.NSDataDetector.#ctor(Foundation.NSTextCheckingType,Foundation.NSError@) M:Foundation.NSDataDetector.Create(Foundation.NSTextCheckingType,Foundation.NSError@) -M:Foundation.NSDate.#ctor(System.Double) -M:Foundation.NSDate.CreateFromSRAbsoluteTime(System.Double) M:Foundation.NSDate.op_Explicit(Foundation.NSDate)~System.DateTime M:Foundation.NSDate.op_Explicit(System.DateTime)~Foundation.NSDate M:Foundation.NSDecimal.op_Addition(Foundation.NSDecimal,Foundation.NSDecimal) @@ -10677,7 +10678,6 @@ M:Foundation.NSDecimal.Power(Foundation.NSDecimal@,Foundation.NSDecimal@,System. M:Foundation.NSDecimal.Round(Foundation.NSDecimal@,Foundation.NSDecimal@,System.IntPtr,Foundation.NSRoundingMode) M:Foundation.NSDictionary`2.FromObjectsAndKeys(`1[],`0[]) M:Foundation.NSEnumerator`1.NextObject -M:Foundation.NSError.GetFileProviderErrorForRejectedDeletion(FileProvider.INSFileProviderItem) M:Foundation.NSExceptionError.#ctor(System.Exception) M:Foundation.NSFileAttributes.#ctor M:Foundation.NSFileManager.Dispose(System.Boolean) @@ -10691,14 +10691,6 @@ M:Foundation.NSHost.op_Explicit(System.Net.IPAddress)~Foundation.NSHost M:Foundation.NSHost.op_Explicit(System.Net.IPHostEntry)~Foundation.NSHost M:Foundation.NSIndexSet.#ctor(System.IntPtr) M:Foundation.NSInvocation.Dispose(System.Boolean) -M:Foundation.NSItemProvider.#ctor(Foundation.NSUrl,UniformTypeIdentifiers.UTType,System.Boolean,System.Boolean,Foundation.NSItemProviderRepresentationVisibility) -M:Foundation.NSItemProvider.LoadDataRepresentation(UniformTypeIdentifiers.UTType,Foundation.ItemProviderDataCompletionHandler) -M:Foundation.NSItemProvider.LoadFileRepresentation(UniformTypeIdentifiers.UTType,System.Boolean,Foundation.LoadFileRepresentationHandler) -M:Foundation.NSItemProvider.RegisterCKShare(CloudKit.CKContainer,CloudKit.CKAllowedSharingOptions,System.Action) -M:Foundation.NSItemProvider.RegisterCKShare(CloudKit.CKShare,CloudKit.CKContainer,CloudKit.CKAllowedSharingOptions) -M:Foundation.NSItemProvider.RegisterDataRepresentation(UniformTypeIdentifiers.UTType,Foundation.NSItemProviderRepresentationVisibility,Foundation.NSItemProviderUTTypeLoadDelegate) -M:Foundation.NSItemProvider.RegisteredContentTypesConforming(UniformTypeIdentifiers.UTType) -M:Foundation.NSItemProvider.RegisterFileRepresentation(UniformTypeIdentifiers.UTType,Foundation.NSItemProviderRepresentationVisibility,System.Boolean,Foundation.NSItemProviderUTTypeLoadDelegate) M:Foundation.NSItemProviderWriting_Extensions.LoadDataAsync(Foundation.INSItemProviderWriting,System.String,Foundation.NSProgress@) M:Foundation.NSKeyedArchiver.add_EncodedObject(System.EventHandler{Foundation.NSObjectEventArgs}) M:Foundation.NSKeyedArchiver.add_Finished(System.EventHandler) @@ -10791,26 +10783,48 @@ M:Foundation.NSNumber.op_Implicit(System.UInt16)~Foundation.NSNumber M:Foundation.NSNumber.op_Implicit(System.UInt32)~Foundation.NSNumber M:Foundation.NSNumber.op_Implicit(System.UInt64)~Foundation.NSNumber M:Foundation.NSObject.AddObserver(Foundation.NSObject,System.String,Foundation.NSKeyValueObservingOptions,System.IntPtr) +M:Foundation.NSObject.AutomaticallyNotifiesObserversForKey(System.String) M:Foundation.NSObject.AwakeFromNib M:Foundation.NSObject.Bind(Foundation.NSString,Foundation.NSObject,System.String,Foundation.NSDictionary) +M:Foundation.NSObject.CancelPreviousPerformRequest(Foundation.NSObject,ObjCRuntime.Selector,Foundation.NSObject) +M:Foundation.NSObject.CancelPreviousPerformRequest(Foundation.NSObject) M:Foundation.NSObject.CommitEditing M:Foundation.NSObject.CommitEditing(Foundation.NSObject,ObjCRuntime.Selector,System.IntPtr) M:Foundation.NSObject.ConformsToProtocol(ObjCRuntime.NativeHandle) +M:Foundation.NSObject.DidChange(Foundation.NSKeyValueChange,Foundation.NSIndexSet,Foundation.NSString) +M:Foundation.NSObject.DidChange(Foundation.NSString,Foundation.NSKeyValueSetMutationKind,Foundation.NSSet) +M:Foundation.NSObject.DidChangeValue(System.String) M:Foundation.NSObject.DoesNotRecognizeSelector(ObjCRuntime.Selector) M:Foundation.NSObject.Finalize M:Foundation.NSObject.GetBindingInfo(Foundation.NSString) M:Foundation.NSObject.GetBindingOptionDescriptions(Foundation.NSString) M:Foundation.NSObject.GetBindingValueClass(Foundation.NSString) M:Foundation.NSObject.GetDefaultPlaceholder(Foundation.NSObject,Foundation.NSString) +M:Foundation.NSObject.GetDictionaryOfValuesFromKeys(Foundation.NSString[]) +M:Foundation.NSObject.GetKeyPathsForValuesAffecting(Foundation.NSString) M:Foundation.NSObject.GetMethodForSelector(ObjCRuntime.Selector) M:Foundation.NSObject.MutableCopy M:Foundation.NSObject.ObjectDidEndEditing(Foundation.NSObject) +M:Foundation.NSObject.ObserveValue(Foundation.NSString,Foundation.NSObject,Foundation.NSDictionary,System.IntPtr) +M:Foundation.NSObject.PerformSelector(ObjCRuntime.Selector,Foundation.NSObject,System.Double,Foundation.NSString[]) +M:Foundation.NSObject.PerformSelector(ObjCRuntime.Selector,Foundation.NSObject,System.Double) +M:Foundation.NSObject.PerformSelector(ObjCRuntime.Selector,Foundation.NSThread,Foundation.NSObject,System.Boolean,Foundation.NSString[]) +M:Foundation.NSObject.PerformSelector(ObjCRuntime.Selector,Foundation.NSThread,Foundation.NSObject,System.Boolean) M:Foundation.NSObject.PrepareForInterfaceBuilder M:Foundation.NSObject.RemoveObserver(Foundation.NSObject,System.String,System.IntPtr) M:Foundation.NSObject.RemoveObserver(Foundation.NSObject,System.String) M:Foundation.NSObject.SetDefaultPlaceholder(Foundation.NSObject,Foundation.NSObject,Foundation.NSString) +M:Foundation.NSObject.SetNilValueForKey(Foundation.NSString) +M:Foundation.NSObject.SetValueForKeyPath(Foundation.NSObject,Foundation.NSString) M:Foundation.NSObject.SetValueForKeyPath(ObjCRuntime.NativeHandle,Foundation.NSString) +M:Foundation.NSObject.SetValueForUndefinedKey(Foundation.NSObject,Foundation.NSString) +M:Foundation.NSObject.SetValuesForKeysWithDictionary(Foundation.NSDictionary) M:Foundation.NSObject.Unbind(Foundation.NSString) +M:Foundation.NSObject.ValueForKeyPath(Foundation.NSString) +M:Foundation.NSObject.ValueForUndefinedKey(Foundation.NSString) +M:Foundation.NSObject.WillChange(Foundation.NSKeyValueChange,Foundation.NSIndexSet,Foundation.NSString) +M:Foundation.NSObject.WillChange(Foundation.NSString,Foundation.NSKeyValueSetMutationKind,Foundation.NSSet) +M:Foundation.NSObject.WillChangeValue(System.String) M:Foundation.NSObjectProtocol_Extensions.GetDebugDescription(Foundation.INSObjectProtocol) M:Foundation.NSOperatingSystemVersion.#ctor(System.IntPtr,System.IntPtr,System.IntPtr) M:Foundation.NSOperatingSystemVersion.#ctor(System.IntPtr,System.IntPtr) @@ -10882,7 +10896,6 @@ M:Foundation.NSUserNotificationCenter.add_DidDeliverNotification(System.EventHan M:Foundation.NSUserNotificationCenter.Dispose(System.Boolean) M:Foundation.NSUserNotificationCenter.remove_DidActivateNotification(System.EventHandler{Foundation.UNCDidActivateNotificationEventArgs}) M:Foundation.NSUserNotificationCenter.remove_DidDeliverNotification(System.EventHandler{Foundation.UNCDidDeliverNotificationEventArgs}) -M:Foundation.NSValue.FromCMVideoDimensions(CoreMedia.CMVideoDimensions) M:Foundation.NSXpcConnection.CreateRemoteObjectProxy``1 M:Foundation.NSXpcConnection.CreateRemoteObjectProxy``1(System.Action{Foundation.NSError}) M:Foundation.NSXpcConnection.CreateSynchronousRemoteObjectProxy``1(System.Action{Foundation.NSError}) @@ -16096,6 +16109,7 @@ M:UIKit.UIAlertView.UIAlertViewAppearance.#ctor(System.IntPtr) M:UIKit.UIAppearance.op_Equality(UIKit.UIAppearance,UIKit.UIAppearance) M:UIKit.UIAppearance.op_Inequality(UIKit.UIAppearance,UIKit.UIAppearance) M:UIKit.UIApplication_DefaultApplication.GetDefaultStatus(UIKit.UIApplication,UIKit.UIApplicationCategory,Foundation.NSError@) +M:UIKit.UIApplication.AccessibilityActivate M:UIKit.UIApplication.Dispose(System.Boolean) M:UIKit.UIApplication.GetPreferredContentSizeCategory M:UIKit.UIApplicationDelegate_Extensions.DidDiscardSceneSessions(UIKit.IUIApplicationDelegate,UIKit.UIApplication,Foundation.NSSet{UIKit.UISceneSession}) @@ -16109,6 +16123,7 @@ M:UIKit.UIBarButtonItem.add_Clicked(System.EventHandler) M:UIKit.UIBarButtonItem.Dispose(System.Boolean) M:UIKit.UIBarButtonItem.remove_Clicked(System.EventHandler) M:UIKit.UIBarButtonItem.UIBarButtonItemAppearance.#ctor(System.IntPtr) +M:UIKit.UIBarItem.AccessibilityActivate M:UIKit.UIBarItem.UIBarItemAppearance.#ctor(System.IntPtr) M:UIKit.UIButton.UIButtonAppearance.#ctor(System.IntPtr) M:UIKit.UIButton.UIButtonAppearance.SetPreferredSymbolConfiguration(UIKit.UIImageSymbolConfiguration,UIKit.UIControlState) @@ -16294,6 +16309,7 @@ M:UIKit.UIGraphics.BeginImageContextWithOptions(CoreGraphics.CGSize,System.Boole M:UIKit.UIGraphics.EndPDFContext M:UIKit.UIHoverGestureRecognizer.#ctor(System.Action) M:UIKit.UIHoverGestureRecognizer.#ctor(System.Action{UIKit.UIHoverGestureRecognizer}) +M:UIKit.UIImage.AccessibilityActivate M:UIKit.UIImage.LoadDataAsync(System.String,Foundation.NSProgress@) M:UIKit.UIImage.PrepareForDisplayAsync M:UIKit.UIImage.PrepareThumbnailAsync(CoreGraphics.CGSize) @@ -16406,6 +16422,14 @@ M:UIKit.UIPrintInteractionController.remove_WillPresentPrinterOptions(System.Eve M:UIKit.UIPrintInteractionController.remove_WillStartJob(System.EventHandler) M:UIKit.UIProgressView.UIProgressViewAppearance.#ctor(System.IntPtr) M:UIKit.UIRefreshControl.UIRefreshControlAppearance.#ctor(System.IntPtr) +M:UIKit.UIResponder.AccessibilityDecrement +M:UIKit.UIResponder.AccessibilityElementDidBecomeFocused +M:UIKit.UIResponder.AccessibilityElementDidLoseFocus +M:UIKit.UIResponder.AccessibilityElementIsFocused +M:UIKit.UIResponder.AccessibilityIncrement +M:UIKit.UIResponder.AccessibilityPerformEscape +M:UIKit.UIResponder.AccessibilityPerformMagicTap +M:UIKit.UIResponder.AccessibilityScroll(UIKit.UIAccessibilityScrollDirection) M:UIKit.UIResponderStandardEditActions_Extensions.Copy(UIKit.IUIResponderStandardEditActions,Foundation.NSObject) M:UIKit.UIResponderStandardEditActions_Extensions.Cut(UIKit.IUIResponderStandardEditActions,Foundation.NSObject) M:UIKit.UIResponderStandardEditActions_Extensions.DecreaseSize(UIKit.IUIResponderStandardEditActions,Foundation.NSObject) @@ -16737,6 +16761,7 @@ M:UIKit.UIVideoEditorController.Dispose(System.Boolean) M:UIKit.UIVideoEditorController.remove_Failed(System.EventHandler{Foundation.NSErrorEventArgs}) M:UIKit.UIVideoEditorController.remove_Saved(System.EventHandler{UIKit.UIPathEventArgs}) M:UIKit.UIVideoEditorController.remove_UserCancelled(System.EventHandler) +M:UIKit.UIView.AccessibilityActivate M:UIKit.UIView.add_AnimationWillEnd(System.Action) M:UIKit.UIView.add_AnimationWillStart(System.Action) M:UIKit.UIView.AnimateAsync(System.Double,System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Double,UIKit.UIViewAnimationOptions,System.Action) @@ -17122,7 +17147,6 @@ M:WebKit.WKNavigationDelegate_Extensions.NavigationActionDidBecomeDownload(WebKi M:WebKit.WKNavigationDelegate_Extensions.NavigationResponseDidBecomeDownload(WebKit.IWKNavigationDelegate,WebKit.WKWebView,WebKit.WKNavigationResponse,WebKit.WKDownload) M:WebKit.WKNavigationDelegate_Extensions.ShouldAllowDeprecatedTls(WebKit.IWKNavigationDelegate,WebKit.WKWebView,Foundation.NSUrlAuthenticationChallenge,System.Action{System.Boolean}) M:WebKit.WKNavigationDelegate_Extensions.ShouldGoToBackForwardListItem(WebKit.IWKNavigationDelegate,WebKit.WKWebView,WebKit.WKBackForwardListItem,System.Boolean,WebKit.WKNavigationDelegateShouldGoToBackForwardListItemCallback) -M:WebKit.WKNavigationDelegate.ShouldGoToBackForwardListItem(WebKit.WKWebView,WebKit.WKBackForwardListItem,System.Boolean,WebKit.WKNavigationDelegateShouldGoToBackForwardListItemCallback) M:WebKit.WKScriptMessage.Dispose(System.Boolean) M:WebKit.WKUIDelegate_Extensions.ContextMenuDidEnd(WebKit.IWKUIDelegate,WebKit.WKWebView,WebKit.WKContextMenuElementInfo) M:WebKit.WKUIDelegate_Extensions.ContextMenuWillPresent(WebKit.IWKUIDelegate,WebKit.WKWebView,WebKit.WKContextMenuElementInfo) @@ -17477,6 +17501,11 @@ P:AppKit.NSAttributedStringDocumentReadingOptions.WebPreferences P:AppKit.NSAttributedStringDocumentReadingOptions.WebResourceLoadDelegate P:AppKit.NSBitmapImageRep.IptcData P:AppKit.NSButtonTouchBarItem.Enabled +P:AppKit.NSCell.AccessibilityActionNames +P:AppKit.NSCell.AccessibilityAttributeNames +P:AppKit.NSCell.AccessibilityIsIgnored +P:AppKit.NSCell.AccessibilityNotifiesWhenDestroyed +P:AppKit.NSCell.AccessibilityParameterizedAttributeNames P:AppKit.NSCell.AnnouncementRequestedNotification P:AppKit.NSCell.ApplicationActivatedNotification P:AppKit.NSCell.ApplicationDeactivatedNotification @@ -17793,6 +17822,11 @@ P:AppKit.NSToolbarItem.UIImage P:AppKit.NSToolbarItem.Visible P:AppKit.NSToolbarItemEventArgs.Item P:AppKit.NSTouchBar.AutomaticCustomizeTouchBarMenuItemEnabled +P:AppKit.NSView.AccessibilityActionNames +P:AppKit.NSView.AccessibilityAttributeNames +P:AppKit.NSView.AccessibilityIsIgnored +P:AppKit.NSView.AccessibilityNotifiesWhenDestroyed +P:AppKit.NSView.AccessibilityParameterizedAttributeNames P:AppKit.NSView.AnnouncementRequestedNotification P:AppKit.NSView.ApplicationActivatedNotification P:AppKit.NSView.ApplicationDeactivatedNotification @@ -20632,7 +20666,6 @@ P:Foundation.NSAttributedStringDocumentAttributes.Title P:Foundation.NSAttributedStringDocumentAttributes.TopMargin P:Foundation.NSBundle.AllBundles P:Foundation.NSBundle.BundleDidLoadNotification -P:Foundation.NSDate.SrAbsoluteTime P:Foundation.NSDate.SystemClockDidChangeNotification P:Foundation.NSDictionary`2.Item(`0) P:Foundation.NSError.CarPlayErrorDomain @@ -20653,8 +20686,6 @@ P:Foundation.NSHttpCookie.KeySameSiteLax P:Foundation.NSHttpCookie.KeySameSitePolicy P:Foundation.NSHttpCookie.KeySameSiteStrict P:Foundation.NSHttpCookie.KeySetByJavaScript -P:Foundation.NSItemProvider.RegisteredContentTypes -P:Foundation.NSItemProvider.RegisteredContentTypesForOpenInPlace P:Foundation.NSMetadataItem.UbiquitousItemDownloadingStatus P:Foundation.NSMorphology.Unspecified P:Foundation.NSMutableArray`1.Item(System.UIntPtr) @@ -20719,7 +20750,6 @@ P:Foundation.NSUrl.VolumeTypeNameKey P:Foundation.NSUrlSessionConfiguration.ProxyConfigurations P:Foundation.NSUrlSessionConfiguration.SessionType P:Foundation.NSUrlSessionConfiguration.StrongConnectionProxyDictionary -P:Foundation.NSUrlSessionConfiguration.UsesClassicLoadingMode P:Foundation.NSUrlSessionHandler.AllowsCellularAccess P:Foundation.NSUrlSessionHandler.AutomaticDecompression P:Foundation.NSUrlSessionHandler.CookieContainer @@ -20737,9 +20767,6 @@ P:Foundation.NSUrlSessionTaskTransactionMetrics.Constrained P:Foundation.NSUrlSessionTaskTransactionMetrics.Expensive P:Foundation.NSUrlSessionTaskTransactionMetrics.Multipath P:Foundation.NSUrlSessionUploadTask.ResumeDataKey -P:Foundation.NSUserActivity.AppClipActivationPayload -P:Foundation.NSUserActivity.TargetContentIdentifier -P:Foundation.NSValue.CMVideoDimensionsValue P:Foundation.NSXpcListener.Delegate P:Foundation.ProxyConfigurationDictionary.HttpEnable P:Foundation.ProxyConfigurationDictionary.HttpProxyHost @@ -21887,11 +21914,14 @@ P:Intents.INIntegerResolutionResult.Unsupported P:Intents.INIntent.DonationMetadata P:Intents.INIntent.IdentifierString P:Intents.INIntent.IntentDescription +P:Intents.INIntent.ShortcutAvailability +P:Intents.INIntent.SuggestedInvocationPhrase P:Intents.INIntentResponse.UserActivity P:Intents.INInteraction.DateInterval P:Intents.INInteraction.Direction P:Intents.INInteraction.GroupIdentifier P:Intents.INInteraction.Identifier +P:Intents.INInteraction.Intent P:Intents.INInteraction.IntentHandlingStatus P:Intents.INInteraction.IntentResponse P:Intents.INLengthResolutionResult.NeedsValue @@ -22421,6 +22451,7 @@ P:Intents.INSetTaskAttributeTemporalEventTriggerResolutionResult.NotRequired P:Intents.INSetTaskAttributeTemporalEventTriggerResolutionResult.Unsupported P:Intents.INShareFocusStatusIntent.FocusStatus P:Intents.INShareFocusStatusIntentResponse.Code +P:Intents.INShortcut.Intent P:Intents.INShortcut.UserActivity P:Intents.INSnoozeTasksIntent.All P:Intents.INSnoozeTasksIntent.NextTriggerTime @@ -24845,12 +24876,29 @@ P:UIKit.UIActivityType.AddToHomeScreen P:UIKit.UIActivityType.CollaborationCopyLink P:UIKit.UIActivityType.CollaborationInviteWithLink P:UIKit.UIActivityType.UIActivityTypeSharePlay +P:UIKit.UIApplication.AccessibilityActivationPoint +P:UIKit.UIApplication.AccessibilityAttributedHint +P:UIKit.UIApplication.AccessibilityAttributedLabel +P:UIKit.UIApplication.AccessibilityAttributedUserInputLabels +P:UIKit.UIApplication.AccessibilityAttributedValue +P:UIKit.UIApplication.AccessibilityDirectTouchOptions +P:UIKit.UIApplication.AccessibilityElementsHidden +P:UIKit.UIApplication.AccessibilityExpandedStatus +P:UIKit.UIApplication.AccessibilityHeaderElements +P:UIKit.UIApplication.AccessibilityLanguage +P:UIKit.UIApplication.AccessibilityNavigationStyle +P:UIKit.UIApplication.AccessibilityPath +P:UIKit.UIApplication.AccessibilityRespondsToUserInteraction +P:UIKit.UIApplication.AccessibilityTextualContext +P:UIKit.UIApplication.AccessibilityUserInputLabels +P:UIKit.UIApplication.AccessibilityViewIsModal P:UIKit.UIApplication.ButtonShapesEnabledStatusDidChangeNotification P:UIKit.UIApplication.LaunchOptionsEventAttributionKey P:UIKit.UIApplication.OnOffSwitchLabelsDidChangeNotification P:UIKit.UIApplication.OpenNotificationSettingsUrl P:UIKit.UIApplication.PrefersCrossFadeTransitionsStatusDidChangeNotification P:UIKit.UIApplication.ShouldDifferentiateWithoutColorDidChangeNotification +P:UIKit.UIApplication.ShouldGroupAccessibilityChildren P:UIKit.UIApplication.SpeechAttributeAnnouncementPriority P:UIKit.UIApplication.SpeechAttributeSpellOut P:UIKit.UIApplication.TextAttributeContext @@ -24865,10 +24913,27 @@ P:UIKit.UIBarButtonItem.Hidden P:UIKit.UIBarButtonItem.Selected P:UIKit.UIBarButtonItem.SymbolAnimationEnabled P:UIKit.UIBarButtonItemGroup.Hidden +P:UIKit.UIBarItem.AccessibilityActivationPoint +P:UIKit.UIBarItem.AccessibilityAttributedHint +P:UIKit.UIBarItem.AccessibilityAttributedLabel +P:UIKit.UIBarItem.AccessibilityAttributedUserInputLabels +P:UIKit.UIBarItem.AccessibilityAttributedValue +P:UIKit.UIBarItem.AccessibilityDirectTouchOptions +P:UIKit.UIBarItem.AccessibilityElementsHidden +P:UIKit.UIBarItem.AccessibilityExpandedStatus +P:UIKit.UIBarItem.AccessibilityHeaderElements +P:UIKit.UIBarItem.AccessibilityLanguage +P:UIKit.UIBarItem.AccessibilityNavigationStyle +P:UIKit.UIBarItem.AccessibilityPath +P:UIKit.UIBarItem.AccessibilityRespondsToUserInteraction +P:UIKit.UIBarItem.AccessibilityTextualContext +P:UIKit.UIBarItem.AccessibilityUserInputLabels +P:UIKit.UIBarItem.AccessibilityViewIsModal P:UIKit.UIBarItem.ButtonShapesEnabledStatusDidChangeNotification P:UIKit.UIBarItem.OnOffSwitchLabelsDidChangeNotification P:UIKit.UIBarItem.PrefersCrossFadeTransitionsStatusDidChangeNotification P:UIKit.UIBarItem.ShouldDifferentiateWithoutColorDidChangeNotification +P:UIKit.UIBarItem.ShouldGroupAccessibilityChildren P:UIKit.UIBarItem.SpeechAttributeAnnouncementPriority P:UIKit.UIBarItem.SpeechAttributeSpellOut P:UIKit.UIBarItem.TextAttributeContext @@ -24935,11 +25000,28 @@ P:UIKit.UIFontWeightConstants.Thin P:UIKit.UIFontWeightConstants.UltraLight P:UIKit.UIGestureRecognizer.ShouldReceiveEvent P:UIKit.UIHoverStyle.Enabled +P:UIKit.UIImage.AccessibilityActivationPoint +P:UIKit.UIImage.AccessibilityAttributedHint +P:UIKit.UIImage.AccessibilityAttributedLabel +P:UIKit.UIImage.AccessibilityAttributedUserInputLabels +P:UIKit.UIImage.AccessibilityAttributedValue +P:UIKit.UIImage.AccessibilityDirectTouchOptions +P:UIKit.UIImage.AccessibilityElementsHidden +P:UIKit.UIImage.AccessibilityExpandedStatus +P:UIKit.UIImage.AccessibilityHeaderElements +P:UIKit.UIImage.AccessibilityLanguage +P:UIKit.UIImage.AccessibilityNavigationStyle +P:UIKit.UIImage.AccessibilityPath +P:UIKit.UIImage.AccessibilityRespondsToUserInteraction +P:UIKit.UIImage.AccessibilityTextualContext +P:UIKit.UIImage.AccessibilityUserInputLabels +P:UIKit.UIImage.AccessibilityViewIsModal P:UIKit.UIImage.ButtonShapesEnabledStatusDidChangeNotification P:UIKit.UIImage.HeicRepresentation P:UIKit.UIImage.OnOffSwitchLabelsDidChangeNotification P:UIKit.UIImage.PrefersCrossFadeTransitionsStatusDidChangeNotification P:UIKit.UIImage.ShouldDifferentiateWithoutColorDidChangeNotification +P:UIKit.UIImage.ShouldGroupAccessibilityChildren P:UIKit.UIImage.SpeechAttributeAnnouncementPriority P:UIKit.UIImage.SpeechAttributeSpellOut P:UIKit.UIImage.SymbolImage @@ -25013,6 +25095,10 @@ P:UIKit.UIPopoverControllerRepositionEventArgs.Rect P:UIKit.UIPopoverControllerRepositionEventArgs.View P:UIKit.UIPopoverPresentationControllerRepositionEventArgs.InView P:UIKit.UIPopoverPresentationControllerRepositionEventArgs.TargetRect +P:UIKit.UIResponder.AccessibilityAssistiveTechnologyFocusedIdentifiers +P:UIKit.UIResponder.AccessibilityCustomActions +P:UIKit.UIResponder.AccessibilityDragSourceDescriptors +P:UIKit.UIResponder.AccessibilityDropPointDescriptors P:UIKit.UIScene.Delegate P:UIKit.UIScene.DidActivateNotification P:UIKit.UIScene.DidDisconnectNotification @@ -25154,10 +25240,27 @@ P:UIKit.UIUpdateInfo.ImmediatePresentationExpected P:UIKit.UIUpdateInfo.LowLatencyEventDispatchConfirmed P:UIKit.UIUpdateInfo.PerformingLowLatencyPhases P:UIKit.UIUpdateLink.Enabled +P:UIKit.UIView.AccessibilityActivationPoint +P:UIKit.UIView.AccessibilityAttributedHint +P:UIKit.UIView.AccessibilityAttributedLabel +P:UIKit.UIView.AccessibilityAttributedUserInputLabels +P:UIKit.UIView.AccessibilityAttributedValue +P:UIKit.UIView.AccessibilityDirectTouchOptions +P:UIKit.UIView.AccessibilityElementsHidden +P:UIKit.UIView.AccessibilityExpandedStatus +P:UIKit.UIView.AccessibilityHeaderElements +P:UIKit.UIView.AccessibilityLanguage +P:UIKit.UIView.AccessibilityNavigationStyle +P:UIKit.UIView.AccessibilityPath +P:UIKit.UIView.AccessibilityRespondsToUserInteraction +P:UIKit.UIView.AccessibilityTextualContext +P:UIKit.UIView.AccessibilityUserInputLabels +P:UIKit.UIView.AccessibilityViewIsModal P:UIKit.UIView.ButtonShapesEnabledStatusDidChangeNotification P:UIKit.UIView.OnOffSwitchLabelsDidChangeNotification P:UIKit.UIView.PrefersCrossFadeTransitionsStatusDidChangeNotification P:UIKit.UIView.ShouldDifferentiateWithoutColorDidChangeNotification +P:UIKit.UIView.ShouldGroupAccessibilityChildren P:UIKit.UIView.SpeechAttributeAnnouncementPriority P:UIKit.UIView.SpeechAttributeSpellOut P:UIKit.UIView.TextAttributeContext From f96fee9bef456f561d5b795c70d74abde7f07fa3 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 29 Apr 2025 10:43:08 +0200 Subject: [PATCH 03/11] Update xtro --- .../MacCatalyst-AVFoundation.todo | 10 ++++++++++ .../api-annotations-dotnet/MacCatalyst-Security.todo | 4 ++++ .../api-annotations-dotnet/iOS-AVFoundation.todo | 10 ++++++++++ .../api-annotations-dotnet/iOS-Security.todo | 4 ++++ .../api-annotations-dotnet/macOS-AVFoundation.todo | 10 ++++++++++ .../api-annotations-dotnet/macOS-Security.todo | 4 ++++ .../api-annotations-dotnet/tvOS-AVFoundation.todo | 10 ++++++++++ .../api-annotations-dotnet/tvOS-Security.todo | 4 ++++ 8 files changed, 56 insertions(+) create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-AVFoundation.todo create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Security.todo create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/iOS-AVFoundation.todo create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/iOS-Security.todo create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/macOS-AVFoundation.todo create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/macOS-Security.todo create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/tvOS-AVFoundation.todo create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/tvOS-Security.todo diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-AVFoundation.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-AVFoundation.todo new file mode 100644 index 000000000000..826ec9f9e253 --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-AVFoundation.todo @@ -0,0 +1,10 @@ +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicate(System.IntPtr,AVFoundation.AVMediaSelectionOption,Foundation.NSPredicateOperatorType)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForAudioSampleRate(System.Double,AVFoundation.AVMediaSelectionOption,Foundation.NSPredicateOperatorType)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForBinauralAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForDownmixAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForImmersiveAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-selector! +AVAssetVariantQualifier::predicateForAudioSampleRate:operatorType: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForBinauralAudio: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForChannelCount:operatorType: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForDownmixAudio: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForImmersiveAudio: not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Security.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Security.todo new file mode 100644 index 000000000000..a6b69b84df8b --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-Security.todo @@ -0,0 +1,4 @@ +!deprecated-attribute-missing! sec_protocol_metadata_get_negotiated_protocol missing a [Deprecated] attribute +!deprecated-attribute-missing! sec_protocol_metadata_get_server_name missing a [Deprecated] attribute +!missing-pinvoke! sec_protocol_metadata_copy_negotiated_protocol is not bound +!missing-pinvoke! sec_protocol_metadata_copy_server_name is not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-AVFoundation.todo b/tests/xtro-sharpie/api-annotations-dotnet/iOS-AVFoundation.todo new file mode 100644 index 000000000000..826ec9f9e253 --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/iOS-AVFoundation.todo @@ -0,0 +1,10 @@ +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicate(System.IntPtr,AVFoundation.AVMediaSelectionOption,Foundation.NSPredicateOperatorType)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForAudioSampleRate(System.Double,AVFoundation.AVMediaSelectionOption,Foundation.NSPredicateOperatorType)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForBinauralAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForDownmixAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForImmersiveAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-selector! +AVAssetVariantQualifier::predicateForAudioSampleRate:operatorType: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForBinauralAudio: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForChannelCount:operatorType: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForDownmixAudio: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForImmersiveAudio: not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-Security.todo b/tests/xtro-sharpie/api-annotations-dotnet/iOS-Security.todo new file mode 100644 index 000000000000..a6b69b84df8b --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/iOS-Security.todo @@ -0,0 +1,4 @@ +!deprecated-attribute-missing! sec_protocol_metadata_get_negotiated_protocol missing a [Deprecated] attribute +!deprecated-attribute-missing! sec_protocol_metadata_get_server_name missing a [Deprecated] attribute +!missing-pinvoke! sec_protocol_metadata_copy_negotiated_protocol is not bound +!missing-pinvoke! sec_protocol_metadata_copy_server_name is not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-AVFoundation.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-AVFoundation.todo new file mode 100644 index 000000000000..826ec9f9e253 --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/macOS-AVFoundation.todo @@ -0,0 +1,10 @@ +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicate(System.IntPtr,AVFoundation.AVMediaSelectionOption,Foundation.NSPredicateOperatorType)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForAudioSampleRate(System.Double,AVFoundation.AVMediaSelectionOption,Foundation.NSPredicateOperatorType)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForBinauralAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForDownmixAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForImmersiveAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-selector! +AVAssetVariantQualifier::predicateForAudioSampleRate:operatorType: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForBinauralAudio: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForChannelCount:operatorType: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForDownmixAudio: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForImmersiveAudio: not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-Security.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-Security.todo new file mode 100644 index 000000000000..a6b69b84df8b --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/macOS-Security.todo @@ -0,0 +1,4 @@ +!deprecated-attribute-missing! sec_protocol_metadata_get_negotiated_protocol missing a [Deprecated] attribute +!deprecated-attribute-missing! sec_protocol_metadata_get_server_name missing a [Deprecated] attribute +!missing-pinvoke! sec_protocol_metadata_copy_negotiated_protocol is not bound +!missing-pinvoke! sec_protocol_metadata_copy_server_name is not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-AVFoundation.todo b/tests/xtro-sharpie/api-annotations-dotnet/tvOS-AVFoundation.todo new file mode 100644 index 000000000000..826ec9f9e253 --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/tvOS-AVFoundation.todo @@ -0,0 +1,10 @@ +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicate(System.IntPtr,AVFoundation.AVMediaSelectionOption,Foundation.NSPredicateOperatorType)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForAudioSampleRate(System.Double,AVFoundation.AVMediaSelectionOption,Foundation.NSPredicateOperatorType)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForBinauralAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForDownmixAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-null-allowed! 'Foundation.NSPredicate AVFoundation.AVAssetVariantQualifier::GetPredicateForImmersiveAudio(System.Boolean,AVFoundation.AVMediaSelectionOption)' is missing an [NullAllowed] on parameter #1 +!missing-selector! +AVAssetVariantQualifier::predicateForAudioSampleRate:operatorType: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForBinauralAudio: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForChannelCount:operatorType: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForDownmixAudio: not bound +!missing-selector! +AVAssetVariantQualifier::predicateForImmersiveAudio: not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Security.todo b/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Security.todo new file mode 100644 index 000000000000..a6b69b84df8b --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/tvOS-Security.todo @@ -0,0 +1,4 @@ +!deprecated-attribute-missing! sec_protocol_metadata_get_negotiated_protocol missing a [Deprecated] attribute +!deprecated-attribute-missing! sec_protocol_metadata_get_server_name missing a [Deprecated] attribute +!missing-pinvoke! sec_protocol_metadata_copy_negotiated_protocol is not bound +!missing-pinvoke! sec_protocol_metadata_copy_server_name is not bound From 4d5425395753f09ab8d8abf58b070deaf94a2e4d Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 5 May 2025 09:45:22 +0200 Subject: [PATCH 04/11] [tests] Improve NWBrowserTest a little bit. * Remove !NET code. * Use '0' as the port to get assigned an available port (avoids problems where the port is already in use). * A few more asserts. --- tests/monotouch-test/Network/NWBrowserTest.cs | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/tests/monotouch-test/Network/NWBrowserTest.cs b/tests/monotouch-test/Network/NWBrowserTest.cs index 92c70c11b874..1c29f02c13dd 100644 --- a/tests/monotouch-test/Network/NWBrowserTest.cs +++ b/tests/monotouch-test/Network/NWBrowserTest.cs @@ -87,6 +87,7 @@ public void TestStateChangesHandler () bool listeningDone = false; Exception ex = null; NWError? errorState = null; + NWBrowserState state = NWBrowserState.Invalid; var changesEvent = new AutoResetEvent (false); var browserReady = new AutoResetEvent (false); var finalEvent = new AutoResetEvent (false); @@ -95,14 +96,11 @@ public void TestStateChangesHandler () browser.SetStateChangesHandler ((st, er) => { // assert here with a `st` of `Fail` errorState ??= er; - if (st == NWBrowserState.Ready) + state = st; + if (st == NWBrowserState.Ready || st == NWBrowserState.Failed) browserReady.Set (); }); -#if NET browser.IndividualChangesDelegate = (oldResult, newResult) => { -#else - browser.SetChangesHandler ((oldResult, newResult) => { -#endif didRun = true; try { receivedNotNullChange = oldResult is not null || newResult is not null; @@ -112,26 +110,20 @@ public void TestStateChangesHandler () changesEvent.Set (); eventsDone = true; } -#if NET }; -#else - }); -#endif browser.Start (); - browserReady.WaitOne (30000); + Assert.That (browserReady.WaitOne (30000), Is.True, "Browser ready"); + Assert.IsNull (errorState, "Ready Error"); + Assert.That (state, Is.EqualTo (NWBrowserState.Ready), "NWBrowserState"); + using (var advertiser = NWAdvertiseDescriptor.CreateBonjourService ("MonoTouchFixtures.Network", type)) -#if NET using (var tcpOptions = new NWProtocolTcpOptions ()) using (var tlsOptions = new NWProtocolTlsOptions ()) -#else - using (var tcpOptions = NWProtocolOptions.CreateTcp ()) - using (var tlsOptions = NWProtocolOptions.CreateTls ()) -#endif using (var paramenters = NWParameters.CreateTcp ()) { paramenters.ProtocolStack.PrependApplicationProtocol (tlsOptions); paramenters.ProtocolStack.PrependApplicationProtocol (tcpOptions); paramenters.IncludePeerToPeer = true; - using (var listener = NWListener.Create ("1234", paramenters)) { + using (var listener = NWListener.Create ("0", paramenters)) { listener.SetQueue (DispatchQueue.CurrentQueue); listener.SetAdvertiseDescriptor (advertiser); // we need the connection handler, else we will get an exception @@ -152,6 +144,7 @@ public void TestStateChangesHandler () }, () => eventsDone); finalEvent.WaitOne (30000); + Assert.IsNull (errorState?.CFError, "Error.CFError"); Assert.IsNull (errorState, "Error"); Assert.IsTrue (eventsDone, "eventDone"); Assert.IsTrue (listeningDone, "listeningDone"); From cb009dc1bab3efd7fc5c541f2e857d033a8add56 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 5 May 2025 09:50:06 +0200 Subject: [PATCH 05/11] [tests] Change a couple of VideoToolbox tests to bit to see if it makes them work on the bots. --- .../VideoToolbox/VTFrameRateConversionConfigurationTest.cs | 4 ++-- .../VideoToolbox/VTMotionBlurConfigurationTest.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/monotouch-test/VideoToolbox/VTFrameRateConversionConfigurationTest.cs b/tests/monotouch-test/VideoToolbox/VTFrameRateConversionConfigurationTest.cs index 41aa6632f0f5..d221d5e4d2dc 100644 --- a/tests/monotouch-test/VideoToolbox/VTFrameRateConversionConfigurationTest.cs +++ b/tests/monotouch-test/VideoToolbox/VTFrameRateConversionConfigurationTest.cs @@ -29,10 +29,10 @@ public void Properties () TestRuntime.AssertXcodeVersion (16, 3); Assert.Multiple (() => { - using var obj = new VTFrameRateConversionConfiguration (320, 320, true, VTFrameRateConversionConfigurationQualityPrioritization.Normal, VTFrameRateConversionConfigurationRevision.Revision1); + using var obj = new VTFrameRateConversionConfiguration (320, 320, false, VTFrameRateConversionConfigurationQualityPrioritization.Normal, VTFrameRateConversionConfigurationRevision.Revision1); Assert.That (obj.FrameWidth, Is.EqualTo ((nint) 320), "FrameWidth"); Assert.That (obj.FrameHeight, Is.EqualTo ((nint) 320), "FrameHeight"); - Assert.That (obj.UsePrecomputedFlow, Is.EqualTo (true), "UsePrecomputedFlow"); + Assert.That (obj.UsePrecomputedFlow, Is.EqualTo (false), "UsePrecomputedFlow"); Assert.That (obj.QualityPrioritization, Is.EqualTo (VTFrameRateConversionConfigurationQualityPrioritization.Normal), "QualityPrioritization"); Assert.That (obj.Revision, Is.EqualTo (VTFrameRateConversionConfigurationRevision.Revision1), "Revision"); Assert.That (obj.FrameSupportedPixelFormats, Is.Not.Null, "FrameSupportedPixelFormats"); diff --git a/tests/monotouch-test/VideoToolbox/VTMotionBlurConfigurationTest.cs b/tests/monotouch-test/VideoToolbox/VTMotionBlurConfigurationTest.cs index 775312a0e23b..2c48c26f8c01 100644 --- a/tests/monotouch-test/VideoToolbox/VTMotionBlurConfigurationTest.cs +++ b/tests/monotouch-test/VideoToolbox/VTMotionBlurConfigurationTest.cs @@ -28,10 +28,10 @@ public void Properties () TestRuntime.AssertXcodeVersion (16, 3); Assert.Multiple (() => { - using var obj = new VTMotionBlurConfiguration (320, 320, true, VTMotionBlurConfigurationQualityPrioritization.Normal, VTMotionBlurConfigurationRevision.Revision1); + using var obj = new VTMotionBlurConfiguration (320, 320, false, VTMotionBlurConfigurationQualityPrioritization.Normal, VTMotionBlurConfigurationRevision.Revision1); Assert.That (obj.FrameWidth, Is.EqualTo ((nint) 320), "FrameWidth"); Assert.That (obj.FrameHeight, Is.EqualTo ((nint) 320), "FrameHeight"); - Assert.That (obj.UsePrecomputedFlow, Is.EqualTo (true), "UsePrecomputedFlow"); + Assert.That (obj.UsePrecomputedFlow, Is.EqualTo (false), "UsePrecomputedFlow"); Assert.That (obj.QualityPrioritization, Is.EqualTo (VTMotionBlurConfigurationQualityPrioritization.Normal), "QualityPrioritization"); Assert.That (obj.Revision, Is.EqualTo (VTMotionBlurConfigurationRevision.Revision1), "Revision"); TestRuntime.NSLog ($"FrameSupportedPixelFormats: {obj.FrameSupportedPixelFormats}"); From 921b9519ac00cd399e28dffd770db40ea5de0257 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 5 May 2025 15:09:44 +0200 Subject: [PATCH 06/11] [tests] Restrict a few VideoToolbox tests to arm64. They don't work on x64. --- tests/common/TestRuntime.cs | 6 ++++++ .../VideoToolbox/VTFrameRateConversionConfigurationTest.cs | 1 + .../VideoToolbox/VTMotionBlurConfigurationTest.cs | 1 + .../VideoToolbox/VTOpticalFlowConfigurationTest.cs | 1 + 4 files changed, 9 insertions(+) diff --git a/tests/common/TestRuntime.cs b/tests/common/TestRuntime.cs index 9bcb431058c7..4a28bac9458a 100644 --- a/tests/common/TestRuntime.cs +++ b/tests/common/TestRuntime.cs @@ -301,6 +301,12 @@ public static void AssertIfSimulatorThenARM64 () #endif } + public static void AssertOnlyARM64 () + { + if (!IsARM64) + NUnit.Framework.Assert.Ignore ("This test only runs on ARM64 simulators."); + } + public static void AssertNotSimulator (string message = "This test does not work in the simulator.") { if (IsSimulator) diff --git a/tests/monotouch-test/VideoToolbox/VTFrameRateConversionConfigurationTest.cs b/tests/monotouch-test/VideoToolbox/VTFrameRateConversionConfigurationTest.cs index d221d5e4d2dc..0f0e9f53ed0c 100644 --- a/tests/monotouch-test/VideoToolbox/VTFrameRateConversionConfigurationTest.cs +++ b/tests/monotouch-test/VideoToolbox/VTFrameRateConversionConfigurationTest.cs @@ -27,6 +27,7 @@ public class VTFrameRateConversionConfigurationTest { public void Properties () { TestRuntime.AssertXcodeVersion (16, 3); + TestRuntime.AssertOnlyARM64 (); // "Fail to create effect configuration" is printed to the terminal Assert.Multiple (() => { using var obj = new VTFrameRateConversionConfiguration (320, 320, false, VTFrameRateConversionConfigurationQualityPrioritization.Normal, VTFrameRateConversionConfigurationRevision.Revision1); diff --git a/tests/monotouch-test/VideoToolbox/VTMotionBlurConfigurationTest.cs b/tests/monotouch-test/VideoToolbox/VTMotionBlurConfigurationTest.cs index 2c48c26f8c01..8d204bc70717 100644 --- a/tests/monotouch-test/VideoToolbox/VTMotionBlurConfigurationTest.cs +++ b/tests/monotouch-test/VideoToolbox/VTMotionBlurConfigurationTest.cs @@ -26,6 +26,7 @@ public class VTMotionBlurConfigurationTEst { public void Properties () { TestRuntime.AssertXcodeVersion (16, 3); + TestRuntime.AssertOnlyARM64 (); // "Fail to create effect configuration" is printed to the terminal Assert.Multiple (() => { using var obj = new VTMotionBlurConfiguration (320, 320, false, VTMotionBlurConfigurationQualityPrioritization.Normal, VTMotionBlurConfigurationRevision.Revision1); diff --git a/tests/monotouch-test/VideoToolbox/VTOpticalFlowConfigurationTest.cs b/tests/monotouch-test/VideoToolbox/VTOpticalFlowConfigurationTest.cs index c3d85545d413..353a749e4a6e 100644 --- a/tests/monotouch-test/VideoToolbox/VTOpticalFlowConfigurationTest.cs +++ b/tests/monotouch-test/VideoToolbox/VTOpticalFlowConfigurationTest.cs @@ -26,6 +26,7 @@ public class VTOpticalFlowConfigurationTest { public void Properties () { TestRuntime.AssertXcodeVersion (16, 3); + TestRuntime.AssertOnlyARM64 (); // "Fail to create effect configuration" is printed to the terminal Assert.Multiple (() => { using var obj = new VTOpticalFlowConfiguration (320, 320, VTOpticalFlowConfigurationQualityPrioritization.Normal, VTOpticalFlowConfigurationRevision.Revision1); From 89870666a94f0f0c91172ae7e096b6ea09c31440 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 5 May 2025 15:45:42 +0200 Subject: [PATCH 07/11] [tests] Add some debug logging to NWBrowserTest. --- tests/monotouch-test/Network/NWBrowserTest.cs | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/tests/monotouch-test/Network/NWBrowserTest.cs b/tests/monotouch-test/Network/NWBrowserTest.cs index 1c29f02c13dd..40fa8a623106 100644 --- a/tests/monotouch-test/Network/NWBrowserTest.cs +++ b/tests/monotouch-test/Network/NWBrowserTest.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading; using CoreFoundation; @@ -91,16 +92,22 @@ public void TestStateChangesHandler () var changesEvent = new AutoResetEvent (false); var browserReady = new AutoResetEvent (false); var finalEvent = new AutoResetEvent (false); - TestRuntime.RunAsync (TimeSpan.FromSeconds (30), () => { + var log = new List (); + var finishedBeforeTimeout = TestRuntime.RunAsync (TimeSpan.FromSeconds (30), () => { // start the browser, before the listener + log.Add ($"Starting browser..."); browser.SetStateChangesHandler ((st, er) => { // assert here with a `st` of `Fail` + lock (log) + log.Add ($"browser.SetStateChangedHandler ({st}, {er})"); errorState ??= er; state = st; if (st == NWBrowserState.Ready || st == NWBrowserState.Failed) browserReady.Set (); }); browser.IndividualChangesDelegate = (oldResult, newResult) => { + lock (log) + log.Add ($"browser.IndividualChangesDelegate ({oldResult}, {newResult})"); didRun = true; try { receivedNotNullChange = oldResult is not null || newResult is not null; @@ -127,8 +134,13 @@ public void TestStateChangesHandler () listener.SetQueue (DispatchQueue.CurrentQueue); listener.SetAdvertiseDescriptor (advertiser); // we need the connection handler, else we will get an exception - listener.SetNewConnectionHandler ((c) => { }); + listener.SetNewConnectionHandler ((c) => { + lock (log) + log.Add ($"listener.SetNewConnectionHandler ()"); + }); listener.SetStateChangedHandler ((s, e) => { + lock (log) + log.Add ($"listener.SetStateChangedHandler ({s}, {e})"); if (e is not null) { Console.WriteLine ($"Got error {e.ErrorCode} {e.ErrorDomain} '{e.CFError.FailureReason}' {e.ToString ()}"); } @@ -143,15 +155,18 @@ public void TestStateChangesHandler () }, () => eventsDone); - finalEvent.WaitOne (30000); - Assert.IsNull (errorState?.CFError, "Error.CFError"); - Assert.IsNull (errorState, "Error"); - Assert.IsTrue (eventsDone, "eventDone"); - Assert.IsTrue (listeningDone, "listeningDone"); - Assert.IsNull (ex, "Exception"); - Assert.IsTrue (didRun, "didRan"); - Assert.IsTrue (receivedNotNullChange, "receivedNotNullChange"); + var l = $"\n\t{string.Join ("\n\t", log)}"; + Assert.That (finishedBeforeTimeout, Is.True, $"RunAsync timeout{l}"); + Assert.That (finalEvent.WaitOne (30000), Is.True, $"Final event{l}"); + Assert.IsNull (errorState?.CFError, $"Error.CFError{l}"); + Assert.IsNull (errorState, $"Error{l}"); + Assert.IsTrue (eventsDone, $"eventDone{l}"); + Assert.IsTrue (listeningDone, $"listeningDone{l}"); + Assert.IsNull (ex, $"Exception{l}"); + Assert.IsTrue (didRun, $"didRan{l}"); + Assert.IsTrue (receivedNotNullChange, $"receivedNotNullChange{l}"); browser.Cancel (); + Console.WriteLine (l); } } } From d7bf7297561d207f5a82fb79d8ae722e008c3d9b Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 6 May 2025 07:49:14 +0200 Subject: [PATCH 08/11] [tests] Add more debug code. --- tests/monotouch-test/Network/NWBrowserTest.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/monotouch-test/Network/NWBrowserTest.cs b/tests/monotouch-test/Network/NWBrowserTest.cs index 40fa8a623106..a6edebf5d914 100644 --- a/tests/monotouch-test/Network/NWBrowserTest.cs +++ b/tests/monotouch-test/Network/NWBrowserTest.cs @@ -72,6 +72,7 @@ public void TestStartNoQ () [Test] public void TestStateChangesHandler () { + Func dt = () => DateTime.Now.ToString ("yyyy-MM-dd HH:mm:ss.fffffff"); // In the test we are doing the following: // // 1. Start a browser. At this point, we have no listeners (unless someone is exposing it in the lab) @@ -93,13 +94,14 @@ public void TestStateChangesHandler () var browserReady = new AutoResetEvent (false); var finalEvent = new AutoResetEvent (false); var log = new List (); + log.Add ($"{dt ()} Starting async..."); var finishedBeforeTimeout = TestRuntime.RunAsync (TimeSpan.FromSeconds (30), () => { // start the browser, before the listener - log.Add ($"Starting browser..."); + log.Add ($"{dt ()} Starting browser..."); browser.SetStateChangesHandler ((st, er) => { // assert here with a `st` of `Fail` lock (log) - log.Add ($"browser.SetStateChangedHandler ({st}, {er})"); + log.Add ($"{dt ()} browser.SetStateChangedHandler ({st}, {er} => {er?.CFError})"); errorState ??= er; state = st; if (st == NWBrowserState.Ready || st == NWBrowserState.Failed) @@ -107,7 +109,7 @@ public void TestStateChangesHandler () }); browser.IndividualChangesDelegate = (oldResult, newResult) => { lock (log) - log.Add ($"browser.IndividualChangesDelegate ({oldResult}, {newResult})"); + log.Add ($"{dt ()} browser.IndividualChangesDelegate ({oldResult}, {newResult})"); didRun = true; try { receivedNotNullChange = oldResult is not null || newResult is not null; @@ -136,11 +138,11 @@ public void TestStateChangesHandler () // we need the connection handler, else we will get an exception listener.SetNewConnectionHandler ((c) => { lock (log) - log.Add ($"listener.SetNewConnectionHandler ()"); + log.Add ($"{dt ()} listener.SetNewConnectionHandler ()"); }); listener.SetStateChangedHandler ((s, e) => { lock (log) - log.Add ($"listener.SetStateChangedHandler ({s}, {e})"); + log.Add ($"{dt ()} listener.SetStateChangedHandler ({s}, {e})"); if (e is not null) { Console.WriteLine ($"Got error {e.ErrorCode} {e.ErrorDomain} '{e.CFError.FailureReason}' {e.ToString ()}"); } @@ -154,6 +156,7 @@ public void TestStateChangesHandler () } }, () => eventsDone); + log.Add ($"{dt ()} Async done..."); var l = $"\n\t{string.Join ("\n\t", log)}"; Assert.That (finishedBeforeTimeout, Is.True, $"RunAsync timeout{l}"); @@ -165,7 +168,9 @@ public void TestStateChangesHandler () Assert.IsNull (ex, $"Exception{l}"); Assert.IsTrue (didRun, $"didRan{l}"); Assert.IsTrue (receivedNotNullChange, $"receivedNotNullChange{l}"); + log.Add ($"{dt ()} about to cancel..."); browser.Cancel (); + log.Add ($"{dt ()} cancelled..."); Console.WriteLine (l); } } From 39dc2575c7f63c8feaffabb1e1a918d08786b732 Mon Sep 17 00:00:00 2001 From: GitHub Actions Autoformatter Date: Tue, 6 May 2025 05:59:30 +0000 Subject: [PATCH 09/11] Auto-format source code --- tests/monotouch-test/Network/NWBrowserTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/monotouch-test/Network/NWBrowserTest.cs b/tests/monotouch-test/Network/NWBrowserTest.cs index a6edebf5d914..2a43f004ad9c 100644 --- a/tests/monotouch-test/Network/NWBrowserTest.cs +++ b/tests/monotouch-test/Network/NWBrowserTest.cs @@ -94,7 +94,7 @@ public void TestStateChangesHandler () var browserReady = new AutoResetEvent (false); var finalEvent = new AutoResetEvent (false); var log = new List (); - log.Add ($"{dt ()} Starting async..."); + log.Add ($"{dt ()} Starting async..."); var finishedBeforeTimeout = TestRuntime.RunAsync (TimeSpan.FromSeconds (30), () => { // start the browser, before the listener log.Add ($"{dt ()} Starting browser..."); From ee3a6b45f382e4407fbd411a8dc95ac64d3133bf Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 6 May 2025 11:33:09 +0200 Subject: [PATCH 10/11] [tests] Detect local network access. --- tests/monotouch-test/Network/NWBrowserTest.cs | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/tests/monotouch-test/Network/NWBrowserTest.cs b/tests/monotouch-test/Network/NWBrowserTest.cs index 2a43f004ad9c..2b7b13c70d84 100644 --- a/tests/monotouch-test/Network/NWBrowserTest.cs +++ b/tests/monotouch-test/Network/NWBrowserTest.cs @@ -94,10 +94,13 @@ public void TestStateChangesHandler () var browserReady = new AutoResetEvent (false); var finalEvent = new AutoResetEvent (false); var log = new List (); - log.Add ($"{dt ()} Starting async..."); + + lock (log) + log.Add ($"{dt ()} Starting async..."); var finishedBeforeTimeout = TestRuntime.RunAsync (TimeSpan.FromSeconds (30), () => { // start the browser, before the listener - log.Add ($"{dt ()} Starting browser..."); + lock (log) + log.Add ($"{dt ()} Starting browser..."); browser.SetStateChangesHandler ((st, er) => { // assert here with a `st` of `Fail` lock (log) @@ -106,6 +109,8 @@ public void TestStateChangesHandler () state = st; if (st == NWBrowserState.Ready || st == NWBrowserState.Failed) browserReady.Set (); + else if (er is not null) + browserReady.Set (); }); browser.IndividualChangesDelegate = (oldResult, newResult) => { lock (log) @@ -122,6 +127,13 @@ public void TestStateChangesHandler () }; browser.Start (); Assert.That (browserReady.WaitOne (30000), Is.True, "Browser ready"); + + if (errorState?.CFError?.Code == -65570/* kDNSServiceErr_PolicyDenied */ ) { + // https://developer.apple.com/forums/thread/663852 + // "If you’re using Bonjour, you will get the kDNSServiceErr_PolicyDenied (-65570) error if your Bonjour operation failed because you don’t have local network access." + Assert.Ignore ("This test requires access to the local network, and this has not been granted."); + } + Assert.IsNull (errorState, "Ready Error"); Assert.That (state, Is.EqualTo (NWBrowserState.Ready), "NWBrowserState"); @@ -156,7 +168,8 @@ public void TestStateChangesHandler () } }, () => eventsDone); - log.Add ($"{dt ()} Async done..."); + lock (log) + log.Add ($"{dt ()} Async done..."); var l = $"\n\t{string.Join ("\n\t", log)}"; Assert.That (finishedBeforeTimeout, Is.True, $"RunAsync timeout{l}"); @@ -168,9 +181,12 @@ public void TestStateChangesHandler () Assert.IsNull (ex, $"Exception{l}"); Assert.IsTrue (didRun, $"didRan{l}"); Assert.IsTrue (receivedNotNullChange, $"receivedNotNullChange{l}"); - log.Add ($"{dt ()} about to cancel..."); + lock (log) + log.Add ($"{dt ()} about to cancel..."); browser.Cancel (); - log.Add ($"{dt ()} cancelled..."); + lock (log) + log.Add ($"{dt ()} cancelled..."); + l = $"\n\t{string.Join ("\n\t", log)}"; Console.WriteLine (l); } } From 30b839007605a9b35fd16e90b16d5823484dbb6b Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 6 May 2025 16:29:41 +0200 Subject: [PATCH 11/11] [tests] Fix stuff. --- tests/monotouch-test/Network/NWBrowserTest.cs | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/tests/monotouch-test/Network/NWBrowserTest.cs b/tests/monotouch-test/Network/NWBrowserTest.cs index 2b7b13c70d84..721916945d3d 100644 --- a/tests/monotouch-test/Network/NWBrowserTest.cs +++ b/tests/monotouch-test/Network/NWBrowserTest.cs @@ -85,12 +85,11 @@ public void TestStateChangesHandler () // The test will block until the different events are set by the callbacks that are executed in a diff thread. bool didRun = false; bool receivedNotNullChange = false; - bool eventsDone = false; bool listeningDone = false; Exception ex = null; - NWError? errorState = null; + NWError? browserErrorState = null; NWBrowserState state = NWBrowserState.Invalid; - var changesEvent = new AutoResetEvent (false); + var changesEvent = new ManualResetEventSlim (false, 0); var browserReady = new AutoResetEvent (false); var finalEvent = new AutoResetEvent (false); var log = new List (); @@ -102,15 +101,19 @@ public void TestStateChangesHandler () lock (log) log.Add ($"{dt ()} Starting browser..."); browser.SetStateChangesHandler ((st, er) => { - // assert here with a `st` of `Fail` lock (log) log.Add ($"{dt ()} browser.SetStateChangedHandler ({st}, {er} => {er?.CFError})"); - errorState ??= er; + + browserErrorState ??= er; state = st; - if (st == NWBrowserState.Ready || st == NWBrowserState.Failed) - browserReady.Set (); - else if (er is not null) - browserReady.Set (); + browserReady.Set (); + + if (er is not null) { + // we can get errors after reaching the NWBrowserState.Ready state, + // and in that case we may not get any other callbacks, so signal + // completion so that the test doesn't hang. + changesEvent.Set (); + } }); browser.IndividualChangesDelegate = (oldResult, newResult) => { lock (log) @@ -122,21 +125,11 @@ public void TestStateChangesHandler () ex = e; } finally { changesEvent.Set (); - eventsDone = true; } }; browser.Start (); Assert.That (browserReady.WaitOne (30000), Is.True, "Browser ready"); - if (errorState?.CFError?.Code == -65570/* kDNSServiceErr_PolicyDenied */ ) { - // https://developer.apple.com/forums/thread/663852 - // "If you’re using Bonjour, you will get the kDNSServiceErr_PolicyDenied (-65570) error if your Bonjour operation failed because you don’t have local network access." - Assert.Ignore ("This test requires access to the local network, and this has not been granted."); - } - - Assert.IsNull (errorState, "Ready Error"); - Assert.That (state, Is.EqualTo (NWBrowserState.Ready), "NWBrowserState"); - using (var advertiser = NWAdvertiseDescriptor.CreateBonjourService ("MonoTouchFixtures.Network", type)) using (var tcpOptions = new NWProtocolTcpOptions ()) using (var tlsOptions = new NWProtocolTlsOptions ()) @@ -160,23 +153,31 @@ public void TestStateChangesHandler () } }); listener.Start (); - changesEvent.WaitOne (30000); + Assert.IsTrue (changesEvent.Wait (30000), "changesEvent.Wait ()"); listener.Cancel (); listeningDone = true; finalEvent.Set (); } } - }, () => eventsDone); + }, () => changesEvent.IsSet); lock (log) log.Add ($"{dt ()} Async done..."); + if (browserErrorState?.CFError?.Code == -65570/* kDNSServiceErr_PolicyDenied */ ) { + // https://developer.apple.com/forums/thread/663852 + // "If you’re using Bonjour, you will get the kDNSServiceErr_PolicyDenied (-65570) error if your Bonjour operation failed because you don’t have local network access." + Assert.Ignore ("This test requires access to the local network, and this has not been granted."); + } + + Assert.IsNull (browserErrorState, "Ready Error"); + Assert.That (state, Is.EqualTo (NWBrowserState.Ready), "NWBrowserState"); + var l = $"\n\t{string.Join ("\n\t", log)}"; Assert.That (finishedBeforeTimeout, Is.True, $"RunAsync timeout{l}"); Assert.That (finalEvent.WaitOne (30000), Is.True, $"Final event{l}"); - Assert.IsNull (errorState?.CFError, $"Error.CFError{l}"); - Assert.IsNull (errorState, $"Error{l}"); - Assert.IsTrue (eventsDone, $"eventDone{l}"); + Assert.IsNull (browserErrorState?.CFError, $"Error.CFError{l}"); + Assert.IsNull (browserErrorState, $"Error{l}"); Assert.IsTrue (listeningDone, $"listeningDone{l}"); Assert.IsNull (ex, $"Exception{l}"); Assert.IsTrue (didRun, $"didRan{l}");