diff --git a/src/WebKit/WKWebExtensionMatchPattern.cs b/src/WebKit/WKWebExtensionMatchPattern.cs
new file mode 100644
index 000000000000..18bb698eaa83
--- /dev/null
+++ b/src/WebKit/WKWebExtensionMatchPattern.cs
@@ -0,0 +1,40 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+using Foundation;
+
+namespace WebKit {
+ public partial class WKWebExtensionMatchPattern {
+ /// Create a new for the specified pattern.
+ /// The pattern to initialize the new instance with.
+ /// The error object, if an error occurred, otherwise null.
+ /// A newly created if successful, otherwise null.
+ public static WKWebExtensionMatchPattern? Create (string @string, out NSError? error)
+ {
+ var rv = new WKWebExtensionMatchPattern (NSObjectFlag.Empty);
+ rv.InitializeHandle (rv._InitWithString (@string, out error), string.Empty, false);
+ if (rv.Handle == IntPtr.Zero) {
+ rv.Dispose ();
+ return null;
+ }
+ return rv;
+ }
+
+ /// Create a new for the specified scheme, host and path.
+ /// The scheme to initialize the new instance with.
+ /// The host to initialize the new instance with.
+ /// The path to initialize the new instance with.
+ /// The error object, if an error occurred, otherwise null.
+ /// A newly created if successful, otherwise null.
+ public static WKWebExtensionMatchPattern? Create (string scheme, string host, string path, out NSError? error)
+ {
+ var rv = new WKWebExtensionMatchPattern (NSObjectFlag.Empty);
+ rv.InitializeHandle (rv._InitWithScheme (scheme, host, path, out error), string.Empty, false);
+ if (rv.Handle == IntPtr.Zero) {
+ rv.Dispose ();
+ return null;
+ }
+ return rv;
+ }
+ }
+}
diff --git a/src/frameworks.sources b/src/frameworks.sources
index bf10835102b8..ac91cf01cbb4 100644
--- a/src/frameworks.sources
+++ b/src/frameworks.sources
@@ -1895,6 +1895,7 @@ WEBKIT_SOURCES = \
WebKit/WebView.cs \
WebKit/WKCompat.cs \
WebKit/WKPreferences.cs \
+ WebKit/WKWebExtensionMatchPattern.cs \
WebKit/WKWindowFeatures.cs \
#
diff --git a/src/webkit.cs b/src/webkit.cs
index cb2dd9859da1..263e66a6d1a4 100644
--- a/src/webkit.cs
+++ b/src/webkit.cs
@@ -4540,15 +4540,21 @@ interface WKNavigationAction {
[Export ("request", ArgumentSemantic.Copy)]
NSUrlRequest Request { get; }
- [NoiOS]
- [NoMacCatalyst]
[Export ("modifierFlags")]
+ [iOS (18, 4), MacCatalyst (18, 4)]
+#if __IOS__ || __MACCATALYST_
+ UIKeyModifierFlags ModifierFlags { get; }
+#else
NSEventModifierMask ModifierFlags { get; }
+#endif
- [NoiOS]
- [NoMacCatalyst]
[Export ("buttonNumber")]
+ [iOS (18, 4), MacCatalyst (18, 4)]
+#if __IOS__ || __MACCATALYST_
+ UIEventButtonMask ButtonNumber { get; }
+#else
nint ButtonNumber { get; }
+#endif
[iOS (14, 5)]
[MacCatalyst (14, 5)]
@@ -4614,8 +4620,14 @@ interface WKNavigationDelegate {
[MacCatalyst (14, 5)]
[Export ("webView:navigationResponse:didBecomeDownload:")]
void NavigationResponseDidBecomeDownload (WKWebView webView, WKNavigationResponse navigationResponse, WKDownload download);
+
+ [iOS (18, 4), MacCatalyst (18, 4), Mac (15, 4), NoTV]
+ [Export ("webView:shouldGoToBackForwardListItem:willUseInstantBack:completionHandler:")]
+ void ShouldGoToBackForwardListItem (WKWebView webView, WKBackForwardListItem backForwardListItem, bool willUseInstantBack, WKNavigationDelegateShouldGoToBackForwardListItemCallback completionHandler);
}
+ delegate void WKNavigationDelegateShouldGoToBackForwardListItemCallback (bool shouldGoToItem);
+
/// Interface representing the required methods (if any) of the protocol .
///
/// This interface contains the required methods (if any) from the protocol defined by .
@@ -4986,14 +4998,13 @@ interface WKWebsiteDataStore : NSSecureCoding {
NWProxyConfig [] ProxyConfigurations { get; set; }
}
- [NoiOS, NoTV]
- [NoMacCatalyst]
+ [iOS (18, 4), NoTV]
+ [MacCatalyst (18, 4)]
[BaseType (typeof (NSObject))]
interface WKOpenPanelParameters {
[Export ("allowsMultipleSelection")]
bool AllowsMultipleSelection { get; }
- [NoMacCatalyst]
[Export ("allowsDirectories")]
bool AllowsDirectories { get; }
}
@@ -5033,8 +5044,8 @@ void RunJavaScriptTextInputPanel (WKWebView webView, string prompt, [NullAllowed
void RunJavaScriptTextInputPanel (WKWebView webView, string prompt, [NullAllowed] string defaultText, WKFrameInfo frame, WKUIDelegateRunJavaScriptTextInputPanelCallback completionHandler);
#endif
- [NoiOS, NoTV]
- [NoMacCatalyst]
+ [iOS (18, 4), NoTV]
+ [MacCatalyst (18, 4)]
[Export ("webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:")]
void RunOpenPanel (WKWebView webView, WKOpenPanelParameters parameters, WKFrameInfo frame, Action completionHandler);
@@ -5099,7 +5110,7 @@ void RunJavaScriptTextInputPanel (WKWebView webView, string prompt, [NullAllowed
void RequestMediaCapturePermission (WKWebView webView, WKSecurityOrigin origin, WKFrameInfo frame, WKMediaCaptureType type, Action decisionHandler);
[Async]
- [NoMac, iOS (16, 0), MacCatalyst (16, 0)] // headers say 13, is not true since the enum is from 16
+ [NoMac, iOS (16, 0), MacCatalyst (16, 0)]
[Export ("webView:showLockdownModeFirstUseMessage:completionHandler:")]
void ShowLockDownMode (WKWebView webView, string firstUseMessage, Action completionHandler);
@@ -5620,7 +5631,7 @@ interface WKWebView
///
/// If evaluation was successful, will be . If an error occurred, will be .
///
- delegate void WKJavascriptEvaluationResult (NSObject result, NSError error);
+ delegate void WKJavascriptEvaluationResult ([NullAllowed] NSObject result, [NullAllowed] NSError error);
/// Properties configuring a .
///
@@ -5747,6 +5758,10 @@ interface WKWebViewConfiguration : NSCopying, NSSecureCoding {
#else
UIWritingToolsBehavior WritingToolsBehavior { get; set; }
#endif
+
+ [iOS (18, 4), MacCatalyst (18, 4), Mac (15, 4), NoTV]
+ [Export ("webExtensionController", ArgumentSemantic.Strong), NullAllowed]
+ WKWebExtensionController WebExtensionController { get; set; }
}
/// A pool of content processes.
@@ -6073,4 +6088,1217 @@ public enum WKWebpagePreferencesUpgradeToHttpsPolicy : long {
UserMediatedFallbackToHttp,
ErrorOnFailure,
}
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Native]
+ [ErrorDomain ("WKWebExtensionErrorDomain")]
+ public enum WKWebExtensionError : long {
+ Unknown = 1,
+ ResourceNotFound,
+ InvalidResourceCodeSignature,
+ InvalidManifest,
+ UnsupportedManifestVersion,
+ InvalidManifestEntry,
+ InvalidDeclarativeNetRequestEntry,
+ InvalidBackgroundPersistence,
+ InvalidArchive,
+ }
+
+ delegate void WKWebExtensionCreateCallback ([NullAllowed] WKWebExtension extension, [NullAllowed] NSError error);
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtension {
+ [Static]
+ [Export ("extensionWithAppExtensionBundle:completionHandler:")]
+ [Async]
+ void Create (NSBundle appExtensionBundle, WKWebExtensionCreateCallback completionHandler);
+
+ [Static]
+ [Export ("extensionWithResourceBaseURL:completionHandler:")]
+ [Async]
+ void Create (NSUrl resourceBaseUrl, WKWebExtensionCreateCallback completionHandler);
+
+ [Export ("errors", ArgumentSemantic.Copy)]
+ NSError [] Errors { get; }
+
+ [Export ("manifest", ArgumentSemantic.Copy)]
+ NSDictionary Manifest { get; }
+
+ [Export ("manifestVersion")]
+ double ManifestVersion { get; }
+
+ [Export ("supportsManifestVersion:")]
+ bool SupportsManifestVersion (double manifestVersion);
+
+ [NullAllowed, Export ("defaultLocale", ArgumentSemantic.Copy)]
+ NSLocale DefaultLocale { get; }
+
+ [NullAllowed, Export ("displayName")]
+ string DisplayName { get; }
+
+ [NullAllowed, Export ("displayShortName")]
+ string DisplayShortName { get; }
+
+ [NullAllowed, Export ("displayVersion")]
+ string DisplayVersion { get; }
+
+ [NullAllowed, Export ("displayDescription")]
+ string DisplayDescription { get; }
+
+ [NullAllowed, Export ("displayActionLabel")]
+ string DisplayActionLabel { get; }
+
+ [NullAllowed, Export ("version")]
+ string Version { get; }
+
+ [Export ("iconForSize:")]
+ [return: NullAllowed]
+ UIImage GetIcon (CGSize size);
+
+ [Export ("actionIconForSize:")]
+ [return: NullAllowed]
+ UIImage GetActionIcon (CGSize size);
+
+ [Export ("requestedPermissions", ArgumentSemantic.Copy)]
+ NSSet WeakRequestedPermissions { get; }
+
+ WKWebExtensionPermission RequestedPermissions {
+ [Wrap ("WKWebExtensionPermissionExtensions.ToFlags (WeakRequestedPermissions);")]
+ get;
+ }
+
+ [Export ("optionalPermissions", ArgumentSemantic.Copy)]
+ NSSet WeakOptionalPermissions { get; }
+
+ WKWebExtensionPermission OptionalPermissions {
+ [Wrap ("WKWebExtensionPermissionExtensions.ToFlags (WeakOptionalPermissions);")]
+ get;
+ }
+
+ [Export ("requestedPermissionMatchPatterns", ArgumentSemantic.Copy)]
+ NSSet RequestedPermissionMatchPatterns { get; }
+
+ [Export ("optionalPermissionMatchPatterns", ArgumentSemantic.Copy)]
+ NSSet OptionalPermissionMatchPatterns { get; }
+
+ [Export ("allRequestedMatchPatterns", ArgumentSemantic.Copy)]
+ NSSet AllRequestedMatchPatterns { get; }
+
+ [Export ("hasBackgroundContent")]
+ bool HasBackgroundContent { get; }
+
+ [Export ("hasPersistentBackgroundContent")]
+ bool HasPersistentBackgroundContent { get; }
+
+ [Export ("hasInjectedContent")]
+ bool HasInjectedContent { get; }
+
+ [Export ("hasOptionsPage")]
+ bool HasOptionsPage { get; }
+
+ [Export ("hasOverrideNewTabPage")]
+ bool HasOverrideNewTabPage { get; }
+
+ [Export ("hasCommands")]
+ bool HasCommands { get; }
+
+ [Export ("hasContentModificationRules")]
+ bool HasContentModificationRules { get; }
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionAction {
+ [NullAllowed, Export ("webExtensionContext", ArgumentSemantic.Weak)]
+ WKWebExtensionContext WebExtensionContext { get; }
+
+ [NullAllowed, Export ("associatedTab", ArgumentSemantic.Weak)]
+ IWKWebExtensionTab AssociatedTab { get; }
+
+ [Export ("iconForSize:")]
+ [return: NullAllowed]
+ UIImage GetIcon (CGSize size);
+
+ [Export ("label")]
+ string Label { get; }
+
+ [Export ("badgeText")]
+ string BadgeText { get; }
+
+ [Export ("hasUnreadBadgeText")]
+ bool HasUnreadBadgeText { get; set; }
+
+ [NullAllowed, Export ("inspectionName")]
+ string InspectionName { get; set; }
+
+ [Export ("enabled")]
+ bool Enabled { [Bind ("isEnabled")] get; }
+
+ [Export ("menuItems", ArgumentSemantic.Copy)]
+#if IOS || MACCATALYST
+ UIMenuElement[] MenuItems { get; }
+#else
+ NSMenuItem [] MenuItems { get; }
+#endif
+
+ [Export ("presentsPopup")]
+ bool PresentsPopup { get; }
+
+#if !MONOMAC
+ [NullAllowed, Export ("popupViewController")]
+ UIViewController PopupViewController { get; }
+#endif
+
+#if MONOMAC
+ [Export ("popupPopover"), NullAllowed]
+ NSPopover PopupPopover { get; }
+#endif
+
+ [NullAllowed, Export ("popupWebView")]
+ WKWebView PopupWebView { get; }
+
+ [Export ("closePopup")]
+ void ClosePopup ();
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionCommand {
+ [NullAllowed, Export ("webExtensionContext", ArgumentSemantic.Weak)]
+ WKWebExtensionContext WebExtensionContext { get; }
+
+ [Export ("identifier")]
+ string Identifier { get; }
+
+ [Export ("title")]
+ string Title { get; }
+
+ [NullAllowed, Export ("activationKey")]
+ string ActivationKey { get; set; }
+
+ [Export ("modifierFlags", ArgumentSemantic.Assign)]
+#if __IOS__ || __MACCATALYST_
+ UIKeyModifierFlags ModifierFlags { get; set; }
+#else
+ NSEventModifierMask ModifierFlags { get; set; }
+#endif
+
+ [Export ("menuItem", ArgumentSemantic.Copy)]
+#if __IOS__ || __MACCATALYST_
+ UIMenuElement MenuItem { get; }
+#else
+ NSMenuItem MenuItem { get; }
+#endif
+
+#if IOS || MACCATALYST
+ [NullAllowed, Export ("keyCommand", ArgumentSemantic.Copy)]
+ UIKeyCommand KeyCommand { get; }
+#endif
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Flags]
+ [Native]
+ public enum WKWebExtensionTabChangedProperties : ulong {
+ None = 0,
+ Loading = 1uL << 1,
+ Muted = 1uL << 2,
+ Pinned = 1uL << 3,
+ PlayingAudio = 1uL << 4,
+ ReaderMode = 1uL << 5,
+ Size = 1uL << 6,
+ Title = 1uL << 7,
+ Url = 1uL << 8,
+ ZoomFactor = 1uL << 9,
+ }
+
+ interface IWKWebExtensionTab { }
+
+ delegate void WKWebExtensionTabCallback ([NullAllowed] NSError error);
+ delegate void WKWebExtensionTabDetectLocaleCallback ([NullAllowed] NSLocale locale, [NullAllowed] NSError error);
+ delegate void WKWebExtensionTabDuplicateCallback ([NullAllowed] IWKWebExtensionTab duplicatedTab, [NullAllowed] NSError error);
+ delegate void WKWebExtensionTabTakeSnapshotCallback ([NullAllowed] UIImage webpageImage, [NullAllowed] NSError error);
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Protocol (BackwardsCompatibleCodeGeneration = false)]
+ interface WKWebExtensionTab {
+ [Export ("windowForWebExtensionContext:")]
+ [return: NullAllowed]
+ IWKWebExtensionWindow GetWindow (WKWebExtensionContext context);
+
+ [Export ("indexInWindowForWebExtensionContext:")]
+ nuint GetIndexInWindow (WKWebExtensionContext context);
+
+ [Export ("parentTabForWebExtensionContext:")]
+ [return: NullAllowed]
+ IWKWebExtensionTab GetParentTab (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("setParentTab:forWebExtensionContext:completionHandler:")]
+ void SetParentTab ([NullAllowed] IWKWebExtensionTab parentTab, WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Export ("webViewForWebExtensionContext:")]
+ [return: NullAllowed]
+ WKWebView GetWebView (WKWebExtensionContext context);
+
+ [Export ("titleForWebExtensionContext:")]
+ [return: NullAllowed]
+ string GetTitle (WKWebExtensionContext context);
+
+ [Export ("isPinnedForWebExtensionContext:")]
+ bool IsPinned (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("setPinned:forWebExtensionContext:completionHandler:")]
+ void SetPinned (bool pinned, WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Export ("isReaderModeAvailableForWebExtensionContext:")]
+ bool IsReaderModeAvailable (WKWebExtensionContext context);
+
+ [Export ("isReaderModeActiveForWebExtensionContext:")]
+ bool IsReaderModeActive (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("setReaderModeActive:forWebExtensionContext:completionHandler:")]
+ void SetReaderModeActive (bool active, WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Export ("isPlayingAudioForWebExtensionContext:")]
+ bool IsPlayingAudio (WKWebExtensionContext context);
+
+ [Export ("isMutedForWebExtensionContext:")]
+ bool IsMuted (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("setMuted:forWebExtensionContext:completionHandler:")]
+ void SetMuted (bool muted, WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Export ("sizeForWebExtensionContext:")]
+ CGSize GetSize (WKWebExtensionContext context);
+
+ [Export ("zoomFactorForWebExtensionContext:")]
+ double GetZoomFactor (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("setZoomFactor:forWebExtensionContext:completionHandler:")]
+ void SetZoomFactor (double zoomFactor, WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Export ("urlForWebExtensionContext:")]
+ [return: NullAllowed]
+ NSUrl GetUrl (WKWebExtensionContext context);
+
+ [Export ("pendingURLForWebExtensionContext:")]
+ [return: NullAllowed]
+ NSUrl GetPendingUrl (WKWebExtensionContext context);
+
+ [Export ("isLoadingCompleteForWebExtensionContext:")]
+ bool IsLoadingComplete (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("detectWebpageLocaleForWebExtensionContext:completionHandler:")]
+ void DetectWebpageLocale (WKWebExtensionContext context, WKWebExtensionTabDetectLocaleCallback completionHandler);
+
+ [Async]
+ [Export ("takeSnapshotUsingConfiguration:forWebExtensionContext:completionHandler:")]
+ void TakeSnapshot (WKSnapshotConfiguration configuration, WKWebExtensionContext context, WKWebExtensionTabTakeSnapshotCallback completionHandler);
+
+ [Async]
+ [Export ("loadURL:forWebExtensionContext:completionHandler:")]
+ void LoadUrl (NSUrl url, WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Async]
+ [Export ("reloadFromOrigin:forWebExtensionContext:completionHandler:")]
+ void ReloadFromOrigin (bool fromOrigin, WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Async]
+ [Export ("goBackForWebExtensionContext:completionHandler:")]
+ void GoBack (WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Async]
+ [Export ("goForwardForWebExtensionContext:completionHandler:")]
+ void GoForward (WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Async]
+ [Export ("activateForWebExtensionContext:completionHandler:")]
+ void Activate (WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Export ("isSelectedForWebExtensionContext:")]
+ bool IsSelected (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("setSelected:forWebExtensionContext:completionHandler:")]
+ void SetSelected (bool selected, WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Async]
+ [Export ("duplicateUsingConfiguration:forWebExtensionContext:completionHandler:")]
+ void Duplicate (WKWebExtensionTabConfiguration configuration, WKWebExtensionContext context, WKWebExtensionTabDuplicateCallback completionHandler);
+
+ [Async]
+ [Export ("closeForWebExtensionContext:completionHandler:")]
+ void Close (WKWebExtensionContext context, WKWebExtensionTabCallback completionHandler);
+
+ [Export ("shouldGrantPermissionsOnUserGestureForWebExtensionContext:")]
+ bool ShouldGrantPermissionsOnUserGesture (WKWebExtensionContext context);
+
+ [Export ("shouldBypassPermissionsForWebExtensionContext:")]
+ bool ShouldBypassPermissions (WKWebExtensionContext context);
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [ErrorDomain ("WKWebExtensionContextErrorDomain")]
+ [Native]
+ public enum WKWebExtensionContextError : long {
+ Unknown = 1,
+ AlreadyLoaded,
+ NotLoaded,
+ BaseUrlAlreadyInUse,
+ NoBackgroundContent,
+ BackgroundContentFailedToLoad,
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Native]
+ public enum WKWebExtensionContextPermissionStatus : long {
+ DeniedExplicitly = -3,
+ DeniedImplicitly = -2,
+ RequestedImplicitly = -1,
+ Unknown = 0,
+ RequestedExplicitly = 1,
+ GrantedImplicitly = 2,
+ GrantedExplicitly = 3,
+ }
+
+ delegate void WKWebExtensionContextCallback ([NullAllowed] NSError error);
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionContext {
+ [Static]
+ [Export ("contextForExtension:")]
+ WKWebExtensionContext Create (WKWebExtension extension);
+
+ [Export ("initForExtension:")]
+ [DesignatedInitializer]
+ NativeHandle Constructor (WKWebExtension extension);
+
+ [Export ("webExtension", ArgumentSemantic.Strong)]
+ WKWebExtension WebExtension { get; }
+
+ [NullAllowed, Export ("webExtensionController", ArgumentSemantic.Weak)]
+ WKWebExtensionController WebExtensionController { get; }
+
+ [Export ("loaded")]
+ bool Loaded { [Bind ("isLoaded")] get; }
+
+ [Export ("errors", ArgumentSemantic.Copy)]
+ NSError [] Errors { get; }
+
+ [Export ("baseURL", ArgumentSemantic.Copy)]
+ NSUrl BaseUrl { get; set; }
+
+ [Export ("uniqueIdentifier")]
+ string UniqueIdentifier { get; set; }
+
+ [Export ("inspectable")]
+ bool Inspectable { [Bind ("isInspectable")] get; set; }
+
+ [NullAllowed, Export ("inspectionName")]
+ string InspectionName { get; set; }
+
+ [NullAllowed, Export ("unsupportedAPIs", ArgumentSemantic.Copy)]
+ NSSet UnsupportedAPIs { get; set; }
+
+ [NullAllowed, Export ("webViewConfiguration", ArgumentSemantic.Copy)]
+ WKWebViewConfiguration WebViewConfiguration { get; }
+
+ [NullAllowed, Export ("optionsPageURL", ArgumentSemantic.Copy)]
+ NSUrl OptionsPageUrl { get; }
+
+ [NullAllowed, Export ("overrideNewTabPageURL", ArgumentSemantic.Copy)]
+ NSUrl OverrideNewTabPageUrl { get; }
+
+ [Export ("grantedPermissions", ArgumentSemantic.Copy)]
+ NSDictionary GrantedPermissions { get; set; }
+
+ [Export ("grantedPermissionMatchPatterns", ArgumentSemantic.Copy)]
+ NSDictionary GrantedPermissionMatchPatterns { get; set; }
+
+ [Export ("deniedPermissions", ArgumentSemantic.Copy)]
+ NSDictionary DeniedPermissions { get; set; }
+
+ [Export ("deniedPermissionMatchPatterns", ArgumentSemantic.Copy)]
+ NSDictionary DeniedPermissionMatchPatterns { get; set; }
+
+ [Export ("hasRequestedOptionalAccessToAllHosts")]
+ bool HasRequestedOptionalAccessToAllHosts { get; set; }
+
+ [Export ("hasAccessToPrivateData")]
+ bool HasAccessToPrivateData { get; set; }
+
+ [Export ("currentPermissions", ArgumentSemantic.Copy)]
+ NSSet WeakCurrentPermissions { get; }
+
+ WKWebExtensionPermission CurrentPermission {
+ [Wrap ("WKWebExtensionPermissionExtensions.ToFlags (WeakCurrentPermissions);")]
+ get;
+ }
+
+ [Export ("currentPermissionMatchPatterns", ArgumentSemantic.Copy)]
+ NSSet CurrentPermissionMatchPatterns { get; }
+
+ [Export ("hasPermission:")]
+ bool HasPermission (string permission);
+
+ [Export ("hasPermission:inTab:")]
+ bool HasPermission (string permission, [NullAllowed] IWKWebExtensionTab tab);
+
+ [Export ("hasAccessToURL:")]
+ bool HasAccessToUrl (NSUrl url);
+
+ [Export ("hasAccessToURL:inTab:")]
+ bool HasAccessToUrl (NSUrl url, [NullAllowed] IWKWebExtensionTab tab);
+
+ [Export ("hasAccessToAllURLs")]
+ bool HasAccessToAllUrls { get; }
+
+ [Export ("hasAccessToAllHosts")]
+ bool HasAccessToAllHosts { get; }
+
+ [Export ("hasInjectedContent")]
+ bool HasInjectedContent { get; }
+
+ [Export ("hasInjectedContentForURL:")]
+ bool HasInjectedContentForUrl (NSUrl url);
+
+ [Export ("hasContentModificationRules")]
+ bool HasContentModificationRules { get; }
+
+ [Export ("permissionStatusForPermission:")]
+ WKWebExtensionContextPermissionStatus GetPermissionStatus (string permission);
+
+ [Export ("permissionStatusForPermission:inTab:")]
+ WKWebExtensionContextPermissionStatus GetPermissionStatus (string permission, [NullAllowed] IWKWebExtensionTab tab);
+
+ [Export ("setPermissionStatus:forPermission:")]
+ void SetPermissionStatus (WKWebExtensionContextPermissionStatus status, string permission);
+
+ [Export ("setPermissionStatus:forPermission:expirationDate:")]
+ void SetPermissionStatus (WKWebExtensionContextPermissionStatus status, string permission, [NullAllowed] NSDate expirationDate);
+
+ [Export ("permissionStatusForURL:")]
+ WKWebExtensionContextPermissionStatus GetPermissionStatus (NSUrl url);
+
+ [Export ("permissionStatusForURL:inTab:")]
+ WKWebExtensionContextPermissionStatus GetPermissionStatus (NSUrl url, [NullAllowed] IWKWebExtensionTab tab);
+
+ [Export ("setPermissionStatus:forURL:")]
+ void SetPermissionStatus (WKWebExtensionContextPermissionStatus status, NSUrl url);
+
+ [Export ("setPermissionStatus:forURL:expirationDate:")]
+ void SetPermissionStatus (WKWebExtensionContextPermissionStatus status, NSUrl url, [NullAllowed] NSDate expirationDate);
+
+ [Export ("permissionStatusForMatchPattern:")]
+ WKWebExtensionContextPermissionStatus GetPermissionStatus (WKWebExtensionMatchPattern pattern);
+
+ [Export ("permissionStatusForMatchPattern:inTab:")]
+ WKWebExtensionContextPermissionStatus GetPermissionStatus (WKWebExtensionMatchPattern pattern, [NullAllowed] IWKWebExtensionTab tab);
+
+ [Export ("setPermissionStatus:forMatchPattern:")]
+ void SetPermissionStatus (WKWebExtensionContextPermissionStatus status, WKWebExtensionMatchPattern pattern);
+
+ [Export ("setPermissionStatus:forMatchPattern:expirationDate:")]
+ void SetPermissionStatus (WKWebExtensionContextPermissionStatus status, WKWebExtensionMatchPattern pattern, [NullAllowed] NSDate expirationDate);
+
+ [Async]
+ [Export ("loadBackgroundContentWithCompletionHandler:")]
+ void LoadBackgroundContent (WKWebExtensionContextCallback completionHandler);
+
+ [Export ("actionForTab:")]
+ [return: NullAllowed]
+ WKWebExtensionAction GetAction ([NullAllowed] IWKWebExtensionTab tab);
+
+ [Export ("performActionForTab:")]
+ void PerformAction ([NullAllowed] IWKWebExtensionTab tab);
+
+ [Export ("commands", ArgumentSemantic.Copy)]
+ WKWebExtensionCommand [] Commands { get; }
+
+ [Export ("performCommand:")]
+ void PerformCommand (WKWebExtensionCommand command);
+
+#if IOS || MACCATALYST
+ [NoMac]
+ [Export ("performCommandForKeyCommand:")]
+ bool PerformCommand (UIKeyCommand keyCommand);
+#endif
+
+#if MONOMAC
+ [Export ("performCommandForEvent:")]
+ bool PerformCommand (NSEvent @event);
+
+ [Export ("commandForEvent:")]
+ [return: NullAllowed]
+ WKWebExtensionCommand GetCommand (NSEvent @event);
+#endif
+
+ [Export ("menuItemsForTab:")]
+#if IOS || MACCATALYST
+ UIMenuElement[] GetMenuItems (IWKWebExtensionTab tab);
+#else
+ NSMenuItem [] GetMenuItems (IWKWebExtensionTab tab);
+#endif
+
+ [Export ("userGesturePerformedInTab:")]
+ void UserGesturePerformed (IWKWebExtensionTab tab);
+
+ [Export ("hasActiveUserGestureInTab:")]
+ bool HasActiveUserGesture (IWKWebExtensionTab tab);
+
+ [Export ("clearUserGestureInTab:")]
+ void ClearUserGesture (IWKWebExtensionTab tab);
+
+ [Export ("openWindows", ArgumentSemantic.Copy)]
+ IWKWebExtensionWindow [] OpenWindows { get; }
+
+ [NullAllowed, Export ("focusedWindow", ArgumentSemantic.Weak)]
+ IWKWebExtensionWindow FocusedWindow { get; }
+
+ [Export ("openTabs", ArgumentSemantic.Copy)]
+ NSSet OpenTabs { get; }
+
+ [Export ("didOpenWindow:")]
+ void DidOpenWindow (IWKWebExtensionWindow newWindow);
+
+ [Export ("didCloseWindow:")]
+ void DidCloseWindow (IWKWebExtensionWindow closedWindow);
+
+ [Export ("didFocusWindow:")]
+ void DidFocusWindow ([NullAllowed] IWKWebExtensionWindow focusedWindow);
+
+ [Export ("didOpenTab:")]
+ void DidOpenTab (IWKWebExtensionTab newTab);
+
+ [Export ("didCloseTab:windowIsClosing:")]
+ void DidCloseTab (IWKWebExtensionTab closedTab, bool windowIsClosing);
+
+ [Export ("didActivateTab:previousActiveTab:")]
+ void DidActivateTab (IWKWebExtensionTab activatedTab, [NullAllowed] IWKWebExtensionTab previousTab);
+
+ [Export ("didSelectTabs:")]
+ void DidSelectTabs (IWKWebExtensionTab [] selectedTabs);
+
+ [Export ("didDeselectTabs:")]
+ void DidDeselectTabs (IWKWebExtensionTab [] deselectedTabs);
+
+ [Export ("didMoveTab:fromIndex:inWindow:")]
+ void DidMoveTab (IWKWebExtensionTab movedTab, nuint index, [NullAllowed] IWKWebExtensionWindow oldWindow);
+
+ [Export ("didReplaceTab:withTab:")]
+ void DidReplaceTab (IWKWebExtensionTab oldTab, IWKWebExtensionTab newTab);
+
+ [Export ("didChangeTabProperties:forTab:")]
+ void DidChangeTabProperties (WKWebExtensionTabChangedProperties properties, IWKWebExtensionTab changedTab);
+
+ [Notification]
+ [Field ("WKWebExtensionContextErrorsDidUpdateNotification")]
+ NSString ErrorsDidUpdateNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextPermissionsWereGrantedNotification")]
+ NSString PermissionsWereGrantedNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextPermissionsWereDeniedNotification")]
+ NSString PermissionsWereDeniedNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextGrantedPermissionsWereRemovedNotification")]
+ NSString GrantedPermissionsWereRemovedNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextDeniedPermissionsWereRemovedNotification")]
+ NSString DeniedPermissionsWereRemovedNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextPermissionMatchPatternsWereGrantedNotification")]
+ NSString PermissionMatchPatternsWereGrantedNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextPermissionMatchPatternsWereDeniedNotification")]
+ NSString PermissionMatchPatternsWereDeniedNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextGrantedPermissionMatchPatternsWereRemovedNotification")]
+ NSString GrantedPermissionMatchPatternsWereRemovedNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextDeniedPermissionMatchPatternsWereRemovedNotification")]
+ NSString DeniedPermissionMatchPatternsWereRemovedNotification { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextNotificationUserInfoKeyPermissions")]
+ NSString NotificationUserInfoKeyPermissions { get; }
+
+ [Notification]
+ [Field ("WKWebExtensionContextNotificationUserInfoKeyMatchPatterns")]
+ NSString NotificationUserInfoKeyMatchPatterns { get; }
+ }
+
+ delegate void WKWebExtensionControllerDelegateOpenNewWindowCallback ([NullAllowed] IWKWebExtensionWindow newWindow, [NullAllowed] NSError error);
+ delegate void WKWebExtensionControllerDelegateOpenNewTabCallback ([NullAllowed] IWKWebExtensionTab newWindow, [NullAllowed] NSError error);
+ delegate void WKWebExtensionControllerDelegateOpenOptionsCallback ([NullAllowed] NSError error);
+ delegate void WKWebExtensionControllerDelegatePromptForPermissionsCallback (NSSet allowedPermissions, [NullAllowed] NSDate expirationDate);
+ delegate void WKWebExtensionControllerDelegatePromptForPermissionsToAccessUrlsCallback (NSSet allowedUrls, [NullAllowed] NSDate expirationDate);
+ delegate void WKWebExtensionControllerDelegatePromptForPermissionMatchPatternsCallback (NSSet allowedMatchPatterns, [NullAllowed] NSDate expirationDate);
+ delegate void WKWebExtensionControllerDelegatePresentPopupForActionCallback ([NullAllowed] NSError error);
+ delegate void WKWebExtensionControllerDelegateSendMessageCallback ([NullAllowed] NSObject replyMessage, [NullAllowed] NSError error);
+ delegate void WKWebExtensionControllerDelegateConnectCallback ([NullAllowed] NSError error);
+
+ interface IWKWebExtensionControllerDelegate { }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Protocol (BackwardsCompatibleCodeGeneration = false), Model]
+ [BaseType (typeof (NSObject))]
+ interface WKWebExtensionControllerDelegate {
+ [Export ("webExtensionController:openWindowsForExtensionContext:")]
+ IWKWebExtensionWindow [] OpenWindows (WKWebExtensionController controller, WKWebExtensionContext extensionContext);
+
+ [Export ("webExtensionController:focusedWindowForExtensionContext:")]
+ [return: NullAllowed]
+ IWKWebExtensionWindow GetFocusedWindow (WKWebExtensionController controller, WKWebExtensionContext extensionContext);
+
+ [Async]
+ [Export ("webExtensionController:openNewWindowUsingConfiguration:forExtensionContext:completionHandler:")]
+ void OpenNewWindow (WKWebExtensionController controller, WKWebExtensionWindowConfiguration configuration, WKWebExtensionContext extensionContext, WKWebExtensionControllerDelegateOpenNewWindowCallback completionHandler);
+
+ [Async]
+ [Export ("webExtensionController:openNewTabUsingConfiguration:forExtensionContext:completionHandler:")]
+ void OpenNewTab (WKWebExtensionController controller, WKWebExtensionTabConfiguration configuration, WKWebExtensionContext extensionContext, WKWebExtensionControllerDelegateOpenNewTabCallback completionHandler);
+
+ [Async]
+ [Export ("webExtensionController:openOptionsPageForExtensionContext:completionHandler:")]
+ void OpenOptions (WKWebExtensionController controller, WKWebExtensionContext extensionContext, WKWebExtensionControllerDelegateOpenOptionsCallback completionHandler);
+
+ [Export ("webExtensionController:promptForPermissions:inTab:forExtensionContext:completionHandler:")]
+ void PromptForPermissions (WKWebExtensionController controller, NSSet permissions, [NullAllowed] IWKWebExtensionTab tab, WKWebExtensionContext extensionContext, WKWebExtensionControllerDelegatePromptForPermissionsCallback completionHandler);
+
+ [Export ("webExtensionController:promptForPermissionToAccessURLs:inTab:forExtensionContext:completionHandler:")]
+ void PromptForPermissionsToAccessUrls (WKWebExtensionController controller, NSSet urls, [NullAllowed] IWKWebExtensionTab tab, WKWebExtensionContext extensionContext, WKWebExtensionControllerDelegatePromptForPermissionsToAccessUrlsCallback completionHandler);
+
+ [Export ("webExtensionController:promptForPermissionMatchPatterns:inTab:forExtensionContext:completionHandler:")]
+ void PromptForPermissionMatchPatterns (WKWebExtensionController controller, NSSet matchPatterns, [NullAllowed] IWKWebExtensionTab tab, WKWebExtensionContext extensionContext, WKWebExtensionControllerDelegatePromptForPermissionMatchPatternsCallback completionHandler);
+
+ [Export ("webExtensionController:didUpdateAction:forExtensionContext:")]
+ void DidUpdateAction (WKWebExtensionController controller, WKWebExtensionAction action, WKWebExtensionContext context);
+
+ [Export ("webExtensionController:presentPopupForAction:forExtensionContext:completionHandler:")]
+ void PresentPopupForAction (WKWebExtensionController controller, WKWebExtensionAction action, WKWebExtensionContext context, WKWebExtensionControllerDelegatePresentPopupForActionCallback completionHandler);
+
+ [Async]
+ [Export ("webExtensionController:sendMessage:toApplicationWithIdentifier:forExtensionContext:replyHandler:")]
+ void SendMessage (WKWebExtensionController controller, NSObject message, [NullAllowed] string applicationIdentifier, WKWebExtensionContext extensionContext, WKWebExtensionControllerDelegateSendMessageCallback replyHandler);
+
+ [Async]
+ [Export ("webExtensionController:connectUsingMessagePort:forExtensionContext:completionHandler:")]
+ void Connect (WKWebExtensionController controller, WKWebExtensionMessagePort port, WKWebExtensionContext extensionContext, WKWebExtensionControllerDelegateConnectCallback completionHandler);
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Flags]
+ enum WKWebExtensionDataType {
+ [Field ("WKWebExtensionDataTypeLocal")]
+ Local = 1,
+
+ [Field ("WKWebExtensionDataTypeSession")]
+ Session = 2,
+
+ [Field ("WKWebExtensionDataTypeSynchronized")]
+ Synchronized = 4,
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Native]
+ public enum WKWebExtensionWindowType : long {
+ Normal,
+ Popup,
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Native]
+ public enum WKWebExtensionWindowState : long {
+ Normal,
+ Minimized,
+ Maximized,
+ Fullscreen,
+ }
+
+ delegate void WKWebExtensionWindowCallback ([NullAllowed] NSError error);
+
+ interface IWKWebExtensionWindow { }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Protocol (BackwardsCompatibleCodeGeneration = false)]
+ interface WKWebExtensionWindow {
+ [Export ("tabsForWebExtensionContext:")]
+ IWKWebExtensionTab [] GetTabs (WKWebExtensionContext context);
+
+ [Export ("activeTabForWebExtensionContext:")]
+ [return: NullAllowed]
+ IWKWebExtensionTab ActiveTab (WKWebExtensionContext context);
+
+ [Export ("windowTypeForWebExtensionContext:")]
+ WKWebExtensionWindowType GetWindowType (WKWebExtensionContext context);
+
+ [Export ("windowStateForWebExtensionContext:")]
+ WKWebExtensionWindowState GetWindowState (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("setWindowState:forWebExtensionContext:completionHandler:")]
+ void SetWindowState (WKWebExtensionWindowState state, WKWebExtensionContext context, WKWebExtensionWindowCallback completionHandler);
+
+ [Export ("isPrivateForWebExtensionContext:")]
+ bool IsPrivate (WKWebExtensionContext context);
+
+#if MONOMAC
+ [Export ("screenFrameForWebExtensionContext:")]
+ CGRect GetScreenFrame (WKWebExtensionContext context);
+#endif
+
+ [Export ("frameForWebExtensionContext:")]
+ CGRect GetFrame (WKWebExtensionContext context);
+
+ [Async]
+ [Export ("setFrame:forWebExtensionContext:completionHandler:")]
+ void SetFrame (CGRect frame, WKWebExtensionContext context, WKWebExtensionWindowCallback completionHandler);
+
+ [Async]
+ [Export ("focusForWebExtensionContext:completionHandler:")]
+ void Focus (WKWebExtensionContext context, WKWebExtensionWindowCallback completionHandler);
+
+ [Async]
+ [Export ("closeForWebExtensionContext:completionHandler:")]
+ void Close (WKWebExtensionContext context, WKWebExtensionWindowCallback completionHandler);
+ }
+
+ delegate void WKWebExtensionControllerDataRecordCallback (WKWebExtensionDataRecord dataRecord);
+ delegate void WKWebExtensionControllerDataRecordsCallback (WKWebExtensionDataRecord [] dataRecords);
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor] // added below to get the DesignatedInitializer attribute
+ interface WKWebExtensionController {
+ [DesignatedInitializer]
+ [Export ("init")]
+ NativeHandle Constructor ();
+
+ [Export ("initWithConfiguration:")]
+ [DesignatedInitializer]
+ NativeHandle Constructor (WKWebExtensionControllerConfiguration configuration);
+
+ [Wrap ("WeakDelegate")]
+ [NullAllowed]
+ IWKWebExtensionControllerDelegate Delegate { get; set; }
+
+ [NullAllowed, Export ("delegate", ArgumentSemantic.Weak)]
+ NSObject WeakDelegate { get; set; }
+
+ [Export ("configuration", ArgumentSemantic.Copy)]
+ WKWebExtensionControllerConfiguration Configuration { get; }
+
+ [Export ("loadExtensionContext:error:")]
+ bool LoadExtensionContext (WKWebExtensionContext extensionContext, [NullAllowed] out NSError error);
+
+ [Export ("unloadExtensionContext:error:")]
+ bool UnloadExtensionContext (WKWebExtensionContext extensionContext, [NullAllowed] out NSError error);
+
+ [Export ("extensionContextForExtension:")]
+ [return: NullAllowed]
+ WKWebExtensionContext GetExtensionContext (WKWebExtension extension);
+
+ [Export ("extensionContextForURL:")]
+ [return: NullAllowed]
+ WKWebExtensionContext GetExtensionContext (NSUrl url);
+
+ [Export ("extensions", ArgumentSemantic.Copy)]
+ NSSet Extensions { get; }
+
+ [Export ("extensionContexts", ArgumentSemantic.Copy)]
+ NSSet ExtensionContexts { get; }
+
+ [Static]
+ [Export ("allExtensionDataTypes", ArgumentSemantic.Copy)]
+ NSSet WeakAllExtensionDataTypes { get; }
+
+ [Static]
+ WKWebExtensionDataType AllExtensionDataTypes {
+ [Wrap ("WKWebExtensionDataTypeExtensions.ToFlags (WeakAllExtensionDataTypes);")]
+ get;
+ }
+
+ [Async]
+ [Export ("fetchDataRecordsOfTypes:completionHandler:")]
+ void FetchDataRecords (NSSet dataTypes, WKWebExtensionControllerDataRecordsCallback completionHandler);
+
+ [Async]
+ [Wrap ("FetchDataRecords (new NSSet (dataTypes.ToArray ()), completionHandler);")]
+ void FetchDataRecords (WKWebExtensionDataType dataTypes, WKWebExtensionControllerDataRecordsCallback completionHandler);
+
+ [Async]
+ [Export ("fetchDataRecordOfTypes:forExtensionContext:completionHandler:")]
+ void FetchDataRecord (NSSet dataTypes, WKWebExtensionContext extensionContext, WKWebExtensionControllerDataRecordCallback completionHandler);
+
+ [Async]
+ [Wrap ("FetchDataRecord (new NSSet (dataTypes.ToArray ()), extensionContext, completionHandler);")]
+ void FetchDataRecord (WKWebExtensionDataType dataTypes, WKWebExtensionContext extensionContext, WKWebExtensionControllerDataRecordCallback completionHandler);
+
+ [Async]
+ [Export ("removeDataOfTypes:fromDataRecords:completionHandler:")]
+ void RemoveData (NSSet dataTypes, WKWebExtensionDataRecord [] dataRecords, Action completionHandler);
+
+ [Async]
+ [Wrap ("RemoveData (new NSSet (dataTypes.ToArray ()), dataRecords, completionHandler);")]
+ void RemoveData (WKWebExtensionDataType dataTypes, WKWebExtensionDataRecord [] dataRecords, Action completionHandler);
+
+ [Export ("didOpenWindow:")]
+ void DidOpenWindow (IWKWebExtensionWindow newWindow);
+
+ [Export ("didCloseWindow:")]
+ void DidCloseWindow (IWKWebExtensionWindow closedWindow);
+
+ [Export ("didFocusWindow:")]
+ void DidFocusWindow ([NullAllowed] IWKWebExtensionWindow focusedWindow);
+
+ [Export ("didOpenTab:")]
+ void DidOpenTab (IWKWebExtensionTab newTab);
+
+ [Export ("didCloseTab:windowIsClosing:")]
+ void DidCloseTab (IWKWebExtensionTab closedTab, bool windowIsClosing);
+
+ [Export ("didActivateTab:previousActiveTab:")]
+ void DidActivateTab (IWKWebExtensionTab activatedTab, [NullAllowed] IWKWebExtensionTab previousTab);
+
+ [Export ("didSelectTabs:")]
+ void DidSelectTabs (IWKWebExtensionTab [] selectedTabs);
+
+ [Export ("didDeselectTabs:")]
+ void DidDeselectTabs (IWKWebExtensionTab [] deselectedTabs);
+
+ [Export ("didMoveTab:fromIndex:inWindow:")]
+ void DidMoveTab (IWKWebExtensionTab movedTab, nuint index, [NullAllowed] IWKWebExtensionWindow oldWindow);
+
+ [Export ("didReplaceTab:withTab:")]
+ void DidReplaceTab (IWKWebExtensionTab oldTab, IWKWebExtensionTab newTab);
+
+ [Export ("didChangeTabProperties:forTab:")]
+ void DidChangeTabProperties (WKWebExtensionTabChangedProperties properties, IWKWebExtensionTab changedTab);
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionControllerConfiguration : NSSecureCoding, NSCopying {
+ [Static]
+ [Export ("defaultConfiguration")]
+ WKWebExtensionControllerConfiguration GetDefaultConfiguration ();
+
+ [Static]
+ [Export ("nonPersistentConfiguration")]
+ WKWebExtensionControllerConfiguration GetNonPersistentConfiguration ();
+
+ [Static]
+ [Export ("configurationWithIdentifier:")]
+ WKWebExtensionControllerConfiguration Create (NSUuid identifier);
+
+ [Export ("persistent")]
+ bool Persistent { [Bind ("isPersistent")] get; }
+
+ [NullAllowed, Export ("identifier", ArgumentSemantic.Copy)]
+ NSUuid Identifier { get; }
+
+ [NullAllowed, Export ("webViewConfiguration", ArgumentSemantic.Copy)]
+ WKWebViewConfiguration WebViewConfiguration { get; set; }
+
+ [NullAllowed, Export ("defaultWebsiteDataStore", ArgumentSemantic.Retain)]
+ WKWebsiteDataStore DefaultWebsiteDataStore { get; set; }
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Native]
+ [ErrorDomain ("WKWebExtensionDataRecordErrorDomain")]
+ public enum WKWebExtensionDataRecordError : long {
+ Unknown = 1,
+ LocalStorageFailed,
+ SessionStorageFailed,
+ SynchronizedStorageFailed,
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionDataRecord {
+ [Export ("displayName")]
+ string DisplayName { get; }
+
+ [Export ("uniqueIdentifier")]
+ string UniqueIdentifier { get; }
+
+ [Export ("containedDataTypes", ArgumentSemantic.Copy)]
+ NSSet WeakContainedDataTypes { get; }
+
+ WKWebExtensionDataType ContainedDataTypes {
+ [Wrap ("WKWebExtensionDataTypeExtensions.ToFlags (WeakContainedDataTypes);")]
+ get;
+ }
+
+ [Export ("errors", ArgumentSemantic.Copy)]
+ NSError [] Errors { get; }
+
+ [Export ("totalSizeInBytes")]
+ nuint TotalSizeInBytes { get; }
+
+ [Export ("sizeInBytesOfTypes:")]
+ nuint GetSizeInBytes (NSSet dataTypes);
+
+ [Wrap ("GetSizeInBytes (new NSSet (dataTypes.ToArray ()));")]
+ nuint GetSizeInBytes (WKWebExtensionDataType dataTypes);
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Native]
+ [ErrorDomain ("WKWebExtensionMessagePortErrorDomain")]
+ public enum WKWebExtensionMessagePortError : long {
+ Unknown = 1,
+ NotConnected,
+ MessageInvalid,
+ }
+
+ delegate void WKWebExtensionMessagePortMessageHandlerCallback ([NullAllowed] NSObject message, [NullAllowed] NSError error);
+ delegate void WKWebExtensionMessagePortDisconnectHandlerCallback ([NullAllowed] NSError error);
+ delegate void WKWebExtensionMessagePortSendMessageCallback ([NullAllowed] NSError error);
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionMessagePort {
+ [NullAllowed, Export ("applicationIdentifier")]
+ string ApplicationIdentifier { get; }
+
+ [NullAllowed, Export ("messageHandler", ArgumentSemantic.Copy)]
+ WKWebExtensionMessagePortMessageHandlerCallback MessageHandler { get; set; }
+
+ [NullAllowed, Export ("disconnectHandler", ArgumentSemantic.Copy)]
+ WKWebExtensionMessagePortDisconnectHandlerCallback DisconnectHandler { get; set; }
+
+ [Export ("disconnected")]
+ bool Disconnected { [Bind ("isDisconnected")] get; }
+
+ [Async]
+ [Export ("sendMessage:completionHandler:")]
+ void SendMessage ([NullAllowed] NSObject message, [NullAllowed] WKWebExtensionMessagePortSendMessageCallback completionHandler);
+
+ [Export ("disconnect")]
+ void Disconnect ();
+
+ [Export ("disconnectWithError:")]
+ void Disconnect ([NullAllowed] NSError error);
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionTabConfiguration {
+ [NullAllowed, Export ("window", ArgumentSemantic.Strong)]
+ IWKWebExtensionWindow Window { get; }
+
+ [Export ("index")]
+ nuint Index { get; }
+
+ [NullAllowed, Export ("parentTab", ArgumentSemantic.Strong)]
+ IWKWebExtensionTab ParentTab { get; }
+
+ [NullAllowed, Export ("url", ArgumentSemantic.Copy)]
+ NSUrl Url { get; }
+
+ [Export ("shouldBeActive")]
+ bool ShouldBeActive { get; }
+
+ [Export ("shouldAddToSelection")]
+ bool ShouldAddToSelection { get; }
+
+ [Export ("shouldBePinned")]
+ bool ShouldBePinned { get; }
+
+ [Export ("shouldBeMuted")]
+ bool ShouldBeMuted { get; }
+
+ [Export ("shouldReaderModeBeActive")]
+ bool ShouldReaderModeBeActive { get; }
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionWindowConfiguration {
+ [Export ("windowType")]
+ WKWebExtensionWindowType WindowType { get; }
+
+ [Export ("windowState")]
+ WKWebExtensionWindowState WindowState { get; }
+
+ [Export ("frame")]
+ CGRect Frame { get; }
+
+ [Export ("tabURLs", ArgumentSemantic.Copy)]
+ NSUrl [] TabUrls { get; }
+
+ [Export ("tabs", ArgumentSemantic.Copy)]
+ IWKWebExtensionTab [] Tabs { get; }
+
+ [Export ("shouldBeFocused")]
+ bool ShouldBeFocused { get; }
+
+ [Export ("shouldBePrivate")]
+ bool ShouldBePrivate { get; }
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [ErrorDomain ("WKWebExtensionMatchPatternErrorDomain")]
+ [Native]
+ public enum WKWebExtensionMatchPatternError : long {
+ Unknown = 1,
+ InvalidScheme,
+ InvalidHost,
+ InvalidPath,
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Native]
+ [Flags]
+ public enum WKWebExtensionMatchPatternOptions : ulong {
+ None = 0,
+ IgnoreSchemes = 1uL << 0,
+ IgnorePaths = 1uL << 1,
+ MatchBidirectionally = 1uL << 2,
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [BaseType (typeof (NSObject))]
+ [DisableDefaultCtor]
+ interface WKWebExtensionMatchPattern : NSSecureCoding, NSCopying {
+ [Static]
+ [Export ("registerCustomURLScheme:")]
+ void RegisterCustomUrlScheme (string urlScheme);
+
+ [Static]
+ [Export ("allURLsMatchPattern")]
+ WKWebExtensionMatchPattern GetAllUrlsMatchPattern ();
+
+ [Static]
+ [Export ("allHostsAndSchemesMatchPattern")]
+ WKWebExtensionMatchPattern GetAllHostsAndSchemesMatchPattern ();
+
+ [Static]
+ [Export ("matchPatternWithString:")]
+ [return: NullAllowed]
+ WKWebExtensionMatchPattern Create (string @string);
+
+ [Static]
+ [Export ("matchPatternWithScheme:host:path:")]
+ [return: NullAllowed]
+ WKWebExtensionMatchPattern Create (string scheme, string host, string path);
+
+ [Export ("initWithString:error:")]
+ [Internal]
+ NativeHandle _InitWithString (string @string, [NullAllowed] out NSError error);
+
+ [Export ("initWithScheme:host:path:error:")]
+ [Internal]
+ NativeHandle _InitWithScheme (string scheme, string host, string path, [NullAllowed] out NSError error);
+
+ [Export ("string")]
+ string String { get; }
+
+ [NullAllowed, Export ("scheme")]
+ string Scheme { get; }
+
+ [NullAllowed, Export ("host")]
+ string Host { get; }
+
+ [NullAllowed, Export ("path")]
+ string Path { get; }
+
+ [Export ("matchesAllURLs")]
+ bool MatchesAllUrls { get; }
+
+ [Export ("matchesAllHosts")]
+ bool MatchesAllHosts { get; }
+
+ [Export ("matchesURL:")]
+ bool MatchesUrl ([NullAllowed] NSUrl url);
+
+ [Export ("matchesURL:options:")]
+ bool MatchesUrl ([NullAllowed] NSUrl url, WKWebExtensionMatchPatternOptions options);
+
+ [Export ("matchesPattern:")]
+ bool MatchesPattern ([NullAllowed] WKWebExtensionMatchPattern pattern);
+
+ [Export ("matchesPattern:options:")]
+ bool MatchesPattern ([NullAllowed] WKWebExtensionMatchPattern pattern, WKWebExtensionMatchPatternOptions options);
+ }
+
+ [Mac (15, 4), iOS (18, 4), MacCatalyst (18, 4), NoTV]
+ [Flags]
+ enum WKWebExtensionPermission {
+ [Field ("WKWebExtensionPermissionActiveTab")]
+ ActiveTab = 1 << 0,
+
+ [Field ("WKWebExtensionPermissionAlarms")]
+ Alarms = 1 << 1,
+
+ [Field ("WKWebExtensionPermissionClipboardWrite")]
+ ClipboardWrite = 1 << 2,
+
+ [Field ("WKWebExtensionPermissionContextMenus")]
+ ContextMenus = 1 << 3,
+
+ [Field ("WKWebExtensionPermissionCookies")]
+ Cookies = 1 << 4,
+
+ [Field ("WKWebExtensionPermissionDeclarativeNetRequest")]
+ DeclarativeNetRequest = 1 << 5,
+
+ [Field ("WKWebExtensionPermissionDeclarativeNetRequestFeedback")]
+ DeclarativeNetRequestFeedback = 1 << 6,
+
+ [Field ("WKWebExtensionPermissionDeclarativeNetRequestWithHostAccess")]
+ DeclarativeNetRequestWithHostAccess = 1 << 7,
+
+ [Field ("WKWebExtensionPermissionMenus")]
+ Menus = 1 << 8,
+
+ [Field ("WKWebExtensionPermissionNativeMessaging")]
+ NativeMessaging = 1 << 9,
+
+ [Field ("WKWebExtensionPermissionScripting")]
+ Scripting = 1 << 10,
+
+ [Field ("WKWebExtensionPermissionStorage")]
+ Storage = 1 << 11,
+
+ [Field ("WKWebExtensionPermissionTabs")]
+ Tabs = 1 << 12,
+
+ [Field ("WKWebExtensionPermissionUnlimitedStorage")]
+ UnlimitedStorage = 1 << 13,
+
+ [Field ("WKWebExtensionPermissionWebNavigation")]
+ WebNavigation = 1 << 14,
+
+ [Field ("WKWebExtensionPermissionWebRequest")]
+ WebRequest = 1 << 15,
+ }
}
diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt
index 0b205888701e..86389e087af1 100644
--- a/tests/cecil-tests/Documentation.KnownFailures.txt
+++ b/tests/cecil-tests/Documentation.KnownFailures.txt
@@ -13194,6 +13194,78 @@ F:WebKit.WKUserInterfaceDirectionPolicy.Content
F:WebKit.WKUserInterfaceDirectionPolicy.System
F:WebKit.WKUserScriptInjectionTime.AtDocumentEnd
F:WebKit.WKUserScriptInjectionTime.AtDocumentStart
+F:WebKit.WKWebExtensionContextError.AlreadyLoaded
+F:WebKit.WKWebExtensionContextError.BackgroundContentFailedToLoad
+F:WebKit.WKWebExtensionContextError.BaseUrlAlreadyInUse
+F:WebKit.WKWebExtensionContextError.NoBackgroundContent
+F:WebKit.WKWebExtensionContextError.NotLoaded
+F:WebKit.WKWebExtensionContextError.Unknown
+F:WebKit.WKWebExtensionContextPermissionStatus.DeniedExplicitly
+F:WebKit.WKWebExtensionContextPermissionStatus.DeniedImplicitly
+F:WebKit.WKWebExtensionContextPermissionStatus.GrantedExplicitly
+F:WebKit.WKWebExtensionContextPermissionStatus.GrantedImplicitly
+F:WebKit.WKWebExtensionContextPermissionStatus.RequestedExplicitly
+F:WebKit.WKWebExtensionContextPermissionStatus.RequestedImplicitly
+F:WebKit.WKWebExtensionContextPermissionStatus.Unknown
+F:WebKit.WKWebExtensionDataRecordError.LocalStorageFailed
+F:WebKit.WKWebExtensionDataRecordError.SessionStorageFailed
+F:WebKit.WKWebExtensionDataRecordError.SynchronizedStorageFailed
+F:WebKit.WKWebExtensionDataRecordError.Unknown
+F:WebKit.WKWebExtensionDataType.Local
+F:WebKit.WKWebExtensionDataType.Session
+F:WebKit.WKWebExtensionDataType.Synchronized
+F:WebKit.WKWebExtensionError.InvalidArchive
+F:WebKit.WKWebExtensionError.InvalidBackgroundPersistence
+F:WebKit.WKWebExtensionError.InvalidDeclarativeNetRequestEntry
+F:WebKit.WKWebExtensionError.InvalidManifest
+F:WebKit.WKWebExtensionError.InvalidManifestEntry
+F:WebKit.WKWebExtensionError.InvalidResourceCodeSignature
+F:WebKit.WKWebExtensionError.ResourceNotFound
+F:WebKit.WKWebExtensionError.Unknown
+F:WebKit.WKWebExtensionError.UnsupportedManifestVersion
+F:WebKit.WKWebExtensionMatchPatternError.InvalidHost
+F:WebKit.WKWebExtensionMatchPatternError.InvalidPath
+F:WebKit.WKWebExtensionMatchPatternError.InvalidScheme
+F:WebKit.WKWebExtensionMatchPatternError.Unknown
+F:WebKit.WKWebExtensionMatchPatternOptions.IgnorePaths
+F:WebKit.WKWebExtensionMatchPatternOptions.IgnoreSchemes
+F:WebKit.WKWebExtensionMatchPatternOptions.MatchBidirectionally
+F:WebKit.WKWebExtensionMatchPatternOptions.None
+F:WebKit.WKWebExtensionMessagePortError.MessageInvalid
+F:WebKit.WKWebExtensionMessagePortError.NotConnected
+F:WebKit.WKWebExtensionMessagePortError.Unknown
+F:WebKit.WKWebExtensionPermission.ActiveTab
+F:WebKit.WKWebExtensionPermission.Alarms
+F:WebKit.WKWebExtensionPermission.ClipboardWrite
+F:WebKit.WKWebExtensionPermission.ContextMenus
+F:WebKit.WKWebExtensionPermission.Cookies
+F:WebKit.WKWebExtensionPermission.DeclarativeNetRequest
+F:WebKit.WKWebExtensionPermission.DeclarativeNetRequestFeedback
+F:WebKit.WKWebExtensionPermission.DeclarativeNetRequestWithHostAccess
+F:WebKit.WKWebExtensionPermission.Menus
+F:WebKit.WKWebExtensionPermission.NativeMessaging
+F:WebKit.WKWebExtensionPermission.Scripting
+F:WebKit.WKWebExtensionPermission.Storage
+F:WebKit.WKWebExtensionPermission.Tabs
+F:WebKit.WKWebExtensionPermission.UnlimitedStorage
+F:WebKit.WKWebExtensionPermission.WebNavigation
+F:WebKit.WKWebExtensionPermission.WebRequest
+F:WebKit.WKWebExtensionTabChangedProperties.Loading
+F:WebKit.WKWebExtensionTabChangedProperties.Muted
+F:WebKit.WKWebExtensionTabChangedProperties.None
+F:WebKit.WKWebExtensionTabChangedProperties.Pinned
+F:WebKit.WKWebExtensionTabChangedProperties.PlayingAudio
+F:WebKit.WKWebExtensionTabChangedProperties.ReaderMode
+F:WebKit.WKWebExtensionTabChangedProperties.Size
+F:WebKit.WKWebExtensionTabChangedProperties.Title
+F:WebKit.WKWebExtensionTabChangedProperties.Url
+F:WebKit.WKWebExtensionTabChangedProperties.ZoomFactor
+F:WebKit.WKWebExtensionWindowState.Fullscreen
+F:WebKit.WKWebExtensionWindowState.Maximized
+F:WebKit.WKWebExtensionWindowState.Minimized
+F:WebKit.WKWebExtensionWindowState.Normal
+F:WebKit.WKWebExtensionWindowType.Normal
+F:WebKit.WKWebExtensionWindowType.Popup
F:WebKit.WKWebpagePreferencesUpgradeToHttpsPolicy.AutomaticFallbackToHttp
F:WebKit.WKWebpagePreferencesUpgradeToHttpsPolicy.ErrorOnFailure
F:WebKit.WKWebpagePreferencesUpgradeToHttpsPolicy.KeepAsRequested
@@ -39907,6 +39979,7 @@ M:WebKit.IWKNavigationDelegate.DidStartProvisionalNavigation(WebKit.WKWebView,We
M:WebKit.IWKNavigationDelegate.NavigationActionDidBecomeDownload(WebKit.WKWebView,WebKit.WKNavigationAction,WebKit.WKDownload)
M:WebKit.IWKNavigationDelegate.NavigationResponseDidBecomeDownload(WebKit.WKWebView,WebKit.WKNavigationResponse,WebKit.WKDownload)
M:WebKit.IWKNavigationDelegate.ShouldAllowDeprecatedTls(WebKit.WKWebView,Foundation.NSUrlAuthenticationChallenge,System.Action{System.Boolean})
+M:WebKit.IWKNavigationDelegate.ShouldGoToBackForwardListItem(WebKit.WKWebView,WebKit.WKBackForwardListItem,System.Boolean,WebKit.WKNavigationDelegateShouldGoToBackForwardListItemCallback)
M:WebKit.IWKScriptMessageHandler.DidReceiveScriptMessage(WebKit.WKUserContentController,WebKit.WKScriptMessage)
M:WebKit.IWKScriptMessageHandlerWithReply.DidReceiveScriptMessage(WebKit.WKUserContentController,WebKit.WKScriptMessage,System.Action{Foundation.NSObject,Foundation.NSString})
M:WebKit.IWKUIDelegate.CommitPreviewingViewController(WebKit.WKWebView,UIKit.UIViewController)
@@ -39935,6 +40008,86 @@ M:WebKit.IWKUrlSchemeTask.DidFailWithError(Foundation.NSError)
M:WebKit.IWKUrlSchemeTask.DidFinish
M:WebKit.IWKUrlSchemeTask.DidReceiveData(Foundation.NSData)
M:WebKit.IWKUrlSchemeTask.DidReceiveResponse(Foundation.NSUrlResponse)
+M:WebKit.IWKWebExtensionControllerDelegate.Connect(WebKit.WKWebExtensionController,WebKit.WKWebExtensionMessagePort,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegateConnectCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.ConnectAsync(WebKit.WKWebExtensionController,WebKit.WKWebExtensionMessagePort,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionControllerDelegate.DidUpdateAction(WebKit.WKWebExtensionController,WebKit.WKWebExtensionAction,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionControllerDelegate.GetFocusedWindow(WebKit.WKWebExtensionController,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionControllerDelegate.OpenNewTab(WebKit.WKWebExtensionController,WebKit.WKWebExtensionTabConfiguration,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegateOpenNewTabCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.OpenNewTabAsync(WebKit.WKWebExtensionController,WebKit.WKWebExtensionTabConfiguration,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionControllerDelegate.OpenNewWindow(WebKit.WKWebExtensionController,WebKit.WKWebExtensionWindowConfiguration,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegateOpenNewWindowCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.OpenNewWindowAsync(WebKit.WKWebExtensionController,WebKit.WKWebExtensionWindowConfiguration,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionControllerDelegate.OpenOptions(WebKit.WKWebExtensionController,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegateOpenOptionsCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.OpenOptionsAsync(WebKit.WKWebExtensionController,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionControllerDelegate.OpenWindows(WebKit.WKWebExtensionController,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionControllerDelegate.PresentPopupForAction(WebKit.WKWebExtensionController,WebKit.WKWebExtensionAction,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegatePresentPopupForActionCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.PromptForPermissionMatchPatterns(WebKit.WKWebExtensionController,Foundation.NSSet{WebKit.WKWebExtensionMatchPattern},WebKit.IWKWebExtensionTab,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegatePromptForPermissionMatchPatternsCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.PromptForPermissions(WebKit.WKWebExtensionController,Foundation.NSSet{Foundation.NSString},WebKit.IWKWebExtensionTab,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegatePromptForPermissionsCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.PromptForPermissionsToAccessUrls(WebKit.WKWebExtensionController,Foundation.NSSet{Foundation.NSUrl},WebKit.IWKWebExtensionTab,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegatePromptForPermissionsToAccessUrlsCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.SendMessage(WebKit.WKWebExtensionController,Foundation.NSObject,System.String,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDelegateSendMessageCallback)
+M:WebKit.IWKWebExtensionControllerDelegate.SendMessageAsync(WebKit.WKWebExtensionController,Foundation.NSObject,System.String,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.Activate(WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.ActivateAsync(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.Close(WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.CloseAsync(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.DetectWebpageLocale(WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabDetectLocaleCallback)
+M:WebKit.IWKWebExtensionTab.DetectWebpageLocaleAsync(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.Duplicate(WebKit.WKWebExtensionTabConfiguration,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabDuplicateCallback)
+M:WebKit.IWKWebExtensionTab.DuplicateAsync(WebKit.WKWebExtensionTabConfiguration,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetIndexInWindow(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetParentTab(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetPendingUrl(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetSize(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetTitle(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetUrl(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetWebView(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetWindow(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GetZoomFactor(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GoBack(WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.GoBackAsync(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.GoForward(WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.GoForwardAsync(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.IsLoadingComplete(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.IsMuted(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.IsPinned(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.IsPlayingAudio(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.IsReaderModeActive(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.IsReaderModeAvailable(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.IsSelected(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.LoadUrl(Foundation.NSUrl,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.LoadUrlAsync(Foundation.NSUrl,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.ReloadFromOrigin(System.Boolean,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.ReloadFromOriginAsync(System.Boolean,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.SetMuted(System.Boolean,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.SetMutedAsync(System.Boolean,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.SetParentTab(WebKit.IWKWebExtensionTab,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.SetParentTabAsync(WebKit.IWKWebExtensionTab,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.SetPinned(System.Boolean,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.SetPinnedAsync(System.Boolean,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.SetReaderModeActive(System.Boolean,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.SetReaderModeActiveAsync(System.Boolean,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.SetSelected(System.Boolean,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.SetSelectedAsync(System.Boolean,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.SetZoomFactor(System.Double,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabCallback)
+M:WebKit.IWKWebExtensionTab.SetZoomFactorAsync(System.Double,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.ShouldBypassPermissions(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.ShouldGrantPermissionsOnUserGesture(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionTab.TakeSnapshot(WebKit.WKSnapshotConfiguration,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionTabTakeSnapshotCallback)
+M:WebKit.IWKWebExtensionTab.TakeSnapshotAsync(WebKit.WKSnapshotConfiguration,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.ActiveTab(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.Close(WebKit.WKWebExtensionContext,WebKit.WKWebExtensionWindowCallback)
+M:WebKit.IWKWebExtensionWindow.CloseAsync(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.Focus(WebKit.WKWebExtensionContext,WebKit.WKWebExtensionWindowCallback)
+M:WebKit.IWKWebExtensionWindow.FocusAsync(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.GetFrame(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.GetScreenFrame(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.GetTabs(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.GetWindowState(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.GetWindowType(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.IsPrivate(WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.SetFrame(CoreGraphics.CGRect,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionWindowCallback)
+M:WebKit.IWKWebExtensionWindow.SetFrameAsync(CoreGraphics.CGRect,WebKit.WKWebExtensionContext)
+M:WebKit.IWKWebExtensionWindow.SetWindowState(WebKit.WKWebExtensionWindowState,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionWindowCallback)
+M:WebKit.IWKWebExtensionWindow.SetWindowStateAsync(WebKit.WKWebExtensionWindowState,WebKit.WKWebExtensionContext)
M:WebKit.WebArchive.Copy(Foundation.NSZone)
M:WebKit.WebArchive.EncodeTo(Foundation.NSCoder)
M:WebKit.WebDownloadDelegate_Extensions.OnDownloadWindowForSheet(WebKit.IWebDownloadDelegate,WebKit.WebDownload)
@@ -40189,6 +40342,8 @@ M:WebKit.WKNavigationDelegate_Extensions.DidStartProvisionalNavigation(WebKit.IW
M:WebKit.WKNavigationDelegate_Extensions.NavigationActionDidBecomeDownload(WebKit.IWKNavigationDelegate,WebKit.WKWebView,WebKit.WKNavigationAction,WebKit.WKDownload)
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.WKPdfConfiguration.Copy(Foundation.NSZone)
M:WebKit.WKPreferences.EncodeTo(Foundation.NSCoder)
M:WebKit.WKPreviewElementInfo.Copy(Foundation.NSZone)
@@ -40217,6 +40372,30 @@ M:WebKit.WKUIDelegate_Extensions.WillDismissEditMenu(WebKit.IWKUIDelegate,WebKit
M:WebKit.WKUIDelegate_Extensions.WillPresentEditMenu(WebKit.IWKUIDelegate,WebKit.WKWebView,UIKit.IUIEditMenuInteractionAnimating)
M:WebKit.WKUserContentController.EncodeTo(Foundation.NSCoder)
M:WebKit.WKUserScript.Copy(Foundation.NSZone)
+M:WebKit.WKWebExtension.CreateAsync(Foundation.NSBundle)
+M:WebKit.WKWebExtension.CreateAsync(Foundation.NSUrl)
+M:WebKit.WKWebExtensionAction.Dispose(System.Boolean)
+M:WebKit.WKWebExtensionCommand.Dispose(System.Boolean)
+M:WebKit.WKWebExtensionContext.Dispose(System.Boolean)
+M:WebKit.WKWebExtensionContext.LoadBackgroundContentAsync
+M:WebKit.WKWebExtensionController.Dispose(System.Boolean)
+M:WebKit.WKWebExtensionController.FetchDataRecord(WebKit.WKWebExtensionDataType,WebKit.WKWebExtensionContext,WebKit.WKWebExtensionControllerDataRecordCallback)
+M:WebKit.WKWebExtensionController.FetchDataRecordAsync(Foundation.NSSet{Foundation.NSString},WebKit.WKWebExtensionContext)
+M:WebKit.WKWebExtensionController.FetchDataRecordAsync(WebKit.WKWebExtensionDataType,WebKit.WKWebExtensionContext)
+M:WebKit.WKWebExtensionController.FetchDataRecords(WebKit.WKWebExtensionDataType,WebKit.WKWebExtensionControllerDataRecordsCallback)
+M:WebKit.WKWebExtensionController.FetchDataRecordsAsync(Foundation.NSSet{Foundation.NSString})
+M:WebKit.WKWebExtensionController.FetchDataRecordsAsync(WebKit.WKWebExtensionDataType)
+M:WebKit.WKWebExtensionController.RemoveData(WebKit.WKWebExtensionDataType,WebKit.WKWebExtensionDataRecord[],System.Action)
+M:WebKit.WKWebExtensionController.RemoveDataAsync(Foundation.NSSet{Foundation.NSString},WebKit.WKWebExtensionDataRecord[])
+M:WebKit.WKWebExtensionController.RemoveDataAsync(WebKit.WKWebExtensionDataType,WebKit.WKWebExtensionDataRecord[])
+M:WebKit.WKWebExtensionControllerConfiguration.Copy(Foundation.NSZone)
+M:WebKit.WKWebExtensionControllerConfiguration.EncodeTo(Foundation.NSCoder)
+M:WebKit.WKWebExtensionDataRecord.GetSizeInBytes(WebKit.WKWebExtensionDataType)
+M:WebKit.WKWebExtensionDataTypeExtensions.ToFlags(System.Collections.Generic.IEnumerable{Foundation.NSString})
+M:WebKit.WKWebExtensionMatchPattern.Copy(Foundation.NSZone)
+M:WebKit.WKWebExtensionMatchPattern.EncodeTo(Foundation.NSCoder)
+M:WebKit.WKWebExtensionMessagePort.SendMessageAsync(Foundation.NSObject)
+M:WebKit.WKWebExtensionPermissionExtensions.ToFlags(System.Collections.Generic.IEnumerable{Foundation.NSString})
M:WebKit.WKWebsiteDataStore.EncodeTo(Foundation.NSCoder)
M:WebKit.WKWebsiteDataStore.FetchAllDataStoreIdentifiersAsync
M:WebKit.WKWebsiteDataStore.FetchDataRecordsOfTypesAsync(Foundation.NSSet{Foundation.NSString})
@@ -54563,6 +54742,28 @@ P:WebKit.WKPreviewActionItemIdentifier.Copy
P:WebKit.WKPreviewActionItemIdentifier.Open
P:WebKit.WKPreviewActionItemIdentifier.Share
P:WebKit.WKUserScript.IsForMainFrameOnly
+P:WebKit.WKWebExtension.OptionalPermissions
+P:WebKit.WKWebExtension.RequestedPermissions
+P:WebKit.WKWebExtensionAction.Enabled
+P:WebKit.WKWebExtensionContext.CurrentPermission
+P:WebKit.WKWebExtensionContext.DeniedPermissionMatchPatternsWereRemovedNotification
+P:WebKit.WKWebExtensionContext.DeniedPermissionsWereRemovedNotification
+P:WebKit.WKWebExtensionContext.ErrorsDidUpdateNotification
+P:WebKit.WKWebExtensionContext.GrantedPermissionMatchPatternsWereRemovedNotification
+P:WebKit.WKWebExtensionContext.GrantedPermissionsWereRemovedNotification
+P:WebKit.WKWebExtensionContext.Inspectable
+P:WebKit.WKWebExtensionContext.Loaded
+P:WebKit.WKWebExtensionContext.NotificationUserInfoKeyMatchPatterns
+P:WebKit.WKWebExtensionContext.NotificationUserInfoKeyPermissions
+P:WebKit.WKWebExtensionContext.PermissionMatchPatternsWereDeniedNotification
+P:WebKit.WKWebExtensionContext.PermissionMatchPatternsWereGrantedNotification
+P:WebKit.WKWebExtensionContext.PermissionsWereDeniedNotification
+P:WebKit.WKWebExtensionContext.PermissionsWereGrantedNotification
+P:WebKit.WKWebExtensionController.AllExtensionDataTypes
+P:WebKit.WKWebExtensionController.Delegate
+P:WebKit.WKWebExtensionControllerConfiguration.Persistent
+P:WebKit.WKWebExtensionDataRecord.ContainedDataTypes
+P:WebKit.WKWebExtensionMessagePort.Disconnected
P:WebKit.WKWebpagePreferences.LockdownModeEnabled
P:WebKit.WKWebsiteDataStore.Persistent
P:WebKit.WKWebsiteDataType.Cookies
@@ -61687,6 +61888,9 @@ T:WebKit.IWebResourceLoadDelegate
T:WebKit.IWebUIDelegate
T:WebKit.IWKDownloadDelegate
T:WebKit.IWKScriptMessageHandlerWithReply
+T:WebKit.IWKWebExtensionControllerDelegate
+T:WebKit.IWKWebExtensionTab
+T:WebKit.IWKWebExtensionWindow
T:WebKit.WebActionMouseButton
T:WebKit.WebCacheModel
T:WebKit.WebDocumentRepresentation
@@ -61765,6 +61969,41 @@ T:WebKit.WKInactiveSchedulingPolicy
T:WebKit.WKMediaCaptureState
T:WebKit.WKMediaCaptureType
T:WebKit.WKMediaPlaybackState
+T:WebKit.WKNavigationDelegateShouldGoToBackForwardListItemCallback
T:WebKit.WKPermissionDecision
T:WebKit.WKUserInterfaceDirectionPolicy
+T:WebKit.WKWebExtensionContextCallback
+T:WebKit.WKWebExtensionContextError
+T:WebKit.WKWebExtensionContextPermissionStatus
+T:WebKit.WKWebExtensionControllerDataRecordCallback
+T:WebKit.WKWebExtensionControllerDataRecordsCallback
+T:WebKit.WKWebExtensionControllerDelegate
+T:WebKit.WKWebExtensionControllerDelegateConnectCallback
+T:WebKit.WKWebExtensionControllerDelegateOpenNewTabCallback
+T:WebKit.WKWebExtensionControllerDelegateOpenNewWindowCallback
+T:WebKit.WKWebExtensionControllerDelegateOpenOptionsCallback
+T:WebKit.WKWebExtensionControllerDelegatePresentPopupForActionCallback
+T:WebKit.WKWebExtensionControllerDelegatePromptForPermissionMatchPatternsCallback
+T:WebKit.WKWebExtensionControllerDelegatePromptForPermissionsCallback
+T:WebKit.WKWebExtensionControllerDelegatePromptForPermissionsToAccessUrlsCallback
+T:WebKit.WKWebExtensionControllerDelegateSendMessageCallback
+T:WebKit.WKWebExtensionCreateCallback
+T:WebKit.WKWebExtensionDataRecordError
+T:WebKit.WKWebExtensionDataType
+T:WebKit.WKWebExtensionError
+T:WebKit.WKWebExtensionMatchPatternError
+T:WebKit.WKWebExtensionMatchPatternOptions
+T:WebKit.WKWebExtensionMessagePortDisconnectHandlerCallback
+T:WebKit.WKWebExtensionMessagePortError
+T:WebKit.WKWebExtensionMessagePortMessageHandlerCallback
+T:WebKit.WKWebExtensionMessagePortSendMessageCallback
+T:WebKit.WKWebExtensionPermission
+T:WebKit.WKWebExtensionTabCallback
+T:WebKit.WKWebExtensionTabChangedProperties
+T:WebKit.WKWebExtensionTabDetectLocaleCallback
+T:WebKit.WKWebExtensionTabDuplicateCallback
+T:WebKit.WKWebExtensionTabTakeSnapshotCallback
+T:WebKit.WKWebExtensionWindowCallback
+T:WebKit.WKWebExtensionWindowState
+T:WebKit.WKWebExtensionWindowType
T:WebKit.WKWebpagePreferencesUpgradeToHttpsPolicy
diff --git a/tests/monotouch-test/WebKit/WKWebExtensionControllerTest.cs b/tests/monotouch-test/WebKit/WKWebExtensionControllerTest.cs
new file mode 100644
index 000000000000..2ee420aa98f3
--- /dev/null
+++ b/tests/monotouch-test/WebKit/WKWebExtensionControllerTest.cs
@@ -0,0 +1,53 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+#if HAS_WEBKIT
+
+using System;
+using System.Linq;
+using System.Numerics;
+using System.Threading;
+
+using Foundation;
+using ObjCRuntime;
+using WebKit;
+
+using NUnit.Framework;
+
+namespace MonoTouchFixtures.WebKit {
+ [TestFixture]
+ [Preserve (AllMembers = true)]
+ public class WKWebExtensionControllerTest {
+ [Test]
+ public void AllExtensionDataTypes ()
+ {
+ TestRuntime.AssertXcodeVersion (16, 3);
+
+ var weak = WKWebExtensionController.WeakAllExtensionDataTypes;
+ var strong = WKWebExtensionController.AllExtensionDataTypes;
+ var strongBitCount = BitOperations.PopCount (unchecked((ulong) strong));
+ Assert.That (strongBitCount, Is.EqualTo ((int) weak.Count), "Count");
+ Assert.That (strongBitCount, Is.GreaterThan (0), ">0");
+ }
+
+ [Test]
+ public void DataRecords ()
+ {
+ TestRuntime.AssertXcodeVersion (16, 3);
+
+ using var obj = new WKWebExtensionController ();
+ var evt = new ManualResetEvent (false);
+ WKWebExtensionDataRecord? [] records = null;
+
+ obj.FetchDataRecords (WKWebExtensionController.AllExtensionDataTypes, (fetchedRecords) => {
+ records = fetchedRecords;
+ evt.Set ();
+ });
+ Assert.That (evt.WaitOne (TimeSpan.FromSeconds (1)), "Wait");
+ Assert.That (records, Is.Not.Null, "Not null");
+ Assert.That (records.Length, Is.EqualTo (0), "No records");
+ }
+ }
+}
+
+#endif // HAS_WEBKIT
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-WebKit.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-WebKit.todo
deleted file mode 100644
index 4d9bea285594..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-WebKit.todo
+++ /dev/null
@@ -1,280 +0,0 @@
-!missing-enum! WKWebExtensionContextError not bound
-!missing-enum! WKWebExtensionContextPermissionStatus not bound
-!missing-enum! WKWebExtensionDataRecordError not bound
-!missing-enum! WKWebExtensionError not bound
-!missing-enum! WKWebExtensionMatchPatternError not bound
-!missing-enum! WKWebExtensionMatchPatternOptions not bound
-!missing-enum! WKWebExtensionMessagePortError not bound
-!missing-enum! WKWebExtensionTabChangedProperties not bound
-!missing-enum! WKWebExtensionWindowState not bound
-!missing-enum! WKWebExtensionWindowType not bound
-!missing-field! WKWebExtensionContextDeniedPermissionMatchPatternsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextDeniedPermissionsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextErrorDomain not bound
-!missing-field! WKWebExtensionContextErrorsDidUpdateNotification not bound
-!missing-field! WKWebExtensionContextGrantedPermissionMatchPatternsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextGrantedPermissionsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextNotificationUserInfoKeyMatchPatterns not bound
-!missing-field! WKWebExtensionContextNotificationUserInfoKeyPermissions not bound
-!missing-field! WKWebExtensionContextPermissionMatchPatternsWereDeniedNotification not bound
-!missing-field! WKWebExtensionContextPermissionMatchPatternsWereGrantedNotification not bound
-!missing-field! WKWebExtensionContextPermissionsWereDeniedNotification not bound
-!missing-field! WKWebExtensionContextPermissionsWereGrantedNotification not bound
-!missing-field! WKWebExtensionDataRecordErrorDomain not bound
-!missing-field! WKWebExtensionDataTypeLocal not bound
-!missing-field! WKWebExtensionDataTypeSession not bound
-!missing-field! WKWebExtensionDataTypeSynchronized not bound
-!missing-field! WKWebExtensionErrorDomain not bound
-!missing-field! WKWebExtensionMatchPatternErrorDomain not bound
-!missing-field! WKWebExtensionMessagePortErrorDomain not bound
-!missing-field! WKWebExtensionPermissionActiveTab not bound
-!missing-field! WKWebExtensionPermissionAlarms not bound
-!missing-field! WKWebExtensionPermissionClipboardWrite not bound
-!missing-field! WKWebExtensionPermissionContextMenus not bound
-!missing-field! WKWebExtensionPermissionCookies not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequest not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequestFeedback not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequestWithHostAccess not bound
-!missing-field! WKWebExtensionPermissionMenus not bound
-!missing-field! WKWebExtensionPermissionNativeMessaging not bound
-!missing-field! WKWebExtensionPermissionScripting not bound
-!missing-field! WKWebExtensionPermissionStorage not bound
-!missing-field! WKWebExtensionPermissionTabs not bound
-!missing-field! WKWebExtensionPermissionUnlimitedStorage not bound
-!missing-field! WKWebExtensionPermissionWebNavigation not bound
-!missing-field! WKWebExtensionPermissionWebRequest not bound
-!missing-protocol! WKWebExtensionControllerDelegate not bound
-!missing-protocol! WKWebExtensionTab not bound
-!missing-protocol! WKWebExtensionWindow not bound
-!missing-protocol-member! WKUIDelegate::webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler: not found
-!missing-selector! +WKWebExtension::extensionWithAppExtensionBundle:completionHandler: not bound
-!missing-selector! +WKWebExtension::extensionWithResourceBaseURL:completionHandler: not bound
-!missing-selector! +WKWebExtensionContext::contextForExtension: not bound
-!missing-selector! +WKWebExtensionController::allExtensionDataTypes not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::configurationWithIdentifier: not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::defaultConfiguration not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::nonPersistentConfiguration not bound
-!missing-selector! +WKWebExtensionMatchPattern::allHostsAndSchemesMatchPattern not bound
-!missing-selector! +WKWebExtensionMatchPattern::allURLsMatchPattern not bound
-!missing-selector! +WKWebExtensionMatchPattern::matchPatternWithScheme:host:path: not bound
-!missing-selector! +WKWebExtensionMatchPattern::matchPatternWithString: not bound
-!missing-selector! +WKWebExtensionMatchPattern::registerCustomURLScheme: not bound
-!missing-selector! WKNavigationAction::buttonNumber not bound
-!missing-selector! WKNavigationAction::modifierFlags not bound
-!missing-selector! WKOpenPanelParameters::allowsDirectories not bound
-!missing-selector! WKOpenPanelParameters::allowsMultipleSelection not bound
-!missing-selector! WKWebExtension::actionIconForSize: not bound
-!missing-selector! WKWebExtension::allRequestedMatchPatterns not bound
-!missing-selector! WKWebExtension::defaultLocale not bound
-!missing-selector! WKWebExtension::displayActionLabel not bound
-!missing-selector! WKWebExtension::displayDescription not bound
-!missing-selector! WKWebExtension::displayName not bound
-!missing-selector! WKWebExtension::displayShortName not bound
-!missing-selector! WKWebExtension::displayVersion not bound
-!missing-selector! WKWebExtension::errors not bound
-!missing-selector! WKWebExtension::hasBackgroundContent not bound
-!missing-selector! WKWebExtension::hasCommands not bound
-!missing-selector! WKWebExtension::hasContentModificationRules not bound
-!missing-selector! WKWebExtension::hasInjectedContent not bound
-!missing-selector! WKWebExtension::hasOptionsPage not bound
-!missing-selector! WKWebExtension::hasOverrideNewTabPage not bound
-!missing-selector! WKWebExtension::hasPersistentBackgroundContent not bound
-!missing-selector! WKWebExtension::iconForSize: not bound
-!missing-selector! WKWebExtension::manifest not bound
-!missing-selector! WKWebExtension::manifestVersion not bound
-!missing-selector! WKWebExtension::optionalPermissionMatchPatterns not bound
-!missing-selector! WKWebExtension::optionalPermissions not bound
-!missing-selector! WKWebExtension::requestedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtension::requestedPermissions not bound
-!missing-selector! WKWebExtension::supportsManifestVersion: not bound
-!missing-selector! WKWebExtension::version not bound
-!missing-selector! WKWebExtensionAction::associatedTab not bound
-!missing-selector! WKWebExtensionAction::badgeText not bound
-!missing-selector! WKWebExtensionAction::closePopup not bound
-!missing-selector! WKWebExtensionAction::hasUnreadBadgeText not bound
-!missing-selector! WKWebExtensionAction::iconForSize: not bound
-!missing-selector! WKWebExtensionAction::inspectionName not bound
-!missing-selector! WKWebExtensionAction::isEnabled not bound
-!missing-selector! WKWebExtensionAction::label not bound
-!missing-selector! WKWebExtensionAction::menuItems not bound
-!missing-selector! WKWebExtensionAction::popupViewController not bound
-!missing-selector! WKWebExtensionAction::popupWebView not bound
-!missing-selector! WKWebExtensionAction::presentsPopup not bound
-!missing-selector! WKWebExtensionAction::setHasUnreadBadgeText: not bound
-!missing-selector! WKWebExtensionAction::setInspectionName: not bound
-!missing-selector! WKWebExtensionAction::webExtensionContext not bound
-!missing-selector! WKWebExtensionCommand::activationKey not bound
-!missing-selector! WKWebExtensionCommand::identifier not bound
-!missing-selector! WKWebExtensionCommand::keyCommand not bound
-!missing-selector! WKWebExtensionCommand::menuItem not bound
-!missing-selector! WKWebExtensionCommand::modifierFlags not bound
-!missing-selector! WKWebExtensionCommand::setActivationKey: not bound
-!missing-selector! WKWebExtensionCommand::setModifierFlags: not bound
-!missing-selector! WKWebExtensionCommand::title not bound
-!missing-selector! WKWebExtensionCommand::webExtensionContext not bound
-!missing-selector! WKWebExtensionContext::actionForTab: not bound
-!missing-selector! WKWebExtensionContext::baseURL not bound
-!missing-selector! WKWebExtensionContext::clearUserGestureInTab: not bound
-!missing-selector! WKWebExtensionContext::commands not bound
-!missing-selector! WKWebExtensionContext::currentPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::currentPermissions not bound
-!missing-selector! WKWebExtensionContext::deniedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::deniedPermissions not bound
-!missing-selector! WKWebExtensionContext::didActivateTab:previousActiveTab: not bound
-!missing-selector! WKWebExtensionContext::didChangeTabProperties:forTab: not bound
-!missing-selector! WKWebExtensionContext::didCloseTab:windowIsClosing: not bound
-!missing-selector! WKWebExtensionContext::didCloseWindow: not bound
-!missing-selector! WKWebExtensionContext::didDeselectTabs: not bound
-!missing-selector! WKWebExtensionContext::didFocusWindow: not bound
-!missing-selector! WKWebExtensionContext::didMoveTab:fromIndex:inWindow: not bound
-!missing-selector! WKWebExtensionContext::didOpenTab: not bound
-!missing-selector! WKWebExtensionContext::didOpenWindow: not bound
-!missing-selector! WKWebExtensionContext::didReplaceTab:withTab: not bound
-!missing-selector! WKWebExtensionContext::didSelectTabs: not bound
-!missing-selector! WKWebExtensionContext::errors not bound
-!missing-selector! WKWebExtensionContext::focusedWindow not bound
-!missing-selector! WKWebExtensionContext::grantedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::grantedPermissions not bound
-!missing-selector! WKWebExtensionContext::hasAccessToAllHosts not bound
-!missing-selector! WKWebExtensionContext::hasAccessToAllURLs not bound
-!missing-selector! WKWebExtensionContext::hasAccessToPrivateData not bound
-!missing-selector! WKWebExtensionContext::hasAccessToURL: not bound
-!missing-selector! WKWebExtensionContext::hasAccessToURL:inTab: not bound
-!missing-selector! WKWebExtensionContext::hasActiveUserGestureInTab: not bound
-!missing-selector! WKWebExtensionContext::hasContentModificationRules not bound
-!missing-selector! WKWebExtensionContext::hasInjectedContent not bound
-!missing-selector! WKWebExtensionContext::hasInjectedContentForURL: not bound
-!missing-selector! WKWebExtensionContext::hasPermission: not bound
-!missing-selector! WKWebExtensionContext::hasPermission:inTab: not bound
-!missing-selector! WKWebExtensionContext::hasRequestedOptionalAccessToAllHosts not bound
-!missing-selector! WKWebExtensionContext::initForExtension: not bound
-!missing-selector! WKWebExtensionContext::inspectionName not bound
-!missing-selector! WKWebExtensionContext::isInspectable not bound
-!missing-selector! WKWebExtensionContext::isLoaded not bound
-!missing-selector! WKWebExtensionContext::loadBackgroundContentWithCompletionHandler: not bound
-!missing-selector! WKWebExtensionContext::menuItemsForTab: not bound
-!missing-selector! WKWebExtensionContext::openTabs not bound
-!missing-selector! WKWebExtensionContext::openWindows not bound
-!missing-selector! WKWebExtensionContext::optionsPageURL not bound
-!missing-selector! WKWebExtensionContext::overrideNewTabPageURL not bound
-!missing-selector! WKWebExtensionContext::performActionForTab: not bound
-!missing-selector! WKWebExtensionContext::performCommand: not bound
-!missing-selector! WKWebExtensionContext::performCommandForKeyCommand: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForMatchPattern: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForMatchPattern:inTab: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForPermission: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForPermission:inTab: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForURL: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForURL:inTab: not bound
-!missing-selector! WKWebExtensionContext::setBaseURL: not bound
-!missing-selector! WKWebExtensionContext::setDeniedPermissionMatchPatterns: not bound
-!missing-selector! WKWebExtensionContext::setDeniedPermissions: not bound
-!missing-selector! WKWebExtensionContext::setGrantedPermissionMatchPatterns: not bound
-!missing-selector! WKWebExtensionContext::setGrantedPermissions: not bound
-!missing-selector! WKWebExtensionContext::setHasAccessToPrivateData: not bound
-!missing-selector! WKWebExtensionContext::setHasRequestedOptionalAccessToAllHosts: not bound
-!missing-selector! WKWebExtensionContext::setInspectable: not bound
-!missing-selector! WKWebExtensionContext::setInspectionName: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forMatchPattern: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forMatchPattern:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forPermission: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forPermission:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forURL: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forURL:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setUniqueIdentifier: not bound
-!missing-selector! WKWebExtensionContext::setUnsupportedAPIs: not bound
-!missing-selector! WKWebExtensionContext::uniqueIdentifier not bound
-!missing-selector! WKWebExtensionContext::unsupportedAPIs not bound
-!missing-selector! WKWebExtensionContext::userGesturePerformedInTab: not bound
-!missing-selector! WKWebExtensionContext::webExtension not bound
-!missing-selector! WKWebExtensionContext::webExtensionController not bound
-!missing-selector! WKWebExtensionContext::webViewConfiguration not bound
-!missing-selector! WKWebExtensionController::configuration not bound
-!missing-selector! WKWebExtensionController::delegate not bound
-!missing-selector! WKWebExtensionController::didActivateTab:previousActiveTab: not bound
-!missing-selector! WKWebExtensionController::didChangeTabProperties:forTab: not bound
-!missing-selector! WKWebExtensionController::didCloseTab:windowIsClosing: not bound
-!missing-selector! WKWebExtensionController::didCloseWindow: not bound
-!missing-selector! WKWebExtensionController::didDeselectTabs: not bound
-!missing-selector! WKWebExtensionController::didFocusWindow: not bound
-!missing-selector! WKWebExtensionController::didMoveTab:fromIndex:inWindow: not bound
-!missing-selector! WKWebExtensionController::didOpenTab: not bound
-!missing-selector! WKWebExtensionController::didOpenWindow: not bound
-!missing-selector! WKWebExtensionController::didReplaceTab:withTab: not bound
-!missing-selector! WKWebExtensionController::didSelectTabs: not bound
-!missing-selector! WKWebExtensionController::extensionContextForExtension: not bound
-!missing-selector! WKWebExtensionController::extensionContextForURL: not bound
-!missing-selector! WKWebExtensionController::extensionContexts not bound
-!missing-selector! WKWebExtensionController::extensions not bound
-!missing-selector! WKWebExtensionController::fetchDataRecordOfTypes:forExtensionContext:completionHandler: not bound
-!missing-selector! WKWebExtensionController::fetchDataRecordsOfTypes:completionHandler: not bound
-!missing-selector! WKWebExtensionController::init not bound
-!missing-selector! WKWebExtensionController::initWithConfiguration: not bound
-!missing-selector! WKWebExtensionController::loadExtensionContext:error: not bound
-!missing-selector! WKWebExtensionController::removeDataOfTypes:fromDataRecords:completionHandler: not bound
-!missing-selector! WKWebExtensionController::setDelegate: not bound
-!missing-selector! WKWebExtensionController::unloadExtensionContext:error: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::defaultWebsiteDataStore not bound
-!missing-selector! WKWebExtensionControllerConfiguration::identifier not bound
-!missing-selector! WKWebExtensionControllerConfiguration::isPersistent not bound
-!missing-selector! WKWebExtensionControllerConfiguration::setDefaultWebsiteDataStore: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::setWebViewConfiguration: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::webViewConfiguration not bound
-!missing-selector! WKWebExtensionDataRecord::containedDataTypes not bound
-!missing-selector! WKWebExtensionDataRecord::displayName not bound
-!missing-selector! WKWebExtensionDataRecord::errors not bound
-!missing-selector! WKWebExtensionDataRecord::sizeInBytesOfTypes: not bound
-!missing-selector! WKWebExtensionDataRecord::totalSizeInBytes not bound
-!missing-selector! WKWebExtensionDataRecord::uniqueIdentifier not bound
-!missing-selector! WKWebExtensionMatchPattern::host not bound
-!missing-selector! WKWebExtensionMatchPattern::initWithScheme:host:path:error: not bound
-!missing-selector! WKWebExtensionMatchPattern::initWithString:error: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesAllHosts not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesAllURLs not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesPattern: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesPattern:options: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesURL: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesURL:options: not bound
-!missing-selector! WKWebExtensionMatchPattern::path not bound
-!missing-selector! WKWebExtensionMatchPattern::scheme not bound
-!missing-selector! WKWebExtensionMatchPattern::string not bound
-!missing-selector! WKWebExtensionMessagePort::applicationIdentifier not bound
-!missing-selector! WKWebExtensionMessagePort::disconnect not bound
-!missing-selector! WKWebExtensionMessagePort::disconnectHandler not bound
-!missing-selector! WKWebExtensionMessagePort::disconnectWithError: not bound
-!missing-selector! WKWebExtensionMessagePort::isDisconnected not bound
-!missing-selector! WKWebExtensionMessagePort::messageHandler not bound
-!missing-selector! WKWebExtensionMessagePort::sendMessage:completionHandler: not bound
-!missing-selector! WKWebExtensionMessagePort::setDisconnectHandler: not bound
-!missing-selector! WKWebExtensionMessagePort::setMessageHandler: not bound
-!missing-selector! WKWebExtensionTabConfiguration::index not bound
-!missing-selector! WKWebExtensionTabConfiguration::parentTab not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldAddToSelection not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBeActive not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBeMuted not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBePinned not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldReaderModeBeActive not bound
-!missing-selector! WKWebExtensionTabConfiguration::url not bound
-!missing-selector! WKWebExtensionTabConfiguration::window not bound
-!missing-selector! WKWebExtensionWindowConfiguration::frame not bound
-!missing-selector! WKWebExtensionWindowConfiguration::shouldBeFocused not bound
-!missing-selector! WKWebExtensionWindowConfiguration::shouldBePrivate not bound
-!missing-selector! WKWebExtensionWindowConfiguration::tabs not bound
-!missing-selector! WKWebExtensionWindowConfiguration::tabURLs not bound
-!missing-selector! WKWebExtensionWindowConfiguration::windowState not bound
-!missing-selector! WKWebExtensionWindowConfiguration::windowType not bound
-!missing-selector! WKWebViewConfiguration::setWebExtensionController: not bound
-!missing-selector! WKWebViewConfiguration::webExtensionController not bound
-!missing-type! WKOpenPanelParameters not bound
-!missing-type! WKWebExtension not bound
-!missing-type! WKWebExtensionAction not bound
-!missing-type! WKWebExtensionCommand not bound
-!missing-type! WKWebExtensionContext not bound
-!missing-type! WKWebExtensionController not bound
-!missing-type! WKWebExtensionControllerConfiguration not bound
-!missing-type! WKWebExtensionDataRecord not bound
-!missing-type! WKWebExtensionMatchPattern not bound
-!missing-type! WKWebExtensionMessagePort not bound
-!missing-type! WKWebExtensionTabConfiguration not bound
-!missing-type! WKWebExtensionWindowConfiguration not bound
-!missing-protocol-member! WKNavigationDelegate::webView:shouldGoToBackForwardListItem:willUseInstantBack:completionHandler: not found
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-WebKit.todo b/tests/xtro-sharpie/api-annotations-dotnet/iOS-WebKit.todo
deleted file mode 100644
index 4d9bea285594..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-WebKit.todo
+++ /dev/null
@@ -1,280 +0,0 @@
-!missing-enum! WKWebExtensionContextError not bound
-!missing-enum! WKWebExtensionContextPermissionStatus not bound
-!missing-enum! WKWebExtensionDataRecordError not bound
-!missing-enum! WKWebExtensionError not bound
-!missing-enum! WKWebExtensionMatchPatternError not bound
-!missing-enum! WKWebExtensionMatchPatternOptions not bound
-!missing-enum! WKWebExtensionMessagePortError not bound
-!missing-enum! WKWebExtensionTabChangedProperties not bound
-!missing-enum! WKWebExtensionWindowState not bound
-!missing-enum! WKWebExtensionWindowType not bound
-!missing-field! WKWebExtensionContextDeniedPermissionMatchPatternsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextDeniedPermissionsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextErrorDomain not bound
-!missing-field! WKWebExtensionContextErrorsDidUpdateNotification not bound
-!missing-field! WKWebExtensionContextGrantedPermissionMatchPatternsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextGrantedPermissionsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextNotificationUserInfoKeyMatchPatterns not bound
-!missing-field! WKWebExtensionContextNotificationUserInfoKeyPermissions not bound
-!missing-field! WKWebExtensionContextPermissionMatchPatternsWereDeniedNotification not bound
-!missing-field! WKWebExtensionContextPermissionMatchPatternsWereGrantedNotification not bound
-!missing-field! WKWebExtensionContextPermissionsWereDeniedNotification not bound
-!missing-field! WKWebExtensionContextPermissionsWereGrantedNotification not bound
-!missing-field! WKWebExtensionDataRecordErrorDomain not bound
-!missing-field! WKWebExtensionDataTypeLocal not bound
-!missing-field! WKWebExtensionDataTypeSession not bound
-!missing-field! WKWebExtensionDataTypeSynchronized not bound
-!missing-field! WKWebExtensionErrorDomain not bound
-!missing-field! WKWebExtensionMatchPatternErrorDomain not bound
-!missing-field! WKWebExtensionMessagePortErrorDomain not bound
-!missing-field! WKWebExtensionPermissionActiveTab not bound
-!missing-field! WKWebExtensionPermissionAlarms not bound
-!missing-field! WKWebExtensionPermissionClipboardWrite not bound
-!missing-field! WKWebExtensionPermissionContextMenus not bound
-!missing-field! WKWebExtensionPermissionCookies not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequest not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequestFeedback not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequestWithHostAccess not bound
-!missing-field! WKWebExtensionPermissionMenus not bound
-!missing-field! WKWebExtensionPermissionNativeMessaging not bound
-!missing-field! WKWebExtensionPermissionScripting not bound
-!missing-field! WKWebExtensionPermissionStorage not bound
-!missing-field! WKWebExtensionPermissionTabs not bound
-!missing-field! WKWebExtensionPermissionUnlimitedStorage not bound
-!missing-field! WKWebExtensionPermissionWebNavigation not bound
-!missing-field! WKWebExtensionPermissionWebRequest not bound
-!missing-protocol! WKWebExtensionControllerDelegate not bound
-!missing-protocol! WKWebExtensionTab not bound
-!missing-protocol! WKWebExtensionWindow not bound
-!missing-protocol-member! WKUIDelegate::webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler: not found
-!missing-selector! +WKWebExtension::extensionWithAppExtensionBundle:completionHandler: not bound
-!missing-selector! +WKWebExtension::extensionWithResourceBaseURL:completionHandler: not bound
-!missing-selector! +WKWebExtensionContext::contextForExtension: not bound
-!missing-selector! +WKWebExtensionController::allExtensionDataTypes not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::configurationWithIdentifier: not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::defaultConfiguration not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::nonPersistentConfiguration not bound
-!missing-selector! +WKWebExtensionMatchPattern::allHostsAndSchemesMatchPattern not bound
-!missing-selector! +WKWebExtensionMatchPattern::allURLsMatchPattern not bound
-!missing-selector! +WKWebExtensionMatchPattern::matchPatternWithScheme:host:path: not bound
-!missing-selector! +WKWebExtensionMatchPattern::matchPatternWithString: not bound
-!missing-selector! +WKWebExtensionMatchPattern::registerCustomURLScheme: not bound
-!missing-selector! WKNavigationAction::buttonNumber not bound
-!missing-selector! WKNavigationAction::modifierFlags not bound
-!missing-selector! WKOpenPanelParameters::allowsDirectories not bound
-!missing-selector! WKOpenPanelParameters::allowsMultipleSelection not bound
-!missing-selector! WKWebExtension::actionIconForSize: not bound
-!missing-selector! WKWebExtension::allRequestedMatchPatterns not bound
-!missing-selector! WKWebExtension::defaultLocale not bound
-!missing-selector! WKWebExtension::displayActionLabel not bound
-!missing-selector! WKWebExtension::displayDescription not bound
-!missing-selector! WKWebExtension::displayName not bound
-!missing-selector! WKWebExtension::displayShortName not bound
-!missing-selector! WKWebExtension::displayVersion not bound
-!missing-selector! WKWebExtension::errors not bound
-!missing-selector! WKWebExtension::hasBackgroundContent not bound
-!missing-selector! WKWebExtension::hasCommands not bound
-!missing-selector! WKWebExtension::hasContentModificationRules not bound
-!missing-selector! WKWebExtension::hasInjectedContent not bound
-!missing-selector! WKWebExtension::hasOptionsPage not bound
-!missing-selector! WKWebExtension::hasOverrideNewTabPage not bound
-!missing-selector! WKWebExtension::hasPersistentBackgroundContent not bound
-!missing-selector! WKWebExtension::iconForSize: not bound
-!missing-selector! WKWebExtension::manifest not bound
-!missing-selector! WKWebExtension::manifestVersion not bound
-!missing-selector! WKWebExtension::optionalPermissionMatchPatterns not bound
-!missing-selector! WKWebExtension::optionalPermissions not bound
-!missing-selector! WKWebExtension::requestedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtension::requestedPermissions not bound
-!missing-selector! WKWebExtension::supportsManifestVersion: not bound
-!missing-selector! WKWebExtension::version not bound
-!missing-selector! WKWebExtensionAction::associatedTab not bound
-!missing-selector! WKWebExtensionAction::badgeText not bound
-!missing-selector! WKWebExtensionAction::closePopup not bound
-!missing-selector! WKWebExtensionAction::hasUnreadBadgeText not bound
-!missing-selector! WKWebExtensionAction::iconForSize: not bound
-!missing-selector! WKWebExtensionAction::inspectionName not bound
-!missing-selector! WKWebExtensionAction::isEnabled not bound
-!missing-selector! WKWebExtensionAction::label not bound
-!missing-selector! WKWebExtensionAction::menuItems not bound
-!missing-selector! WKWebExtensionAction::popupViewController not bound
-!missing-selector! WKWebExtensionAction::popupWebView not bound
-!missing-selector! WKWebExtensionAction::presentsPopup not bound
-!missing-selector! WKWebExtensionAction::setHasUnreadBadgeText: not bound
-!missing-selector! WKWebExtensionAction::setInspectionName: not bound
-!missing-selector! WKWebExtensionAction::webExtensionContext not bound
-!missing-selector! WKWebExtensionCommand::activationKey not bound
-!missing-selector! WKWebExtensionCommand::identifier not bound
-!missing-selector! WKWebExtensionCommand::keyCommand not bound
-!missing-selector! WKWebExtensionCommand::menuItem not bound
-!missing-selector! WKWebExtensionCommand::modifierFlags not bound
-!missing-selector! WKWebExtensionCommand::setActivationKey: not bound
-!missing-selector! WKWebExtensionCommand::setModifierFlags: not bound
-!missing-selector! WKWebExtensionCommand::title not bound
-!missing-selector! WKWebExtensionCommand::webExtensionContext not bound
-!missing-selector! WKWebExtensionContext::actionForTab: not bound
-!missing-selector! WKWebExtensionContext::baseURL not bound
-!missing-selector! WKWebExtensionContext::clearUserGestureInTab: not bound
-!missing-selector! WKWebExtensionContext::commands not bound
-!missing-selector! WKWebExtensionContext::currentPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::currentPermissions not bound
-!missing-selector! WKWebExtensionContext::deniedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::deniedPermissions not bound
-!missing-selector! WKWebExtensionContext::didActivateTab:previousActiveTab: not bound
-!missing-selector! WKWebExtensionContext::didChangeTabProperties:forTab: not bound
-!missing-selector! WKWebExtensionContext::didCloseTab:windowIsClosing: not bound
-!missing-selector! WKWebExtensionContext::didCloseWindow: not bound
-!missing-selector! WKWebExtensionContext::didDeselectTabs: not bound
-!missing-selector! WKWebExtensionContext::didFocusWindow: not bound
-!missing-selector! WKWebExtensionContext::didMoveTab:fromIndex:inWindow: not bound
-!missing-selector! WKWebExtensionContext::didOpenTab: not bound
-!missing-selector! WKWebExtensionContext::didOpenWindow: not bound
-!missing-selector! WKWebExtensionContext::didReplaceTab:withTab: not bound
-!missing-selector! WKWebExtensionContext::didSelectTabs: not bound
-!missing-selector! WKWebExtensionContext::errors not bound
-!missing-selector! WKWebExtensionContext::focusedWindow not bound
-!missing-selector! WKWebExtensionContext::grantedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::grantedPermissions not bound
-!missing-selector! WKWebExtensionContext::hasAccessToAllHosts not bound
-!missing-selector! WKWebExtensionContext::hasAccessToAllURLs not bound
-!missing-selector! WKWebExtensionContext::hasAccessToPrivateData not bound
-!missing-selector! WKWebExtensionContext::hasAccessToURL: not bound
-!missing-selector! WKWebExtensionContext::hasAccessToURL:inTab: not bound
-!missing-selector! WKWebExtensionContext::hasActiveUserGestureInTab: not bound
-!missing-selector! WKWebExtensionContext::hasContentModificationRules not bound
-!missing-selector! WKWebExtensionContext::hasInjectedContent not bound
-!missing-selector! WKWebExtensionContext::hasInjectedContentForURL: not bound
-!missing-selector! WKWebExtensionContext::hasPermission: not bound
-!missing-selector! WKWebExtensionContext::hasPermission:inTab: not bound
-!missing-selector! WKWebExtensionContext::hasRequestedOptionalAccessToAllHosts not bound
-!missing-selector! WKWebExtensionContext::initForExtension: not bound
-!missing-selector! WKWebExtensionContext::inspectionName not bound
-!missing-selector! WKWebExtensionContext::isInspectable not bound
-!missing-selector! WKWebExtensionContext::isLoaded not bound
-!missing-selector! WKWebExtensionContext::loadBackgroundContentWithCompletionHandler: not bound
-!missing-selector! WKWebExtensionContext::menuItemsForTab: not bound
-!missing-selector! WKWebExtensionContext::openTabs not bound
-!missing-selector! WKWebExtensionContext::openWindows not bound
-!missing-selector! WKWebExtensionContext::optionsPageURL not bound
-!missing-selector! WKWebExtensionContext::overrideNewTabPageURL not bound
-!missing-selector! WKWebExtensionContext::performActionForTab: not bound
-!missing-selector! WKWebExtensionContext::performCommand: not bound
-!missing-selector! WKWebExtensionContext::performCommandForKeyCommand: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForMatchPattern: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForMatchPattern:inTab: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForPermission: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForPermission:inTab: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForURL: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForURL:inTab: not bound
-!missing-selector! WKWebExtensionContext::setBaseURL: not bound
-!missing-selector! WKWebExtensionContext::setDeniedPermissionMatchPatterns: not bound
-!missing-selector! WKWebExtensionContext::setDeniedPermissions: not bound
-!missing-selector! WKWebExtensionContext::setGrantedPermissionMatchPatterns: not bound
-!missing-selector! WKWebExtensionContext::setGrantedPermissions: not bound
-!missing-selector! WKWebExtensionContext::setHasAccessToPrivateData: not bound
-!missing-selector! WKWebExtensionContext::setHasRequestedOptionalAccessToAllHosts: not bound
-!missing-selector! WKWebExtensionContext::setInspectable: not bound
-!missing-selector! WKWebExtensionContext::setInspectionName: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forMatchPattern: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forMatchPattern:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forPermission: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forPermission:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forURL: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forURL:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setUniqueIdentifier: not bound
-!missing-selector! WKWebExtensionContext::setUnsupportedAPIs: not bound
-!missing-selector! WKWebExtensionContext::uniqueIdentifier not bound
-!missing-selector! WKWebExtensionContext::unsupportedAPIs not bound
-!missing-selector! WKWebExtensionContext::userGesturePerformedInTab: not bound
-!missing-selector! WKWebExtensionContext::webExtension not bound
-!missing-selector! WKWebExtensionContext::webExtensionController not bound
-!missing-selector! WKWebExtensionContext::webViewConfiguration not bound
-!missing-selector! WKWebExtensionController::configuration not bound
-!missing-selector! WKWebExtensionController::delegate not bound
-!missing-selector! WKWebExtensionController::didActivateTab:previousActiveTab: not bound
-!missing-selector! WKWebExtensionController::didChangeTabProperties:forTab: not bound
-!missing-selector! WKWebExtensionController::didCloseTab:windowIsClosing: not bound
-!missing-selector! WKWebExtensionController::didCloseWindow: not bound
-!missing-selector! WKWebExtensionController::didDeselectTabs: not bound
-!missing-selector! WKWebExtensionController::didFocusWindow: not bound
-!missing-selector! WKWebExtensionController::didMoveTab:fromIndex:inWindow: not bound
-!missing-selector! WKWebExtensionController::didOpenTab: not bound
-!missing-selector! WKWebExtensionController::didOpenWindow: not bound
-!missing-selector! WKWebExtensionController::didReplaceTab:withTab: not bound
-!missing-selector! WKWebExtensionController::didSelectTabs: not bound
-!missing-selector! WKWebExtensionController::extensionContextForExtension: not bound
-!missing-selector! WKWebExtensionController::extensionContextForURL: not bound
-!missing-selector! WKWebExtensionController::extensionContexts not bound
-!missing-selector! WKWebExtensionController::extensions not bound
-!missing-selector! WKWebExtensionController::fetchDataRecordOfTypes:forExtensionContext:completionHandler: not bound
-!missing-selector! WKWebExtensionController::fetchDataRecordsOfTypes:completionHandler: not bound
-!missing-selector! WKWebExtensionController::init not bound
-!missing-selector! WKWebExtensionController::initWithConfiguration: not bound
-!missing-selector! WKWebExtensionController::loadExtensionContext:error: not bound
-!missing-selector! WKWebExtensionController::removeDataOfTypes:fromDataRecords:completionHandler: not bound
-!missing-selector! WKWebExtensionController::setDelegate: not bound
-!missing-selector! WKWebExtensionController::unloadExtensionContext:error: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::defaultWebsiteDataStore not bound
-!missing-selector! WKWebExtensionControllerConfiguration::identifier not bound
-!missing-selector! WKWebExtensionControllerConfiguration::isPersistent not bound
-!missing-selector! WKWebExtensionControllerConfiguration::setDefaultWebsiteDataStore: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::setWebViewConfiguration: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::webViewConfiguration not bound
-!missing-selector! WKWebExtensionDataRecord::containedDataTypes not bound
-!missing-selector! WKWebExtensionDataRecord::displayName not bound
-!missing-selector! WKWebExtensionDataRecord::errors not bound
-!missing-selector! WKWebExtensionDataRecord::sizeInBytesOfTypes: not bound
-!missing-selector! WKWebExtensionDataRecord::totalSizeInBytes not bound
-!missing-selector! WKWebExtensionDataRecord::uniqueIdentifier not bound
-!missing-selector! WKWebExtensionMatchPattern::host not bound
-!missing-selector! WKWebExtensionMatchPattern::initWithScheme:host:path:error: not bound
-!missing-selector! WKWebExtensionMatchPattern::initWithString:error: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesAllHosts not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesAllURLs not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesPattern: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesPattern:options: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesURL: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesURL:options: not bound
-!missing-selector! WKWebExtensionMatchPattern::path not bound
-!missing-selector! WKWebExtensionMatchPattern::scheme not bound
-!missing-selector! WKWebExtensionMatchPattern::string not bound
-!missing-selector! WKWebExtensionMessagePort::applicationIdentifier not bound
-!missing-selector! WKWebExtensionMessagePort::disconnect not bound
-!missing-selector! WKWebExtensionMessagePort::disconnectHandler not bound
-!missing-selector! WKWebExtensionMessagePort::disconnectWithError: not bound
-!missing-selector! WKWebExtensionMessagePort::isDisconnected not bound
-!missing-selector! WKWebExtensionMessagePort::messageHandler not bound
-!missing-selector! WKWebExtensionMessagePort::sendMessage:completionHandler: not bound
-!missing-selector! WKWebExtensionMessagePort::setDisconnectHandler: not bound
-!missing-selector! WKWebExtensionMessagePort::setMessageHandler: not bound
-!missing-selector! WKWebExtensionTabConfiguration::index not bound
-!missing-selector! WKWebExtensionTabConfiguration::parentTab not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldAddToSelection not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBeActive not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBeMuted not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBePinned not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldReaderModeBeActive not bound
-!missing-selector! WKWebExtensionTabConfiguration::url not bound
-!missing-selector! WKWebExtensionTabConfiguration::window not bound
-!missing-selector! WKWebExtensionWindowConfiguration::frame not bound
-!missing-selector! WKWebExtensionWindowConfiguration::shouldBeFocused not bound
-!missing-selector! WKWebExtensionWindowConfiguration::shouldBePrivate not bound
-!missing-selector! WKWebExtensionWindowConfiguration::tabs not bound
-!missing-selector! WKWebExtensionWindowConfiguration::tabURLs not bound
-!missing-selector! WKWebExtensionWindowConfiguration::windowState not bound
-!missing-selector! WKWebExtensionWindowConfiguration::windowType not bound
-!missing-selector! WKWebViewConfiguration::setWebExtensionController: not bound
-!missing-selector! WKWebViewConfiguration::webExtensionController not bound
-!missing-type! WKOpenPanelParameters not bound
-!missing-type! WKWebExtension not bound
-!missing-type! WKWebExtensionAction not bound
-!missing-type! WKWebExtensionCommand not bound
-!missing-type! WKWebExtensionContext not bound
-!missing-type! WKWebExtensionController not bound
-!missing-type! WKWebExtensionControllerConfiguration not bound
-!missing-type! WKWebExtensionDataRecord not bound
-!missing-type! WKWebExtensionMatchPattern not bound
-!missing-type! WKWebExtensionMessagePort not bound
-!missing-type! WKWebExtensionTabConfiguration not bound
-!missing-type! WKWebExtensionWindowConfiguration not bound
-!missing-protocol-member! WKNavigationDelegate::webView:shouldGoToBackForwardListItem:willUseInstantBack:completionHandler: not found
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-WebKit.ignore b/tests/xtro-sharpie/api-annotations-dotnet/macOS-WebKit.ignore
index ef6bf8942c75..fadafa81cf44 100644
--- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-WebKit.ignore
+++ b/tests/xtro-sharpie/api-annotations-dotnet/macOS-WebKit.ignore
@@ -1,7 +1,5 @@
## only a subset of the old, pre WKWebKit, is bound for macOS
-# TODO WKWebView should conform to NSTextFinderClient is marked as macos(WK_MAC_TBA) as of 11.4 beta3
-
# xcode 15
# older/legacy API
diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-WebKit.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-WebKit.todo
deleted file mode 100644
index 23c85b8efa0f..000000000000
--- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-WebKit.todo
+++ /dev/null
@@ -1,274 +0,0 @@
-!missing-enum! WKWebExtensionContextError not bound
-!missing-enum! WKWebExtensionContextPermissionStatus not bound
-!missing-enum! WKWebExtensionDataRecordError not bound
-!missing-enum! WKWebExtensionError not bound
-!missing-enum! WKWebExtensionMatchPatternError not bound
-!missing-enum! WKWebExtensionMatchPatternOptions not bound
-!missing-enum! WKWebExtensionMessagePortError not bound
-!missing-enum! WKWebExtensionTabChangedProperties not bound
-!missing-enum! WKWebExtensionWindowState not bound
-!missing-enum! WKWebExtensionWindowType not bound
-!missing-field! WKWebExtensionContextDeniedPermissionMatchPatternsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextDeniedPermissionsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextErrorDomain not bound
-!missing-field! WKWebExtensionContextErrorsDidUpdateNotification not bound
-!missing-field! WKWebExtensionContextGrantedPermissionMatchPatternsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextGrantedPermissionsWereRemovedNotification not bound
-!missing-field! WKWebExtensionContextNotificationUserInfoKeyMatchPatterns not bound
-!missing-field! WKWebExtensionContextNotificationUserInfoKeyPermissions not bound
-!missing-field! WKWebExtensionContextPermissionMatchPatternsWereDeniedNotification not bound
-!missing-field! WKWebExtensionContextPermissionMatchPatternsWereGrantedNotification not bound
-!missing-field! WKWebExtensionContextPermissionsWereDeniedNotification not bound
-!missing-field! WKWebExtensionContextPermissionsWereGrantedNotification not bound
-!missing-field! WKWebExtensionDataRecordErrorDomain not bound
-!missing-field! WKWebExtensionDataTypeLocal not bound
-!missing-field! WKWebExtensionDataTypeSession not bound
-!missing-field! WKWebExtensionDataTypeSynchronized not bound
-!missing-field! WKWebExtensionErrorDomain not bound
-!missing-field! WKWebExtensionMatchPatternErrorDomain not bound
-!missing-field! WKWebExtensionMessagePortErrorDomain not bound
-!missing-field! WKWebExtensionPermissionActiveTab not bound
-!missing-field! WKWebExtensionPermissionAlarms not bound
-!missing-field! WKWebExtensionPermissionClipboardWrite not bound
-!missing-field! WKWebExtensionPermissionContextMenus not bound
-!missing-field! WKWebExtensionPermissionCookies not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequest not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequestFeedback not bound
-!missing-field! WKWebExtensionPermissionDeclarativeNetRequestWithHostAccess not bound
-!missing-field! WKWebExtensionPermissionMenus not bound
-!missing-field! WKWebExtensionPermissionNativeMessaging not bound
-!missing-field! WKWebExtensionPermissionScripting not bound
-!missing-field! WKWebExtensionPermissionStorage not bound
-!missing-field! WKWebExtensionPermissionTabs not bound
-!missing-field! WKWebExtensionPermissionUnlimitedStorage not bound
-!missing-field! WKWebExtensionPermissionWebNavigation not bound
-!missing-field! WKWebExtensionPermissionWebRequest not bound
-!missing-protocol! WKWebExtensionControllerDelegate not bound
-!missing-protocol! WKWebExtensionTab not bound
-!missing-protocol! WKWebExtensionWindow not bound
-!missing-selector! +WKWebExtension::extensionWithAppExtensionBundle:completionHandler: not bound
-!missing-selector! +WKWebExtension::extensionWithResourceBaseURL:completionHandler: not bound
-!missing-selector! +WKWebExtensionContext::contextForExtension: not bound
-!missing-selector! +WKWebExtensionController::allExtensionDataTypes not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::configurationWithIdentifier: not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::defaultConfiguration not bound
-!missing-selector! +WKWebExtensionControllerConfiguration::nonPersistentConfiguration not bound
-!missing-selector! +WKWebExtensionMatchPattern::allHostsAndSchemesMatchPattern not bound
-!missing-selector! +WKWebExtensionMatchPattern::allURLsMatchPattern not bound
-!missing-selector! +WKWebExtensionMatchPattern::matchPatternWithScheme:host:path: not bound
-!missing-selector! +WKWebExtensionMatchPattern::matchPatternWithString: not bound
-!missing-selector! +WKWebExtensionMatchPattern::registerCustomURLScheme: not bound
-!missing-selector! WKWebExtension::actionIconForSize: not bound
-!missing-selector! WKWebExtension::allRequestedMatchPatterns not bound
-!missing-selector! WKWebExtension::defaultLocale not bound
-!missing-selector! WKWebExtension::displayActionLabel not bound
-!missing-selector! WKWebExtension::displayDescription not bound
-!missing-selector! WKWebExtension::displayName not bound
-!missing-selector! WKWebExtension::displayShortName not bound
-!missing-selector! WKWebExtension::displayVersion not bound
-!missing-selector! WKWebExtension::errors not bound
-!missing-selector! WKWebExtension::hasBackgroundContent not bound
-!missing-selector! WKWebExtension::hasCommands not bound
-!missing-selector! WKWebExtension::hasContentModificationRules not bound
-!missing-selector! WKWebExtension::hasInjectedContent not bound
-!missing-selector! WKWebExtension::hasOptionsPage not bound
-!missing-selector! WKWebExtension::hasOverrideNewTabPage not bound
-!missing-selector! WKWebExtension::hasPersistentBackgroundContent not bound
-!missing-selector! WKWebExtension::iconForSize: not bound
-!missing-selector! WKWebExtension::manifest not bound
-!missing-selector! WKWebExtension::manifestVersion not bound
-!missing-selector! WKWebExtension::optionalPermissionMatchPatterns not bound
-!missing-selector! WKWebExtension::optionalPermissions not bound
-!missing-selector! WKWebExtension::requestedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtension::requestedPermissions not bound
-!missing-selector! WKWebExtension::supportsManifestVersion: not bound
-!missing-selector! WKWebExtension::version not bound
-!missing-selector! WKWebExtensionAction::associatedTab not bound
-!missing-selector! WKWebExtensionAction::badgeText not bound
-!missing-selector! WKWebExtensionAction::closePopup not bound
-!missing-selector! WKWebExtensionAction::hasUnreadBadgeText not bound
-!missing-selector! WKWebExtensionAction::iconForSize: not bound
-!missing-selector! WKWebExtensionAction::inspectionName not bound
-!missing-selector! WKWebExtensionAction::isEnabled not bound
-!missing-selector! WKWebExtensionAction::label not bound
-!missing-selector! WKWebExtensionAction::menuItems not bound
-!missing-selector! WKWebExtensionAction::popupPopover not bound
-!missing-selector! WKWebExtensionAction::popupWebView not bound
-!missing-selector! WKWebExtensionAction::presentsPopup not bound
-!missing-selector! WKWebExtensionAction::setHasUnreadBadgeText: not bound
-!missing-selector! WKWebExtensionAction::setInspectionName: not bound
-!missing-selector! WKWebExtensionAction::webExtensionContext not bound
-!missing-selector! WKWebExtensionCommand::activationKey not bound
-!missing-selector! WKWebExtensionCommand::identifier not bound
-!missing-selector! WKWebExtensionCommand::menuItem not bound
-!missing-selector! WKWebExtensionCommand::modifierFlags not bound
-!missing-selector! WKWebExtensionCommand::setActivationKey: not bound
-!missing-selector! WKWebExtensionCommand::setModifierFlags: not bound
-!missing-selector! WKWebExtensionCommand::title not bound
-!missing-selector! WKWebExtensionCommand::webExtensionContext not bound
-!missing-selector! WKWebExtensionContext::actionForTab: not bound
-!missing-selector! WKWebExtensionContext::baseURL not bound
-!missing-selector! WKWebExtensionContext::clearUserGestureInTab: not bound
-!missing-selector! WKWebExtensionContext::commandForEvent: not bound
-!missing-selector! WKWebExtensionContext::commands not bound
-!missing-selector! WKWebExtensionContext::currentPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::currentPermissions not bound
-!missing-selector! WKWebExtensionContext::deniedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::deniedPermissions not bound
-!missing-selector! WKWebExtensionContext::didActivateTab:previousActiveTab: not bound
-!missing-selector! WKWebExtensionContext::didChangeTabProperties:forTab: not bound
-!missing-selector! WKWebExtensionContext::didCloseTab:windowIsClosing: not bound
-!missing-selector! WKWebExtensionContext::didCloseWindow: not bound
-!missing-selector! WKWebExtensionContext::didDeselectTabs: not bound
-!missing-selector! WKWebExtensionContext::didFocusWindow: not bound
-!missing-selector! WKWebExtensionContext::didMoveTab:fromIndex:inWindow: not bound
-!missing-selector! WKWebExtensionContext::didOpenTab: not bound
-!missing-selector! WKWebExtensionContext::didOpenWindow: not bound
-!missing-selector! WKWebExtensionContext::didReplaceTab:withTab: not bound
-!missing-selector! WKWebExtensionContext::didSelectTabs: not bound
-!missing-selector! WKWebExtensionContext::errors not bound
-!missing-selector! WKWebExtensionContext::focusedWindow not bound
-!missing-selector! WKWebExtensionContext::grantedPermissionMatchPatterns not bound
-!missing-selector! WKWebExtensionContext::grantedPermissions not bound
-!missing-selector! WKWebExtensionContext::hasAccessToAllHosts not bound
-!missing-selector! WKWebExtensionContext::hasAccessToAllURLs not bound
-!missing-selector! WKWebExtensionContext::hasAccessToPrivateData not bound
-!missing-selector! WKWebExtensionContext::hasAccessToURL: not bound
-!missing-selector! WKWebExtensionContext::hasAccessToURL:inTab: not bound
-!missing-selector! WKWebExtensionContext::hasActiveUserGestureInTab: not bound
-!missing-selector! WKWebExtensionContext::hasContentModificationRules not bound
-!missing-selector! WKWebExtensionContext::hasInjectedContent not bound
-!missing-selector! WKWebExtensionContext::hasInjectedContentForURL: not bound
-!missing-selector! WKWebExtensionContext::hasPermission: not bound
-!missing-selector! WKWebExtensionContext::hasPermission:inTab: not bound
-!missing-selector! WKWebExtensionContext::hasRequestedOptionalAccessToAllHosts not bound
-!missing-selector! WKWebExtensionContext::initForExtension: not bound
-!missing-selector! WKWebExtensionContext::inspectionName not bound
-!missing-selector! WKWebExtensionContext::isInspectable not bound
-!missing-selector! WKWebExtensionContext::isLoaded not bound
-!missing-selector! WKWebExtensionContext::loadBackgroundContentWithCompletionHandler: not bound
-!missing-selector! WKWebExtensionContext::menuItemsForTab: not bound
-!missing-selector! WKWebExtensionContext::openTabs not bound
-!missing-selector! WKWebExtensionContext::openWindows not bound
-!missing-selector! WKWebExtensionContext::optionsPageURL not bound
-!missing-selector! WKWebExtensionContext::overrideNewTabPageURL not bound
-!missing-selector! WKWebExtensionContext::performActionForTab: not bound
-!missing-selector! WKWebExtensionContext::performCommand: not bound
-!missing-selector! WKWebExtensionContext::performCommandForEvent: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForMatchPattern: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForMatchPattern:inTab: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForPermission: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForPermission:inTab: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForURL: not bound
-!missing-selector! WKWebExtensionContext::permissionStatusForURL:inTab: not bound
-!missing-selector! WKWebExtensionContext::setBaseURL: not bound
-!missing-selector! WKWebExtensionContext::setDeniedPermissionMatchPatterns: not bound
-!missing-selector! WKWebExtensionContext::setDeniedPermissions: not bound
-!missing-selector! WKWebExtensionContext::setGrantedPermissionMatchPatterns: not bound
-!missing-selector! WKWebExtensionContext::setGrantedPermissions: not bound
-!missing-selector! WKWebExtensionContext::setHasAccessToPrivateData: not bound
-!missing-selector! WKWebExtensionContext::setHasRequestedOptionalAccessToAllHosts: not bound
-!missing-selector! WKWebExtensionContext::setInspectable: not bound
-!missing-selector! WKWebExtensionContext::setInspectionName: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forMatchPattern: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forMatchPattern:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forPermission: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forPermission:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forURL: not bound
-!missing-selector! WKWebExtensionContext::setPermissionStatus:forURL:expirationDate: not bound
-!missing-selector! WKWebExtensionContext::setUniqueIdentifier: not bound
-!missing-selector! WKWebExtensionContext::setUnsupportedAPIs: not bound
-!missing-selector! WKWebExtensionContext::uniqueIdentifier not bound
-!missing-selector! WKWebExtensionContext::unsupportedAPIs not bound
-!missing-selector! WKWebExtensionContext::userGesturePerformedInTab: not bound
-!missing-selector! WKWebExtensionContext::webExtension not bound
-!missing-selector! WKWebExtensionContext::webExtensionController not bound
-!missing-selector! WKWebExtensionContext::webViewConfiguration not bound
-!missing-selector! WKWebExtensionController::configuration not bound
-!missing-selector! WKWebExtensionController::delegate not bound
-!missing-selector! WKWebExtensionController::didActivateTab:previousActiveTab: not bound
-!missing-selector! WKWebExtensionController::didChangeTabProperties:forTab: not bound
-!missing-selector! WKWebExtensionController::didCloseTab:windowIsClosing: not bound
-!missing-selector! WKWebExtensionController::didCloseWindow: not bound
-!missing-selector! WKWebExtensionController::didDeselectTabs: not bound
-!missing-selector! WKWebExtensionController::didFocusWindow: not bound
-!missing-selector! WKWebExtensionController::didMoveTab:fromIndex:inWindow: not bound
-!missing-selector! WKWebExtensionController::didOpenTab: not bound
-!missing-selector! WKWebExtensionController::didOpenWindow: not bound
-!missing-selector! WKWebExtensionController::didReplaceTab:withTab: not bound
-!missing-selector! WKWebExtensionController::didSelectTabs: not bound
-!missing-selector! WKWebExtensionController::extensionContextForExtension: not bound
-!missing-selector! WKWebExtensionController::extensionContextForURL: not bound
-!missing-selector! WKWebExtensionController::extensionContexts not bound
-!missing-selector! WKWebExtensionController::extensions not bound
-!missing-selector! WKWebExtensionController::fetchDataRecordOfTypes:forExtensionContext:completionHandler: not bound
-!missing-selector! WKWebExtensionController::fetchDataRecordsOfTypes:completionHandler: not bound
-!missing-selector! WKWebExtensionController::init not bound
-!missing-selector! WKWebExtensionController::initWithConfiguration: not bound
-!missing-selector! WKWebExtensionController::loadExtensionContext:error: not bound
-!missing-selector! WKWebExtensionController::removeDataOfTypes:fromDataRecords:completionHandler: not bound
-!missing-selector! WKWebExtensionController::setDelegate: not bound
-!missing-selector! WKWebExtensionController::unloadExtensionContext:error: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::defaultWebsiteDataStore not bound
-!missing-selector! WKWebExtensionControllerConfiguration::identifier not bound
-!missing-selector! WKWebExtensionControllerConfiguration::isPersistent not bound
-!missing-selector! WKWebExtensionControllerConfiguration::setDefaultWebsiteDataStore: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::setWebViewConfiguration: not bound
-!missing-selector! WKWebExtensionControllerConfiguration::webViewConfiguration not bound
-!missing-selector! WKWebExtensionDataRecord::containedDataTypes not bound
-!missing-selector! WKWebExtensionDataRecord::displayName not bound
-!missing-selector! WKWebExtensionDataRecord::errors not bound
-!missing-selector! WKWebExtensionDataRecord::sizeInBytesOfTypes: not bound
-!missing-selector! WKWebExtensionDataRecord::totalSizeInBytes not bound
-!missing-selector! WKWebExtensionDataRecord::uniqueIdentifier not bound
-!missing-selector! WKWebExtensionMatchPattern::host not bound
-!missing-selector! WKWebExtensionMatchPattern::initWithScheme:host:path:error: not bound
-!missing-selector! WKWebExtensionMatchPattern::initWithString:error: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesAllHosts not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesAllURLs not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesPattern: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesPattern:options: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesURL: not bound
-!missing-selector! WKWebExtensionMatchPattern::matchesURL:options: not bound
-!missing-selector! WKWebExtensionMatchPattern::path not bound
-!missing-selector! WKWebExtensionMatchPattern::scheme not bound
-!missing-selector! WKWebExtensionMatchPattern::string not bound
-!missing-selector! WKWebExtensionMessagePort::applicationIdentifier not bound
-!missing-selector! WKWebExtensionMessagePort::disconnect not bound
-!missing-selector! WKWebExtensionMessagePort::disconnectHandler not bound
-!missing-selector! WKWebExtensionMessagePort::disconnectWithError: not bound
-!missing-selector! WKWebExtensionMessagePort::isDisconnected not bound
-!missing-selector! WKWebExtensionMessagePort::messageHandler not bound
-!missing-selector! WKWebExtensionMessagePort::sendMessage:completionHandler: not bound
-!missing-selector! WKWebExtensionMessagePort::setDisconnectHandler: not bound
-!missing-selector! WKWebExtensionMessagePort::setMessageHandler: not bound
-!missing-selector! WKWebExtensionTabConfiguration::index not bound
-!missing-selector! WKWebExtensionTabConfiguration::parentTab not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldAddToSelection not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBeActive not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBeMuted not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldBePinned not bound
-!missing-selector! WKWebExtensionTabConfiguration::shouldReaderModeBeActive not bound
-!missing-selector! WKWebExtensionTabConfiguration::url not bound
-!missing-selector! WKWebExtensionTabConfiguration::window not bound
-!missing-selector! WKWebExtensionWindowConfiguration::frame not bound
-!missing-selector! WKWebExtensionWindowConfiguration::shouldBeFocused not bound
-!missing-selector! WKWebExtensionWindowConfiguration::shouldBePrivate not bound
-!missing-selector! WKWebExtensionWindowConfiguration::tabs not bound
-!missing-selector! WKWebExtensionWindowConfiguration::tabURLs not bound
-!missing-selector! WKWebExtensionWindowConfiguration::windowState not bound
-!missing-selector! WKWebExtensionWindowConfiguration::windowType not bound
-!missing-selector! WKWebViewConfiguration::setWebExtensionController: not bound
-!missing-selector! WKWebViewConfiguration::webExtensionController not bound
-!missing-type! WKWebExtension not bound
-!missing-type! WKWebExtensionAction not bound
-!missing-type! WKWebExtensionCommand not bound
-!missing-type! WKWebExtensionContext not bound
-!missing-type! WKWebExtensionController not bound
-!missing-type! WKWebExtensionControllerConfiguration not bound
-!missing-type! WKWebExtensionDataRecord not bound
-!missing-type! WKWebExtensionMatchPattern not bound
-!missing-type! WKWebExtensionMessagePort not bound
-!missing-type! WKWebExtensionTabConfiguration not bound
-!missing-type! WKWebExtensionWindowConfiguration not bound
-!missing-protocol-member! WKNavigationDelegate::webView:shouldGoToBackForwardListItem:willUseInstantBack:completionHandler: not found