Skip to content

FileProvider iOS xcode26.0 b1

Rolf Bjarne Kvinge edited this page Aug 12, 2025 · 3 revisions

#FileProvider.framework https://github.com/dotnet/macios/pull/23567

diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/FileProvider.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/FileProvider.h --- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/FileProvider.h	2025-04-19 05:07:26 +++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/FileProvider.h	2025-05-23 10:33:46 @@ -25,5 +25,6 @@ #import <FileProvider/NSFileProviderItemDecoration.h> #import <FileProvider/NSFileProviderRequest.h> #import <FileProvider/NSFileProviderReplicatedExtension.h> +#import <FileProvider/NSFileProviderSearch.h> #import <FileProvider/NSFileProviderTesting.h> #import <FileProvider/NSFileProviderKnownFolders.h> diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDefines.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDefines.h --- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDefines.h	2025-04-19 05:07:26 +++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDefines.h	2025-05-23 10:33:46 @@ -46,4 +46,9 @@ #define FILEPROVIDER_API_AVAILABILITY_DESKTOP API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(watchos, tvos) API_UNAVAILABLE(ios, macCatalyst) #define FILEPROVIDER_API_AVAILABILITY_V8_0_IOS API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos) API_UNAVAILABLE(macCatalyst) + #define FILEPROVIDER_API_AVAILABILITY_FEEDBACK API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(watchos, tvos) API_UNAVAILABLE(ios, macCatalyst) + +#define FILEPROVIDER_API_AVAILABILITY_SEARCH API_AVAILABLE(macos(26.0)) API_UNAVAILABLE(watchos, tvos) API_UNAVAILABLE(ios, macCatalyst) + +#define FILEPROVIDER_API_AVAILABILITY_SYNC_CONTROLS API_AVAILABLE(macos(26.0), ios(26.0)) API_UNAVAILABLE(watchos, tvos) API_UNAVAILABLE(macCatalyst) diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDomain.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDomain.h --- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDomain.h	2025-04-25 21:00:09 +++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDomain.h	2025-05-23 06:16:34 @@ -269,6 +269,15 @@ */ @property (readwrite, assign) NSFileProviderKnownFolders supportedKnownFolders FILEPROVIDER_API_AVAILABILITY_DESKTOP; +/** + Whether the system should use this domain's + `NSFileProviderSearching` implementation to support + search experiences. + + Defaults to NO. + */ +@property (readwrite, assign) BOOL supportsStringSearchRequest FILEPROVIDER_API_AVAILABILITY_SEARCH; + @end FILEPROVIDER_API_AVAILABILITY_V2 diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderError.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderError.h --- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderError.h	2025-04-25 21:00:09 +++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderError.h	2025-05-23 10:33:46 @@ -183,6 +183,12 @@ `com.apple.fileprovider-nonui` application extension for this domain's app bundle. */ NSFileProviderErrorApplicationExtensionNotFound FILEPROVIDER_API_AVAILABILITY_V6_0_IOS = -2014, + + /* + Returned by the provider when a modifyItem with the failUploadOnConflict policy fails + because of a conflict with the server version. + */ + NSFileProviderErrorLocalVersionConflictingWithServer FILEPROVIDER_API_AVAILABILITY_SYNC_CONTROLS = -2015, } FILEPROVIDER_API_AVAILABILITY_V2_V3; @interface NSError (NSFileProviderError) diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderManager.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderManager.h --- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderManager.h	2025-04-19 02:29:18 +++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderManager.h	2025-05-23 10:34:33 @@ -111,7 +111,7 @@ The location may differ from the logical parentURL/filename. If an item on disk cannot be assigned the requested name (e.g. because the local file system has different case collision rules from the provider), one of the items can be assigned - a different local name. In that case, the "com.apple.fileprovider.before-bounce#P" extended + a different local name. In that case, the "com.apple.fileprovider.before-bounce#PX" extended attribute will contain the filename before collision resolution. This attribute is only set if the item has been assigned a different local name following a collision. Such local names are not synced up to the provider; the purpose of the attribute is diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderModifyItemOptions.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderModifyItemOptions.h --- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderModifyItemOptions.h	2025-04-19 05:07:26 +++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderModifyItemOptions.h	2025-05-23 10:33:46 @@ -15,4 +15,10 @@ This is similar to NSFileProviderCreateItemMayAlreadyExist */ NSFileProviderModifyItemMayAlreadyExist = 1 << 0, + /** + If the base version of the item trying to be uploaded doesn't match + the version of the file on server, the call to modifyItem should fail with a + NSFileProviderErrorLocalVersionConflictingWithServer error. + */ + NSFileProviderModifyItemFailOnConflict FILEPROVIDER_API_AVAILABILITY_SYNC_CONTROLS = 1 << 1, } FILEPROVIDER_API_AVAILABILITY_V3_IOS; diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderReplicatedExtension.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderReplicatedExtension.h --- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderReplicatedExtension.h	2025-04-19 05:07:26 +++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderReplicatedExtension.h	2025-05-23 06:16:34 @@ -723,6 +723,11 @@ the colliding items. When the collision is resolved, the system will call modifyItem again. + In case the NSFileProviderModifyItemFailOnConflict option is passed, the provider should + fail the modification if the baseVersion does not match the version on the server. It + will be up to the system to merge the conflict and call modifyItem again with an + updated baseVersion. + The extension can also report NSFileProviderErrorNotAuthenticated, NSFileProviderErrorCannotSynchronize, or NSFileProviderErrorExcludedFromSync, in case the modification cannot be applied because of the current state of the diff -ruN /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderSearch.h /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderSearch.h --- /Applications/Xcode_16.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderSearch.h	1969-12-31 19:00:00 +++ /Applications/Xcode_26.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderSearch.h	2025-05-23 06:21:16 @@ -0,0 +1,116 @@ +// +// NSFileProviderSearch.h +// FileProvider +// +// Copyright © 2024 Apple Inc. All rights reserved. +// + +#import <FileProvider/NSFileProviderDefines.h> +#import <FileProvider/NSFileProviderItem.h> +#import <FileProvider/NSFileProviderEnumerating.h> + +NS_ASSUME_NONNULL_BEGIN + +FILEPROVIDER_API_AVAILABILITY_SEARCH +@protocol NSFileProviderSearchResult + +/// The identifier for this search result. +/// This identifier should be usable on API calls from the +/// ``NSFileProviderReplicatedExtension`` protocol. +@property (nonatomic, readonly, copy) NSFileProviderItemIdentifier itemIdentifier; + +@property (nonatomic, readonly, copy) NSString *filename; + +@property (nonatomic, readonly, copy, nullable) NSDate *creationDate; + +@property (nonatomic, readonly, copy, nullable) NSDate *contentModificationDate; + +@property (nonatomic, readonly, copy, nullable) NSDate *lastUsedDate; + +@property (nonatomic, readonly, copy) UTType *contentType; + +@property (nonatomic, readonly, copy, nullable) NSNumber *documentSize; + +@end + +FILEPROVIDER_API_AVAILABILITY_SEARCH +@protocol NSFileProviderSearchEnumerationObserver <NSObject> + +- (void)didEnumerateSearchResults:(NSArray <id<NSFileProviderSearchResult>> *)searchResults; + +/** + Call this method after enumerating a full page of results. If you set a non-nil + nextPage, -[NSFileProviderSearchEnumerator enumerateSearchResultsToObserver:startingAtPage:] + might be called with nextPage to enumerate more items. + + Page data is limited to 500 bytes. Setting a larger nextPage interrupts the + enumeration. + */ +- (void)finishEnumeratingUpToPage:(nullable NSFileProviderPage)nextPage NS_SWIFT_NAME(finishEnumerating(upTo:)); + +/** + Finishing a search enumeration with an error will cause the system to stop + requesting additional pages of results. + The system will not retry in case of an error. It is up to the extension + to decide whether to retry errors internally, in their implementation of `enumerateSearchResultsForObserver`, + or to return the error to the system and end the search query. + */ +- (void)finishEnumeratingWithError:(NSError *)error; + +/** + The maximum number of results to return in a single page enumeration. + + If the extension returns more than this number of results in a single page enumeration, + the system will crash the extension process. + */ +@property (nonatomic, readonly) NSInteger maxNumberOfResults; + +@end + +FILEPROVIDER_API_AVAILABILITY_SEARCH +@protocol NSFileProviderSearchEnumerator <NSObject> + +/** + Called when the system wants to cancel a currently running enumeration, or when the system is finished using this enumerator object. + + For instance, the user has changed their query, and the result of the currently running query will no longer + be used by the system. + + Or, the system is finished using this enumerator object. + + The extension should cancel any outstanding requests and cleanup resources. + */ +- (void)invalidate; + +/** + Enumerate search results starting from the specified page. + + - Parameters: + - observer: The observer object, which the extension will use to provide results. + - page: If a previous enumeration returned a `nextPage` on + ``-[NSFileProviderSearchEnumerationObserver finishEnumeratingUpToPage:]``, + the system may pass that page into the next enumeration. + The page should contain whatever information is needed to resume the enumeration. + */ +- (void)enumerateSearchResultsForObserver:(id<NSFileProviderSearchEnumerationObserver>)observer + startingAtPage:(NSFileProviderPage _Nullable)page NS_SWIFT_NAME(enumerateSearchResults(for:startingAt:)); + +@end + +FILEPROVIDER_API_AVAILABILITY_SEARCH +@interface NSFileProviderStringSearchRequest: NSObject + +/// A plaintext string, representing the query the user entered into the system search UI. +@property (nonatomic, readonly) NSString *query; + +@end + +FILEPROVIDER_API_AVAILABILITY_SEARCH +@protocol NSFileProviderSearching <NSObject> + +/// Called by the system to retrieve search results for a user search query. +- (id<NSFileProviderSearchEnumerator>)searchEnumeratorForStringSearchRequest:(NSFileProviderStringSearchRequest *)request; + +@end + +NS_ASSUME_NONNULL_END 
Clone this wiki locally