From b76231d354cbebf5517f251c565b37459e609bb2 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 29 Nov 2024 12:40:36 +0100 Subject: [PATCH 1/2] [SafariServices] Implement Xcode 16.2 beta 1-3 changes. --- src/safariservices.cs | 37 ++++++++++++++++++- .../Documentation.KnownFailures.txt | 11 ++++++ .../MacCatalyst-SafariServices.ignore | 3 ++ .../MacCatalyst-SafariServices.todo | 2 - .../iOS-SafariServices.todo | 7 ---- 5 files changed, 50 insertions(+), 10 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.cs b/src/safariservices.cs index 34b7d2c88ddb..61d92c90bd8c 100644 --- a/src/safariservices.cs +++ b/src/safariservices.cs @@ -11,6 +11,11 @@ using System; +#if HAS_BROWSERENGINEKIT +using BrowserEngineKit; +#else +using BEWebAppManifest = Foundation.NSObject; +#endif using Foundation; using ObjCRuntime; #if !MONOMAC @@ -542,7 +547,7 @@ interface SFExtension { [Field ("SFExtensionMessageKey")] NSString MessageKey { get; } - [iOS (17, 0), Mac (14, 0), NoMacCatalyst] + [iOS (17, 0), Mac (14, 0), MacCatalyst (17, 1)] [Field ("SFExtensionProfileKey")] NSString ProfileKey { get; } } @@ -584,6 +589,9 @@ interface SFSafariViewControllerDataStore { void ClearWebsiteData ([NullAllowed] Action completion); } + delegate void SFAddToHomeScreenActivityItemGetWebAppManifestCallback ([NullAllowed] BEWebAppManifest appManifest); + delegate void SFAddToHomeScreenActivityItemGetHomeScreenWebAppInfoCallback ([NullAllowed] SFAddToHomeScreenInfo appManifest); + [iOS (17, 4), MacCatalyst (17, 4), NoMac, NoTV, NoWatch] [Protocol (BackwardsCompatibleCodeGeneration = false)] interface SFAddToHomeScreenActivityItem { @@ -598,6 +606,33 @@ interface SFAddToHomeScreenActivityItem { [NullAllowed, Export ("iconItemProvider")] NSItemProvider IconItemProvider { get; } + + [NoMacCatalyst] // The BrowserEngineKit framework (the BEWebAppManifest type) isn't available on Mac Catalyst. + [Deprecated (PlatformName.iOS, 18, 2, "Use 'GetHomeScreenWebAppInfo' instead.")] + [Async] + [Export ("getWebAppManifestWithCompletionHandler:")] + void GetWebAppManifest (SFAddToHomeScreenActivityItemGetWebAppManifestCallback completionHandler); + + [iOS (18, 2), NoMacCatalyst] + [Async] + [Export ("getHomeScreenWebAppInfoWithCompletionHandler:")] + void GetHomeScreenWebAppInfo (SFAddToHomeScreenActivityItemGetHomeScreenWebAppInfoCallback completionHandler); } + [iOS (18, 2), NoMacCatalyst, NoMac] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface SFAddToHomeScreenInfo : NSCopying + { + [NoMacCatalyst] // The BrowserEngineKit framework (the BEWebAppManifest type) isn't available on Mac Catalyst. + [Export ("initWithManifest:")] + [DesignatedInitializer] + NativeHandle Constructor (BEWebAppManifest manifest); + + [Export ("manifest", ArgumentSemantic.Copy)] + BEWebAppManifest Manifest { get; } + + [Export ("websiteCookies", ArgumentSemantic.Copy)] + NSHttpCookie[] WebsiteCookies { get; set; } + } } diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index 5c3414a6c973..b87bac052a93 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -42528,6 +42528,10 @@ M:ReplayKit.RPScreenRecorderDelegate_Extensions.DidStopRecording(ReplayKit.IRPSc M:ReplayKit.RPSystemBroadcastPickerView.#ctor(CoreGraphics.CGRect) M:ReplayKit.RPSystemBroadcastPickerView.EncodeTo(Foundation.NSCoder) M:ReplayKit.RPSystemBroadcastPickerView.RPSystemBroadcastPickerViewAppearance.#ctor(System.IntPtr) +M:SafariServices.ISFAddToHomeScreenActivityItem.GetHomeScreenWebAppInfo(SafariServices.SFAddToHomeScreenActivityItemGetHomeScreenWebAppInfoCallback) +M:SafariServices.ISFAddToHomeScreenActivityItem.GetHomeScreenWebAppInfoAsync +M:SafariServices.ISFAddToHomeScreenActivityItem.GetWebAppManifest(SafariServices.SFAddToHomeScreenActivityItemGetWebAppManifestCallback) +M:SafariServices.ISFAddToHomeScreenActivityItem.GetWebAppManifestAsync M:SafariServices.ISFSafariExtensionHandling.AdditionalRequestHeaders(Foundation.NSUrl,System.Action{Foundation.NSDictionary{Foundation.NSString,Foundation.NSString}}) M:SafariServices.ISFSafariExtensionHandling.ContentBlocker(System.String,Foundation.NSUrl[],SafariServices.SFSafariPage) M:SafariServices.ISFSafariExtensionHandling.ContextMenuItemSelected(System.String,SafariServices.SFSafariPage,Foundation.NSDictionary) @@ -42547,6 +42551,8 @@ M:SafariServices.ISFSafariViewControllerDelegate.GetActivityItems(SafariServices M:SafariServices.ISFSafariViewControllerDelegate.GetExcludedActivityTypes(SafariServices.SFSafariViewController,Foundation.NSUrl,System.String) M:SafariServices.ISFSafariViewControllerDelegate.InitialLoadDidRedirectToUrl(SafariServices.SFSafariViewController,Foundation.NSUrl) M:SafariServices.ISFSafariViewControllerDelegate.WillOpenInBrowser(SafariServices.SFSafariViewController) +M:SafariServices.SFAddToHomeScreenInfo.#ctor(BrowserEngineKit.BEWebAppManifest) +M:SafariServices.SFAddToHomeScreenInfo.Copy(Foundation.NSZone) M:SafariServices.SFAuthenticationSession.#ctor(Foundation.NSUrl,System.String,SafariServices.SFAuthenticationCompletionHandler) M:SafariServices.SFAuthenticationSession.Cancel M:SafariServices.SFAuthenticationSession.Start @@ -66563,6 +66569,8 @@ P:SafariServices.ISFAddToHomeScreenActivityItem.IconItemProvider P:SafariServices.ISFAddToHomeScreenActivityItem.Title P:SafariServices.ISFAddToHomeScreenActivityItem.Url P:SafariServices.ISFSafariExtensionHandling.PopoverViewController +P:SafariServices.SFAddToHomeScreenInfo.Manifest +P:SafariServices.SFAddToHomeScreenInfo.WebsiteCookies P:SafariServices.SFContentBlockerState.Enabled P:SafariServices.SFExtension.MessageKey P:SafariServices.SFExtension.ProfileKey @@ -75366,6 +75374,9 @@ T:ReplayKit.RPRecordingError T:ReplayKit.RPSampleBufferType T:SafariServices.ISFAddToHomeScreenActivityItem T:SafariServices.ISFSafariExtensionHandling +T:SafariServices.SFAddToHomeScreenActivityItemGetHomeScreenWebAppInfoCallback +T:SafariServices.SFAddToHomeScreenActivityItemGetWebAppManifestCallback +T:SafariServices.SFAddToHomeScreenInfo T:SafariServices.SFAuthenticationError T:SafariServices.SFContentBlockerErrorCode T:SafariServices.SFExtension diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.ignore b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.ignore index 56af0197693b..503891afcf16 100644 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.ignore +++ b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.ignore @@ -1,2 +1,5 @@ ## for compatibility we have extra code that return `false` if `url` is `null` !extra-null-allowed! 'System.Boolean SafariServices.SSReadingList::SupportsUrl(Foundation.NSUrl)' has a extraneous [NullAllowed] on parameter #0 + +## this member references a framework which isn't available on Mac Catalyst +!missing-protocol-member! SFAddToHomeScreenActivityItem::getWebAppManifestWithCompletionHandler: not found 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 b8cd273456aa..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SafariServices.todo +++ /dev/null @@ -1,2 +0,0 @@ -!missing-field! SFExtensionProfileKey not bound -!missing-protocol-member! SFAddToHomeScreenActivityItem::getWebAppManifestWithCompletionHandler: not found 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 13384dd10b74..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-SafariServices.todo +++ /dev/null @@ -1,7 +0,0 @@ -!missing-protocol-member! SFAddToHomeScreenActivityItem::getWebAppManifestWithCompletionHandler: not found -!missing-protocol-member! SFAddToHomeScreenActivityItem::getHomeScreenWebAppInfoWithCompletionHandler: not found -!missing-selector! SFAddToHomeScreenInfo::initWithManifest: not bound -!missing-selector! SFAddToHomeScreenInfo::manifest not bound -!missing-selector! SFAddToHomeScreenInfo::setWebsiteCookies: not bound -!missing-selector! SFAddToHomeScreenInfo::websiteCookies not bound -!missing-type! SFAddToHomeScreenInfo not bound From b8b7c8d1c68ab94ad091d3bf12a45ac6ec13ee0d Mon Sep 17 00:00:00 2001 From: GitHub Actions Autoformatter Date: Fri, 29 Nov 2024 16:58:36 +0000 Subject: [PATCH 2/2] Auto-format source code --- src/safariservices.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/safariservices.cs b/src/safariservices.cs index 61d92c90bd8c..9bf4bd388d4e 100644 --- a/src/safariservices.cs +++ b/src/safariservices.cs @@ -622,8 +622,7 @@ interface SFAddToHomeScreenActivityItem { [iOS (18, 2), NoMacCatalyst, NoMac] [BaseType (typeof (NSObject))] [DisableDefaultCtor] - interface SFAddToHomeScreenInfo : NSCopying - { + interface SFAddToHomeScreenInfo : NSCopying { [NoMacCatalyst] // The BrowserEngineKit framework (the BEWebAppManifest type) isn't available on Mac Catalyst. [Export ("initWithManifest:")] [DesignatedInitializer] @@ -633,6 +632,6 @@ interface SFAddToHomeScreenInfo : NSCopying BEWebAppManifest Manifest { get; } [Export ("websiteCookies", ArgumentSemantic.Copy)] - NSHttpCookie[] WebsiteCookies { get; set; } + NSHttpCookie [] WebsiteCookies { get; set; } } }