From 64aafa31da0d702a4dd1032c27c7e3bb7f68f4d3 Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Fri, 21 Nov 2025 19:05:29 -0500 Subject: [PATCH] [xcode26.2] Update SafariServices bindings to Xcode 26.2 Beta 2 --- src/SafariServices/SSEnums.cs | 2 ++ src/safariservices.cs | 32 +++++++++++++++++++ .../Documentation.KnownFailures.txt | 9 ++++++ tests/introspection/iOSApiProtocolTest.cs | 6 ++++ .../MacCatalyst-SafariServices.todo | 5 --- .../iOS-SafariServices.todo | 6 ---- .../macOS-SafariServices.ignore | 1 + 7 files changed, 50 insertions(+), 11 deletions(-) delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.todo delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/iOS-SafariServices.todo diff --git a/src/SafariServices/SSEnums.cs b/src/SafariServices/SSEnums.cs index 7f9e1b46aaa2..c2434c1196d7 100644 --- a/src/SafariServices/SSEnums.cs +++ b/src/SafariServices/SSEnums.cs @@ -55,6 +55,8 @@ public enum SFErrorCode : long { InternalError = 4, /// The app is missing an entitlement. MissingEntitlement = 5, + /// The maximum number of allowed attempts to load the extension has been exceeded. + MaximumAttemptsExceeded = 6, } [NoMac] diff --git a/src/safariservices.cs b/src/safariservices.cs index 8adf2251aec7..902bfdf36479 100644 --- a/src/safariservices.cs +++ b/src/safariservices.cs @@ -899,6 +899,9 @@ interface SFAddToHomeScreenInfo : NSCopying { delegate void SFSafariSettingsOpenExportBrowsingDataSettingsCompletionHandler ([NullAllowed] NSError error); + [NoTV, NoMacCatalyst, iOS (26, 2), NoMac] + delegate void SFSafariSettingsOpenExtensionsSettingsCompletionHandler ([NullAllowed] NSError error); + [NoTV, NoMacCatalyst, iOS (26, 0), NoMac] [BaseType (typeof (NSObject))] [DisableDefaultCtor] @@ -907,6 +910,35 @@ interface SFSafariSettings { [Static] [Export ("openExportBrowsingDataSettingsWithCompletionHandler:")] void OpenExportBrowsingDataSettings ([NullAllowed] SFSafariSettingsOpenExportBrowsingDataSettingsCompletionHandler completionHandler); + + [Async] + [iOS (26, 2)] + [Static] + [Export ("openExtensionsSettingsForIdentifiers:completionHandler:")] + void OpenExtensionsSettings (string [] extensionIdentifiers, [NullAllowed] SFSafariSettingsOpenExtensionsSettingsCompletionHandler completionHandler); + } + + [NoTV, iOS (26, 2), MacCatalyst (26, 2), NoMac] + delegate void SFSafariExtensionManagerHandler ([NullAllowed] SFSafariExtensionState state, [NullAllowed] NSError error); + + [NoTV, iOS (26, 2), MacCatalyst (26, 2), NoMac] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface SFSafariExtensionManager { + + [Async] + [Static] + [Export ("getStateOfExtensionWithIdentifier:completionHandler:")] + void GetState (string identifier, SFSafariExtensionManagerHandler completionHandler); + } + + [NoTV, iOS (26, 2), MacCatalyst (26, 2), NoMac] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface SFSafariExtensionState { + + [Export ("enabled")] + bool Enabled { [Bind ("isEnabled")] get; } } } diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index 32a5799b7c83..d38118b0af43 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -15960,6 +15960,8 @@ M:SafariServices.SFSafariExtensionHandling_Extensions.ContentBlocker(SafariServi M:SafariServices.SFSafariExtensionHandling_Extensions.ValidateContextMenuItemAsync(SafariServices.ISFSafariExtensionHandling,System.String,SafariServices.SFSafariPage,Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}) M:SafariServices.SFSafariExtensionHandling_Extensions.ValidateToolbarItemAsync(SafariServices.ISFSafariExtensionHandling,SafariServices.SFSafariWindow) M:SafariServices.SFSafariExtensionHandling_Extensions.WillNavigate(SafariServices.ISFSafariExtensionHandling,SafariServices.SFSafariPage,Foundation.NSUrl) +M:SafariServices.SFSafariExtensionManager.GetState(System.String,SafariServices.SFSafariExtensionManagerHandler) +M:SafariServices.SFSafariExtensionManager.GetStateAsync(System.String) M:SafariServices.SFSafariExtensionViewController.DismissPopover M:SafariServices.SFSafariPage.GetContainingTab(System.Action{SafariServices.SFSafariTab}) M:SafariServices.SFSafariPage.GetContainingTabAsync @@ -15968,6 +15970,8 @@ M:SafariServices.SFSafariPage.GetScreenshotOfVisibleArea(System.Action{AppKit.NS M:SafariServices.SFSafariPage.GetScreenshotOfVisibleAreaAsync M:SafariServices.SFSafariSettings.OpenExportBrowsingDataSettings(SafariServices.SFSafariSettingsOpenExportBrowsingDataSettingsCompletionHandler) M:SafariServices.SFSafariSettings.OpenExportBrowsingDataSettingsAsync +M:SafariServices.SFSafariSettings.OpenExtensionsSettings(System.String[],SafariServices.SFSafariSettingsOpenExtensionsSettingsCompletionHandler) +M:SafariServices.SFSafariSettings.OpenExtensionsSettingsAsync(System.String[]) M:SafariServices.SFSafariTab.ActivateAsync M:SafariServices.SFSafariTab.Close M:SafariServices.SFSafariTab.GetActivePageAsync @@ -23521,6 +23525,7 @@ P:SafariServices.ISFAddToHomeScreenActivityItem.Title P:SafariServices.ISFAddToHomeScreenActivityItem.Url P:SafariServices.SFAddToHomeScreenInfo.Manifest P:SafariServices.SFAddToHomeScreenInfo.WebsiteCookies +P:SafariServices.SFSafariExtensionState.Enabled P:SafariServices.SFSafariViewController.PreferredBarTintColor P:SafariServices.SFSafariViewController.PreferredControlTintColor P:SafariServices.SFSafariViewControllerActivityButton.ExtensionIdentifier @@ -28285,11 +28290,15 @@ T:SafariServices.SFExtensionValidationHandler T:SafariServices.SFSafariApplication T:SafariServices.SFSafariExtension T:SafariServices.SFSafariExtensionHandler +T:SafariServices.SFSafariExtensionManager +T:SafariServices.SFSafariExtensionManagerHandler +T:SafariServices.SFSafariExtensionState T:SafariServices.SFSafariExtensionViewController T:SafariServices.SFSafariPage T:SafariServices.SFSafariPageProperties T:SafariServices.SFSafariSettings T:SafariServices.SFSafariSettingsOpenExportBrowsingDataSettingsCompletionHandler +T:SafariServices.SFSafariSettingsOpenExtensionsSettingsCompletionHandler T:SafariServices.SFSafariTab T:SafariServices.SFSafariToolbarItem T:SafariServices.SFSafariViewControllerActivityButton diff --git a/tests/introspection/iOSApiProtocolTest.cs b/tests/introspection/iOSApiProtocolTest.cs index 704ac4cf46d0..fe11fafdbcda 100644 --- a/tests/introspection/iOSApiProtocolTest.cs +++ b/tests/introspection/iOSApiProtocolTest.cs @@ -450,6 +450,9 @@ protected override bool Skip (Type type, string protocolName) case "CPMessageGridItemConfiguration": // Conformance not in headers case "PKAddIdentityDocumentMetadata": // Conformance not in headers return true; + // Xcode 26.2 + case "SFSafariExtensionState": // Conformance not in headers + return true; } break; case "NSSecureCoding": @@ -661,6 +664,9 @@ protected override bool Skip (Type type, string protocolName) case "CPMessageGridItemConfiguration": // Conformance not in headers case "PKAddIdentityDocumentMetadata": // Conformance not in headers return true; + // Xcode 26.2 + case "SFSafariExtensionState": // Conformance not in headers + return true; } break; case "NSCopying": diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.todo deleted file mode 100644 index a9ab93814d84..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.todo +++ /dev/null @@ -1,5 +0,0 @@ -!missing-selector! +SFSafariExtensionManager::getStateOfExtensionWithIdentifier:completionHandler: not bound -!missing-selector! SFSafariExtensionState::isEnabled not bound -!missing-type! SFSafariExtensionManager not bound -!missing-type! SFSafariExtensionState not bound -!missing-enum-value! SFErrorCode native value SFErrorMaximumAttemptsExceeded = 6 not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-SafariServices.todo b/tests/xtro-sharpie/api-annotations-dotnet/iOS-SafariServices.todo deleted file mode 100644 index b2bc206f5df0..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-SafariServices.todo +++ /dev/null @@ -1,6 +0,0 @@ -!missing-selector! +SFSafariExtensionManager::getStateOfExtensionWithIdentifier:completionHandler: not bound -!missing-selector! +SFSafariSettings::openExtensionsSettingsForIdentifiers:completionHandler: not bound -!missing-selector! SFSafariExtensionState::isEnabled not bound -!missing-type! SFSafariExtensionManager not bound -!missing-type! SFSafariExtensionState not bound -!missing-enum-value! SFErrorCode native value SFErrorMaximumAttemptsExceeded = 6 not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-SafariServices.ignore b/tests/xtro-sharpie/api-annotations-dotnet/macOS-SafariServices.ignore index 18b39df283cf..26691771f8b9 100644 --- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-SafariServices.ignore +++ b/tests/xtro-sharpie/api-annotations-dotnet/macOS-SafariServices.ignore @@ -9,3 +9,4 @@ # these values are not listed in the macOS headers, but it's an error enum, so we're keeping the same values across all platforms. !extra-enum-value! Managed value 4 for SFErrorCode.InternalError not found in native headers !extra-enum-value! Managed value 5 for SFErrorCode.MissingEntitlement not found in native headers +!extra-enum-value! Managed value 6 for SFErrorCode.MaximumAttemptsExceeded not found in native headers