From 64ad87e21863e6c4a59f51e6ac8f63898e42b933 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 12 Mar 2025 08:14:50 +0100 Subject: [PATCH 1/2] [FileProvider] Implement up to Xcode 16.3 beta 2. --- src/fileprovider.cs | 30 +++++++++++++++++++ .../Documentation.KnownFailures.txt | 8 ++++- .../MacCatalyst-FileProvider.ignore | 2 ++ .../MacCatalyst-FileProvider.todo | 1 - .../macOS-FileProvider.todo | 3 -- 5 files changed, 39 insertions(+), 5 deletions(-) delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-FileProvider.todo delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/macOS-FileProvider.todo diff --git a/src/fileprovider.cs b/src/fileprovider.cs index dcaaeb19e0bf..d465804822db 100644 --- a/src/fileprovider.cs +++ b/src/fileprovider.cs @@ -812,10 +812,27 @@ interface NSFileProviderManager { [NoTV, NoMacCatalyst, NoiOS, Mac (13, 0)] [Export ("requestDownloadForItemWithIdentifier:requestedRange:completionHandler:")] void RequestDownload (string itemIdentifier, NSRange rangeToMaterialize, Action completionHandler); + + // From NSFileProviderManager (ExternalDomain) Category + [NoTV, NoiOS, NoMacCatalyst, Mac (15, 0)] + [Export ("checkDomainsCanBeStored:onVolumeAtURL:unsupportedReason:error:")] + [Static] + bool CheckDomainsCanBeStored (out bool eligible, NSUrl volumeAtUrl, out NSFileProviderVolumeUnsupportedReason unsupportedReason, [NullAllowed] out NSError error); } interface INSFileProviderPendingSetEnumerator { } + [Category] + [BaseType (typeof (NSFileProviderManager))] + [NoTV, NoMacCatalyst, NoiOS, Mac (15, 4)] + interface NSFileProviderManager_Diagnostics + { + [Export ("requestDiagnosticCollectionForItemWithIdentifier:errorReason:completionHandler:")] + void RequestDiagnosticCollection (string itemIdentifier, NSError errorReason, NSFileProviderManagerRequestDiagnosticCollectionCallback completionHandler); + } + + delegate void NSFileProviderManagerRequestDiagnosticCollectionCallback ([NullAllowed] NSError error); + [NoMacCatalyst] [NoTV, iOS (16, 0)] [Protocol] @@ -1474,11 +1491,24 @@ public enum NSFileProviderVolumeUnsupportedReason : ulong { Quarantined = 1 << 5, } +#if !XAMCORE_5_0 [NoTV, NoiOS, NoMacCatalyst, Mac (15, 0)] [Category] [BaseType (typeof (NSFileProviderManager))] interface NSFileProviderManager_ExternalDomain { + [Obsolete ("Call 'NSFileProviderManager.CheckDomainsCanBeStored' instead.")] [Export ("checkDomainsCanBeStored:onVolumeAtURL:unsupportedReason:error:")] unsafe bool CheckDomainsCanBeStored (out bool eligible, NSUrl volumeAtUrl, NSFileProviderVolumeUnsupportedReason* unsupportedReason, [NullAllowed] out NSError error); } +#endif + + [NoTV, NoMacCatalyst, NoiOS, Mac (15, 0)] + [Protocol (BackwardsCompatibleCodeGeneration = false)] + interface NSFileProviderExternalVolumeHandling { + [Abstract] + [Export ("shouldConnectExternalDomainWithCompletionHandler:")] + void ShouldConnectExternalDomain (NSFileProviderExternalVolumeHandlingShouldConnectExternalDomainCallback completionHandler); + } + + delegate void NSFileProviderExternalVolumeHandlingShouldConnectExternalDomainCallback ([NullAllowed] NSError connectionError); } diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index 8c2df80fd53d..7d8eb9c55a34 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -28808,6 +28808,7 @@ M:FileProvider.INSFileProviderEnumerator.CurrentSyncAnchor(System.Action{Foundat M:FileProvider.INSFileProviderEnumerator.EnumerateChanges(FileProvider.INSFileProviderChangeObserver,Foundation.NSData) M:FileProvider.INSFileProviderEnumerator.EnumerateItems(FileProvider.INSFileProviderEnumerationObserver,Foundation.NSData) M:FileProvider.INSFileProviderEnumerator.Invalidate +M:FileProvider.INSFileProviderExternalVolumeHandling.ShouldConnectExternalDomain(FileProvider.NSFileProviderExternalVolumeHandlingShouldConnectExternalDomainCallback) M:FileProvider.INSFileProviderIncrementalContentFetching.FetchContents(System.String,FileProvider.NSFileProviderItemVersion,Foundation.NSUrl,FileProvider.NSFileProviderItemVersion,FileProvider.NSFileProviderRequest,FileProvider.NSFileProviderFetchContentsCompletionHandler) M:FileProvider.INSFileProviderItem.GetCapabilities M:FileProvider.INSFileProviderItem.GetChildItemCount @@ -28935,12 +28936,13 @@ M:FileProvider.NSFileProviderItem_Extensions.IsUploading(FileProvider.INSFilePro M:FileProvider.NSFileProviderItemVersion.#ctor(Foundation.NSData,Foundation.NSData) M:FileProvider.NSFileProviderKnownFolderLocation.#ctor(System.String,System.String) M:FileProvider.NSFileProviderKnownFolderLocation.#ctor(System.String) -M:FileProvider.NSFileProviderManager_ExternalDomain.CheckDomainsCanBeStored(FileProvider.NSFileProviderManager,System.Boolean@,Foundation.NSUrl,FileProvider.NSFileProviderVolumeUnsupportedReason*,Foundation.NSError@) +M:FileProvider.NSFileProviderManager_Diagnostics.RequestDiagnosticCollection(FileProvider.NSFileProviderManager,System.String,Foundation.NSError,FileProvider.NSFileProviderManagerRequestDiagnosticCollectionCallback) M:FileProvider.NSFileProviderManager_KnownFolders.ClaimKnownFolders(FileProvider.NSFileProviderManager,FileProvider.NSFileProviderKnownFolderLocations,System.String,FileProvider.NSFileProviderManagerKnownFoldersCallback) M:FileProvider.NSFileProviderManager_KnownFolders.ReleaseKnownFolders(FileProvider.NSFileProviderManager,FileProvider.NSFileProviderKnownFolderLocations,System.String,FileProvider.NSFileProviderManagerKnownFoldersCallback) M:FileProvider.NSFileProviderManager_StateDirectory.GetStateDirectoryUrl(FileProvider.NSFileProviderManager,Foundation.NSError@) M:FileProvider.NSFileProviderManager.AddDomain(FileProvider.NSFileProviderDomain,System.Action{Foundation.NSError}) M:FileProvider.NSFileProviderManager.AddDomainAsync(FileProvider.NSFileProviderDomain) +M:FileProvider.NSFileProviderManager.CheckDomainsCanBeStored(System.Boolean@,Foundation.NSUrl,FileProvider.NSFileProviderVolumeUnsupportedReason@,Foundation.NSError@) M:FileProvider.NSFileProviderManager.Disconnect(System.String,FileProvider.NSFileProviderManagerDisconnectionOptions,System.Action{Foundation.NSError}) M:FileProvider.NSFileProviderManager.DisconnectAsync(System.String,FileProvider.NSFileProviderManagerDisconnectionOptions) M:FileProvider.NSFileProviderManager.EvictItem(Foundation.NSString,System.Action{Foundation.NSError}) @@ -66904,6 +66906,7 @@ T:FileProvider.INSFileProviderCustomAction T:FileProvider.INSFileProviderDomainState T:FileProvider.INSFileProviderEnumerating T:FileProvider.INSFileProviderEnumerationObserver +T:FileProvider.INSFileProviderExternalVolumeHandling T:FileProvider.INSFileProviderIncrementalContentFetching T:FileProvider.INSFileProviderItem T:FileProvider.INSFileProviderKnownFolderSupporting @@ -66929,6 +66932,7 @@ T:FileProvider.NSFileProviderDeleteItemOptions T:FileProvider.NSFileProviderDomainRemovalMode T:FileProvider.NSFileProviderDomainTestingModes T:FileProvider.NSFileProviderDomainVersion +T:FileProvider.NSFileProviderExternalVolumeHandlingShouldConnectExternalDomainCallback T:FileProvider.NSFileProviderFavoriteRank T:FileProvider.NSFileProviderFetchContentsCompletionHandler T:FileProvider.NSFileProviderFetchContentsOptions @@ -66941,11 +66945,13 @@ T:FileProvider.NSFileProviderKnownFolderLocation T:FileProvider.NSFileProviderKnownFolderLocationCallback T:FileProvider.NSFileProviderKnownFolderLocations T:FileProvider.NSFileProviderKnownFolders +T:FileProvider.NSFileProviderManager_Diagnostics T:FileProvider.NSFileProviderManager_ExternalDomain T:FileProvider.NSFileProviderManager_KnownFolders T:FileProvider.NSFileProviderManager_StateDirectory T:FileProvider.NSFileProviderManagerDisconnectionOptions T:FileProvider.NSFileProviderManagerKnownFoldersCallback +T:FileProvider.NSFileProviderManagerRequestDiagnosticCollectionCallback T:FileProvider.NSFileProviderMaterializationFlags T:FileProvider.NSFileProviderModifyItemOptions T:FileProvider.NSFileProviderPartialContentFetchingCompletionHandler diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-FileProvider.ignore b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-FileProvider.ignore index 50003e4d2f7b..48e77adae063 100644 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-FileProvider.ignore +++ b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-FileProvider.ignore @@ -1,3 +1,5 @@ # Documentation as of Xcode 13 as macOS only !missing-enum! NSFileProviderFileSystemFlags not bound !missing-enum! NSFileProviderDomainTestingModes not bound +# Header clearly says this enum is not available on Mac Catalyst, not sure why xtro thinks it is. +!missing-enum! NSFileProviderContentPolicy not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-FileProvider.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-FileProvider.todo deleted file mode 100644 index 60f9bcae5366..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-FileProvider.todo +++ /dev/null @@ -1 +0,0 @@ -!missing-enum! NSFileProviderContentPolicy not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-FileProvider.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-FileProvider.todo deleted file mode 100644 index 32feeca7d6dc..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-FileProvider.todo +++ /dev/null @@ -1,3 +0,0 @@ -!missing-protocol! NSFileProviderExternalVolumeHandling not bound -!missing-selector! +NSFileProviderManager::checkDomainsCanBeStored:onVolumeAtURL:unsupportedReason:error: not bound -!missing-selector! NSFileProviderManager::requestDiagnosticCollectionForItemWithIdentifier:errorReason:completionHandler: not bound From 6b2d7eb6558ab9b25e32fd0a5b46d3035c20a4d1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Autoformatter Date: Thu, 13 Mar 2025 14:22:34 +0000 Subject: [PATCH 2/2] Auto-format source code --- src/fileprovider.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/fileprovider.cs b/src/fileprovider.cs index d465804822db..f22b9e6050d9 100644 --- a/src/fileprovider.cs +++ b/src/fileprovider.cs @@ -825,8 +825,7 @@ interface INSFileProviderPendingSetEnumerator { } [Category] [BaseType (typeof (NSFileProviderManager))] [NoTV, NoMacCatalyst, NoiOS, Mac (15, 4)] - interface NSFileProviderManager_Diagnostics - { + interface NSFileProviderManager_Diagnostics { [Export ("requestDiagnosticCollectionForItemWithIdentifier:errorReason:completionHandler:")] void RequestDiagnosticCollection (string itemIdentifier, NSError errorReason, NSFileProviderManagerRequestDiagnosticCollectionCallback completionHandler); }