diff --git a/App/Browser View/BrowserViewController.swift b/App/Browser View/BrowserViewController.swift index 1cb98cf..f2cc585 100644 --- a/App/Browser View/BrowserViewController.swift +++ b/App/Browser View/BrowserViewController.swift @@ -779,11 +779,7 @@ extension BrowserViewController: UITextFieldDelegate return false } - - override func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { - true - } - + func textFieldDidEndEditing(_ textField: UITextField) { if !changingFocusToAutocompleteController { autocompleteViewController.view.isHidden = true diff --git a/App/Document Controls UI/DocumentControlItemView.swift b/App/Document Controls UI/DocumentControlItemView.swift index 0d2cb05..aa7454b 100644 --- a/App/Document Controls UI/DocumentControlItemView.swift +++ b/App/Document Controls UI/DocumentControlItemView.swift @@ -103,9 +103,16 @@ class DocumentControlItemView: UIControl separatorView.isHidden = !drawsBottomSeparator } - override func setTracking(_ tracking: Bool) { - super.setTracking(tracking) - highlightView.isHidden = !tracking + override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { + super.beginTracking(touch, with: event) + highlightView.isHidden = false + + return true + } + + override func endTracking(_ touch: UITouch?, with event: UIEvent?) { + super.endTracking(touch, with: event) + highlightView.isHidden = true } public func title(_ title: String) -> Self { diff --git a/App/Find on Page/FindOnPageViewController.swift b/App/Find on Page/FindOnPageViewController.swift index e21a12e..c8ba54e 100644 --- a/App/Find on Page/FindOnPageViewController.swift +++ b/App/Find on Page/FindOnPageViewController.swift @@ -41,7 +41,7 @@ class FindOnPageViewController: UIViewController, _WKFindDelegate findOnPageView.textField.addAction(UIAction(handler: { [unowned self] _ in self.findString = findOnPageView.textField.text - webView?._find(self.findString, options: self.findOptions, maxCount: Int(self.maxCount)) + webView?._find(self.findString, options: self.findOptions, maxCount: UInt(self.maxCount)) }), for: .editingChanged) findOnPageView.prevResultButton.addAction(UIAction(handler: { [unowned self] _ in @@ -82,24 +82,20 @@ class FindOnPageViewController: UIViewController, _WKFindDelegate @objc override func findNext(_ sender: Any?) { - webView?._find(self.findString, options: self.findOptions, maxCount: Int(self.maxCount)) + webView?._find(self.findString, options: self.findOptions, maxCount: UInt(self.maxCount)) } @objc override func findPrevious(_ sender: Any?) { let options: _WKFindOptions = self.findOptions.union(.backwards) - webView?._find(self.findString, options: options, maxCount: Int(self.maxCount)) + webView?._find(self.findString, options: options, maxCount: UInt(self.maxCount)) } func _webView(_ webView: WKWebView!, didFailToFind string: String!) { // ?? } - - private func _webView(_ webView: WKWebView!, didCountMatches matches: UInt, for string: String!) { - // TODO: Update a label - } - - private func _webView(_ webView: WKWebView!, didFindMatches matches: UInt, for string: String!, withMatch matchIndex: Int) { + + internal func _webView(_ webView: WKWebView!, didFindMatches matches: UInt, for string: String!, withMatch matchIndex: Int) { findOnPageView.nextResultButton.isEnabled = matches > 0 findOnPageView.prevResultButton.isEnabled = matches > 0 } diff --git a/App/KeyboardShortcuts.swift b/App/KeyboardShortcuts.swift index a15ec52..72bcb60 100644 --- a/App/KeyboardShortcuts.swift +++ b/App/KeyboardShortcuts.swift @@ -6,7 +6,6 @@ // import UIKit -import UIKit_Private.UIKeyCommand_Private @objc protocol ShortcutResponder: AnyObject { @@ -170,14 +169,14 @@ public class KeyboardShortcuts { modifiers: [.alternate], input: "x", title: "Raise Script Policy Restriction", action: #selector(ShortcutResponder.raiseScriptPolicyRestriction) - )._nonRepeatable(), + ), // Lower Script Policy Restriction UIKeyCommand( modifiers: [.alternate], input: "c", title: "Lower Script Policy Restriction", action: #selector(ShortcutResponder.lowerScriptPolicyRestriction) - )._nonRepeatable(), + ), ]) ].removeNulls() diff --git a/App/Supporting Files/SBrowser-Bridging-Header.h b/App/Supporting Files/SBrowser-Bridging-Header.h index 5f8d47e..e15e400 100644 --- a/App/Supporting Files/SBrowser-Bridging-Header.h +++ b/App/Supporting Files/SBrowser-Bridging-Header.h @@ -5,8 +5,9 @@ #import "SBRProcessBundleBridge.h" #import "SBRScriptPolicy.h" +#import "WebKitDefines.h" + // SPI -#import #import #import diff --git a/App/Supporting Files/WebKitDefines.h b/App/Supporting Files/WebKitDefines.h new file mode 100644 index 0000000..f8d3327 --- /dev/null +++ b/App/Supporting Files/WebKitDefines.h @@ -0,0 +1,19 @@ +// +// WebKitDefines.h +// SBrowser +// +// Created by James Magahern on 4/11/25. +// + +#ifndef WebKitDefines_h +#define WebKitDefines_h + +#define WK_API_AVAILABLE(...) +#define WK_API_UNAVAILABLE(...) +#define WK_CLASS_AVAILABLE(...) __attribute__((visibility("default"))) WK_API_AVAILABLE(__VA_ARGS__) +#define WK_API_DEPRECATED(_message, ...) __attribute__((deprecated(_message))) +#define WK_API_DEPRECATED_WITH_REPLACEMENT(_replacement, ...) __attribute__((deprecated("use " #_replacement))) +#define WK_CLASS_DEPRECATED_WITH_REPLACEMENT(_replacement, ...) __attribute__((visibility("default"))) __attribute__((deprecated("use " #_replacement))) + + +#endif /* WebKitDefines_h */ diff --git a/App/Titlebar and URL Bar/TitlebarView.swift b/App/Titlebar and URL Bar/TitlebarView.swift index 63631a0..6fac93d 100644 --- a/App/Titlebar and URL Bar/TitlebarView.swift +++ b/App/Titlebar and URL Bar/TitlebarView.swift @@ -6,7 +6,6 @@ // import UIKit -import QuartzCore_Private class SecurityIndicatorView: UIView { @@ -70,7 +69,7 @@ class TitlebarView: UIView addSubview(separatorView) separatorView.backgroundColor = UIColor(white: 1.0, alpha: 0.20) - separatorView.layer.compositingFilter = kCAFilterPlusL + separatorView.layer.compositingFilter = "kCAFilterPlusL" titleLabelView.textColor = .white titleLabelView.layer.shadowColor = UIColor.black.cgColor diff --git a/App/Titlebar and URL Bar/URLBar.swift b/App/Titlebar and URL Bar/URLBar.swift index 248b518..5e4f0f2 100644 --- a/App/Titlebar and URL Bar/URLBar.swift +++ b/App/Titlebar and URL Bar/URLBar.swift @@ -183,7 +183,7 @@ class URLBar: ReliefButton controlsView.autoresizingMask = [] controlsView.clearButton.addAction(.init(handler: { [textField] _ in - textField.clearText() + textField.text = "" }), for: .primaryActionTriggered) controlsView.autocorrectButton.addAction(.init(handler: { [unowned self] _ in diff --git a/App/Utilities/Geometry.swift b/App/Utilities/Geometry.swift index ef9036c..6daa9e8 100644 --- a/App/Utilities/Geometry.swift +++ b/App/Utilities/Geometry.swift @@ -33,14 +33,14 @@ extension CGRect public func centeredY(inRect: CGRect) -> CGRect { var rect = self - rect.origin.y = CGRound(inRect.origin.y + (inRect.height - rect.height) / 2.0) + rect.origin.y = (inRect.origin.y + (inRect.height - rect.height) / 2.0).rounded() return rect } public func centeredX(inRect: CGRect) -> CGRect { var rect = self - rect.origin.x = CGRound(inRect.origin.x + (inRect.width - rect.width) / 2.0) + rect.origin.x = (inRect.origin.x + (inRect.width - rect.width) / 2.0).rounded() return rect } diff --git a/SBrowser.xcodeproj/project.pbxproj b/SBrowser.xcodeproj/project.pbxproj index b46d6a6..39b67a1 100644 --- a/SBrowser.xcodeproj/project.pbxproj +++ b/SBrowser.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 70; objects = { /* Begin PBXBuildFile section */ @@ -160,6 +160,7 @@ CD19576C268BE95900E8089B /* GenericContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenericContentView.swift; sourceTree = ""; }; CD361CF4271A3718006E9CA5 /* SBRScriptPolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SBRScriptPolicy.h; sourceTree = ""; }; CD361CF5271A3718006E9CA5 /* SBRScriptPolicy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SBRScriptPolicy.m; sourceTree = ""; }; + CD3D6CED2DA9F8910099667F /* WebKitDefines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebKitDefines.h; sourceTree = ""; }; CD470C4125DE056600AFBE0E /* BrowserViewController+WebKitDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BrowserViewController+WebKitDelegate.swift"; sourceTree = ""; }; CD470C4325DE070400AFBE0E /* BrowserViewController+Keyboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BrowserViewController+Keyboard.swift"; sourceTree = ""; }; CD7313E12705349700053347 /* ScriptPolicyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptPolicyViewController.swift; sourceTree = ""; }; @@ -201,6 +202,10 @@ CDF3468F276C14BD00FB3141 /* CodeEditorSettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeEditorSettingsViewController.swift; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedRootGroup section */ + CDB73F3F2DA9F2F100DF4FAB /* WebKit Headers */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = "WebKit Headers"; sourceTree = ""; }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 1ADFF45924C7DE53006DC7AE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -284,6 +289,7 @@ CDB6808828B4569F007D787E /* LICENSE.txt */, 1ADFF45E24C7DE53006DC7AE /* App */, 1ADFF48524C8C12F006DC7AE /* SBrowserProcessBundle */, + CDB73F3F2DA9F2F100DF4FAB /* WebKit Headers */, 1ADFF48224C8C12F006DC7AE /* Frameworks */, 1ADFF45D24C7DE53006DC7AE /* Products */, ); @@ -335,6 +341,7 @@ 1ADFF46824C7DE54006DC7AE /* Assets.xcassets */, 1ADFF46A24C7DE54006DC7AE /* LaunchScreen.storyboard */, 1ADFF46D24C7DE54006DC7AE /* Info.plist */, + CD3D6CED2DA9F8910099667F /* WebKitDefines.h */, ); path = "Supporting Files"; sourceTree = ""; @@ -780,11 +787,12 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "\"WebKit Headers\""; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos.internal; + SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; @@ -837,10 +845,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "\"WebKit Headers\""; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - SDKROOT = iphoneos.internal; + SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; VALIDATE_PRODUCT = YES; @@ -908,7 +917,6 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; PRODUCT_BUNDLE_IDENTIFIER = net.buzzert.SBrowserProcessBundle; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos.internal; STRIP_INSTALLED_PRODUCT = NO; SUPPORTS_MACCATALYST = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -925,7 +933,6 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; PRODUCT_BUNDLE_IDENTIFIER = net.buzzert.SBrowserProcessBundle; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos.internal; SUPPORTS_MACCATALYST = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; TARGETED_DEVICE_FAMILY = "1,2,6"; diff --git a/SBrowserProcessBundle/SBRProcessPlugin.h b/SBrowserProcessBundle/SBRProcessPlugin.h index f3d6dc3..63077ce 100644 --- a/SBrowserProcessBundle/SBRProcessPlugin.h +++ b/SBrowserProcessBundle/SBRProcessPlugin.h @@ -6,7 +6,7 @@ // #import -#import +#import "WKWebProcessPlugIn.h" NS_ASSUME_NONNULL_BEGIN diff --git a/WebKit Headers/WebKit/WKBase.h b/WebKit Headers/WebKit/WKBase.h new file mode 100644 index 0000000..3a9326c --- /dev/null +++ b/WebKit Headers/WebKit/WKBase.h @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2010-2017 Apple Inc. All rights reserved. + * Portions Copyright (c) 2010 Motorola Mobility, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WKBase_h +#define WKBase_h + +#include +#include + +#include + + +/* WebKit2 shared types */ + +typedef uint32_t WKTypeID; +typedef const void* WKTypeRef; + +typedef const struct OpaqueWKArray* WKArrayRef; +typedef struct OpaqueWKArray* WKMutableArrayRef; + +typedef const struct OpaqueWKDictionary* WKDictionaryRef; +typedef struct OpaqueWKDictionary* WKMutableDictionaryRef; + +typedef const struct OpaqueWKBoolean* WKBooleanRef; +typedef const struct OpaqueWKCertificateInfo* WKCertificateInfoRef; +typedef const struct OpaqueWKConnection* WKConnectionRef; +typedef const struct OpaqueWKContextMenuItem* WKContextMenuItemRef; +typedef const struct OpaqueWKData* WKDataRef; +typedef const struct OpaqueWKDouble* WKDoubleRef; +typedef const struct OpaqueWKError* WKErrorRef; +typedef const struct OpaqueWKGraphicsContext* WKGraphicsContextRef; +typedef const struct OpaqueWKImage* WKImageRef; +typedef const struct OpaqueWKPointRef* WKPointRef; +typedef const struct OpaqueWKRectRef* WKRectRef; +typedef const struct OpaqueWKSecurityOrigin* WKSecurityOriginRef; +typedef const struct OpaqueWKSerializedScriptValue* WKSerializedScriptValueRef; +typedef const struct OpaqueWKSizeRef* WKSizeRef; +typedef const struct OpaqueWKString* WKStringRef; +typedef const struct OpaqueWKUInt64* WKUInt64Ref; +typedef const struct OpaqueWKURL* WKURLRef; +typedef const struct OpaqueWKURLRequest* WKURLRequestRef; +typedef const struct OpaqueWKURLResponse* WKURLResponseRef; +typedef const struct OpaqueWKUserContentURLPattern* WKUserContentURLPatternRef; +typedef const struct OpaqueWKWebArchive* WKWebArchiveRef; +typedef const struct OpaqueWKWebArchiveResource* WKWebArchiveResourceRef; + +/* WebKit2 main API types */ + +typedef const struct OpaqueWKApplicationCacheManager* WKApplicationCacheManagerRef; +typedef const struct OpaqueWKAuthenticationChallenge* WKAuthenticationChallengeRef; +typedef const struct OpaqueWKAuthenticationDecisionListener* WKAuthenticationDecisionListenerRef; +typedef const struct OpaqueWKBackForwardList* WKBackForwardListRef; +typedef const struct OpaqueWKBackForwardListItem* WKBackForwardListItemRef; +typedef const struct OpaqueWKResourceCacheManager* WKResourceCacheManagerRef; +typedef const struct OpaqueWKColorPickerResultListener* WKColorPickerResultListenerRef; +typedef const struct OpaqueWKContext* WKContextRef; +typedef const struct OpaqueWKContextConfiguration* WKContextConfigurationRef; +typedef const struct OpaqueWKContextMenuListener* WKContextMenuListenerRef; +typedef const struct OpaqueWKCookieManager* WKCookieManagerRef; +typedef const struct OpaqueWKCredential* WKCredentialRef; +typedef const struct OpaqueWKDownload* WKDownloadRef; +typedef const struct OpaqueWKExperimentalFeature* WKFeatureRef; +typedef const struct OpaqueWKFormSubmissionListener* WKFormSubmissionListenerRef; +typedef const struct OpaqueWKFrameHandle* WKFrameHandleRef; +typedef const struct OpaqueWKFrameInfo* WKFrameInfoRef; +typedef const struct OpaqueWKFrame* WKFrameRef; +typedef const struct OpaqueWKFramePolicyListener* WKFramePolicyListenerRef; +typedef const struct OpaqueWKGeolocationManager* WKGeolocationManagerRef; +typedef const struct OpaqueWKGeolocationPermissionRequest* WKGeolocationPermissionRequestRef; +typedef const struct OpaqueWKGeolocationPosition* WKGeolocationPositionRef; +typedef const struct OpaqueWKGrammarDetail* WKGrammarDetailRef; +typedef const struct OpaqueWKHTTPCookieStore* WKHTTPCookieStoreRef; +typedef const struct OpaqueWKHitTestResult* WKHitTestResultRef; +typedef const struct OpaqueWKIconDatabase* WKIconDatabaseRef; +typedef const struct OpaqueWKInspector* WKInspectorRef; +typedef const struct OpaqueWKInternalDebugFeature* WKInternalDebugFeatureRef; +typedef const struct OpaqueWKKeyValueStorageManager* WKKeyValueStorageManagerRef; +typedef const struct OpaqueWKMessageListener* WKMessageListenerRef; +typedef const struct OpaqueWKNavigationAction* WKNavigationActionRef; +typedef const struct OpaqueWKNavigationData* WKNavigationDataRef; +typedef const struct OpaqueWKNavigation* WKNavigationRef; +typedef const struct OpaqueWKNavigationResponse* WKNavigationResponseRef; +typedef const struct OpaqueWKNotification* WKNotificationRef; +typedef const struct OpaqueWKNotificationManager* WKNotificationManagerRef; +typedef const struct OpaqueWKNotificationPermissionRequest* WKNotificationPermissionRequestRef; +typedef const struct OpaqueWKNotificationProvider* WKNotificationProviderRef; +typedef const struct OpaqueWKOpenPanelParameters* WKOpenPanelParametersRef; +typedef const struct OpaqueWKOpenPanelResultListener* WKOpenPanelResultListenerRef; +typedef const struct OpaqueWKPage* WKPageRef; +typedef const struct OpaqueWKPageConfiguration* WKPageConfigurationRef; +typedef const struct OpaqueWKPageGroup* WKPageGroupRef; +typedef const struct OpaqueWKPreferences* WKPreferencesRef; +typedef const struct OpaqueWKProtectionSpace* WKProtectionSpaceRef; +typedef const struct OpaqueWKPageRunBeforeUnloadConfirmPanelResultListener* WKPageRunBeforeUnloadConfirmPanelResultListenerRef; +typedef const struct OpaqueWKPageRunJavaScriptAlertResultListener* WKPageRunJavaScriptAlertResultListenerRef; +typedef const struct OpaqueWKPageRunJavaScriptConfirmResultListener* WKPageRunJavaScriptConfirmResultListenerRef; +typedef const struct OpaqueWKPageRunJavaScriptPromptResultListener* WKPageRunJavaScriptPromptResultListenerRef; +typedef const struct OpaqueWKPageRequestStorageAccessConfirmResultListener* WKPageRequestStorageAccessConfirmResultListenerRef; +typedef const struct OpaqueWKResourceLoadStatisticsManager* WKResourceLoadStatisticsManagerRef; +typedef const struct OpaqueWKTextChecker* WKTextCheckerRef; +typedef const struct OpaqueWKSession* WKSessionRef; +typedef const struct OpaqueWKSessionState* WKSessionStateRef; +typedef const struct OpaqueWKUserContentController* WKUserContentControllerRef; +typedef const struct OpaqueWKUserContentExtensionStore* WKUserContentExtensionStoreRef; +typedef const struct OpaqueWKUserContentFilter* WKUserContentFilterRef; +typedef const struct OpaqueWKUserMediaPermissionCheck* WKUserMediaPermissionCheckRef; +typedef const struct OpaqueWKUserMediaPermissionRequest* WKUserMediaPermissionRequestRef; +typedef const struct OpaqueWKUserScript* WKUserScriptRef; +typedef const struct OpaqueWKViewportAttributes* WKViewportAttributesRef; +typedef const struct OpaqueWKWebsiteDataConfigurationStore* WKWebsiteDataStoreConfigurationRef; +typedef const struct OpaqueWKWebsiteDataStore* WKWebsiteDataStoreRef; +typedef const struct OpaqueWKWebsitePolicies* WKWebsitePoliciesRef; +typedef const struct OpaqueWKWindowFeatures* WKWindowFeaturesRef; +typedef const struct OpaqueWKSpeechRecognitionPermissionCallback* WKSpeechRecognitionPermissionCallbackRef; +typedef const struct OpaqueWKMediaKeySystemPermissionRequest* WKMediaKeySystemPermissionRequestRef; +typedef const struct OpaqueWKMediaKeySystemPermissionCallback* WKMediaKeySystemPermissionCallbackRef; +typedef const struct OpaqueWKQueryPermissionResultCallback* WKQueryPermissionResultCallbackRef; + +/* WebKit2 Bundle types */ + +typedef const struct OpaqueWKBundle* WKBundleRef; +typedef const struct OpaqueWKBundleBackForwardList* WKBundleBackForwardListRef; +typedef const struct OpaqueWKBundleBackForwardListItem* WKBundleBackForwardListItemRef; +typedef const struct OpaqueWKBundleDOMCSSStyleDeclaration* WKBundleCSSStyleDeclarationRef; +typedef const struct OpaqueWKBundleDOMWindowExtension* WKBundleDOMWindowExtensionRef; +typedef const struct OpaqueWKBundleFileHandle* WKBundleFileHandleRef; +typedef const struct OpaqueWKBundleFrame* WKBundleFrameRef; +typedef const struct OpaqueWKBundleHitTestResult* WKBundleHitTestResultRef; +typedef const struct OpaqueWKBundleInspector* WKBundleInspectorRef; +typedef const struct OpaqueWKBundleNavigationAction* WKBundleNavigationActionRef; +typedef const struct OpaqueWKBundleNodeHandle* WKBundleNodeHandleRef; +typedef const struct OpaqueWKBundlePage* WKBundlePageRef; +typedef const struct OpaqueWKBundlePageBanner* WKBundlePageBannerRef; +typedef const struct OpaqueWKBundlePageGroup* WKBundlePageGroupRef; +typedef const struct OpaqueWKBundlePageOverlay* WKBundlePageOverlayRef; +typedef const struct OpaqueWKBundleRangeHandle* WKBundleRangeHandleRef; +typedef const struct OpaqueWKBundleScriptWorld* WKBundleScriptWorldRef; + +#endif /* WKBase_h */ diff --git a/WebKit Headers/WebKit/WKBaseMac.h b/WebKit Headers/WebKit/WKBaseMac.h new file mode 100644 index 0000000..772bdfa --- /dev/null +++ b/WebKit Headers/WebKit/WKBaseMac.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2013 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WKBaseMac_h +#define WKBaseMac_h + +#ifndef WKBase_h +#error "Please #include \"WKBase.h\" instead of this file directly." +#endif + +typedef const struct OpaqueWKObjCTypeWrapper* WKObjCTypeWrapperRef; + +#endif /* WKBaseMac_h */ diff --git a/WebKit Headers/WebKit/WKDeclarationSpecifiers.h b/WebKit Headers/WebKit/WKDeclarationSpecifiers.h new file mode 100644 index 0000000..736cb7a --- /dev/null +++ b/WebKit Headers/WebKit/WKDeclarationSpecifiers.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. + * Portions Copyright (c) 2010 Motorola Mobility, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WKDeclarationSpecifiers_h +#define WKDeclarationSpecifiers_h + +#ifndef __has_declspec_attribute +#define __has_declspec_attribute(x) 0 +#endif + +#undef WK_EXPORT +#if defined(WK_NO_EXPORT) +#define WK_EXPORT +#elif defined(WIN32) || defined(_WIN32) || defined(__CC_ARM) || defined(__ARMCC__) || (__has_declspec_attribute(dllimport) && __has_declspec_attribute(dllexport)) +#if defined(BUILDING_WebKit) +#define WK_EXPORT __declspec(dllexport) +#else +#define WK_EXPORT __declspec(dllimport) +#endif /* defined(BUILDING_WebKit) */ +#elif defined(__GNUC__) +#define WK_EXPORT __attribute__((visibility("default"))) +#else /* !defined(WK_NO_EXPORT) */ +#define WK_EXPORT +#endif /* defined(WK_NO_EXPORT) */ + +#if !defined(WK_INLINE) +#if defined(__cplusplus) +#define WK_INLINE static inline +#elif defined(__GNUC__) +#define WK_INLINE static __inline__ +#else +#define WK_INLINE static +#endif +#endif /* !defined(WK_INLINE) */ + +#ifndef __has_extension +#define __has_extension(x) 0 +#endif + +#if __has_extension(enumerator_attributes) && __has_extension(attribute_unavailable_with_message) +#define WK_C_DEPRECATED(message) __attribute__((deprecated(message))) +#else +#define WK_C_DEPRECATED(message) +#endif + +#ifndef __has_attribute +#define __has_attribute(x) 0 +#endif + +#if __has_attribute(unavailable) +#define WK_UNAVAILABLE __attribute__((unavailable)) +#else +#define WK_UNAVAILABLE +#endif + +#endif /* WKDeclarationSpecifiers_h */ diff --git a/WebKit Headers/WebKit/WKLayoutMode.h b/WebKit Headers/WebKit/WKLayoutMode.h new file mode 100644 index 0000000..bb75f17 --- /dev/null +++ b/WebKit Headers/WebKit/WKLayoutMode.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WKLayoutMode_h +#define WKLayoutMode_h + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + kWKLayoutModeViewSize = 0, + kWKLayoutModeFixedSize = 1, + kWKLayoutModeDynamicSizeComputedFromViewScale = 2, + kWKLayoutModeDynamicSizeComputedFromMinimumDocumentSize = 4 +}; +typedef uint32_t WKLayoutMode; + +#ifdef __cplusplus +} +#endif + +#endif /* WKLayoutMode_h */ diff --git a/WebKit Headers/WebKit/WKProcessPoolPrivate.h b/WebKit Headers/WebKit/WKProcessPoolPrivate.h new file mode 100644 index 0000000..f3b1899 --- /dev/null +++ b/WebKit Headers/WebKit/WKProcessPoolPrivate.h @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2014-2022 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import +#import + +@class WKWebView; +@class WKWebsiteDataStore; +@class _WKAutomationSession; +@class _WKDownload; +@class _WKProcessPoolConfiguration; + +@protocol _WKAutomationDelegate; +@protocol _WKDownloadDelegate; +@protocol _WKGeolocationCoreLocationProvider; + +@interface WKProcessPool () +- (instancetype)_initWithConfiguration:(_WKProcessPoolConfiguration *)configuration __attribute__((objc_method_family(init))) NS_DESIGNATED_INITIALIZER; +@end + +@interface WKProcessPool (WKPrivate) + ++ (WKProcessPool *)_sharedProcessPool; + ++ (NSArray *)_allProcessPoolsForTesting WK_API_AVAILABLE(macos(10.14), ios(12.0)); + +@property (nonatomic, readonly) _WKProcessPoolConfiguration *_configuration; + +- (void)_setAllowsSpecificHTTPSCertificate:(NSArray *)certificateChain forHost:(NSString *)host WK_API_DEPRECATED_WITH_REPLACEMENT("WKWebsiteDataStore._allowTLSCertificateChain:forHost:", macos(10.10, 12.0), ios(8.0, 15.0)); +- (void)_setCanHandleHTTPSServerTrustEvaluation:(BOOL)value WK_API_DEPRECATED_WITH_REPLACEMENT("_WKWebsiteDataStoreConfiguration.fastServerTrustEvaluationEnabled", macos(10.11, 10.15.4), ios(9.0, 13.4)); + +- (id)_objectForBundleParameter:(NSString *)parameter; +- (void)_setObject:(id )object forBundleParameter:(NSString *)parameter; +// FIXME: This should be NSDictionary> +- (void)_setObjectsForBundleParametersWithDictionary:(NSDictionary *)dictionary WK_API_AVAILABLE(macos(10.12), ios(10.0)); + +#if !TARGET_OS_IPHONE +- (void)_resetPluginLoadClientPolicies:(NSDictionary *)policies WK_API_AVAILABLE(macos(10.13)); +@property (nonatomic, readonly, copy) NSDictionary *_pluginLoadClientPolicies WK_API_AVAILABLE(macos(10.13)); +#endif + +@property (nonatomic, weak, setter=_setDownloadDelegate:) id <_WKDownloadDelegate> _downloadDelegate WK_API_DEPRECATED_WITH_REPLACEMENT("WKDownload.downloadDelegate", macos(10.10, 12.0), ios(8.0, 15.0)); +@property (nonatomic, weak, setter=_setAutomationDelegate:) id <_WKAutomationDelegate> _automationDelegate WK_API_AVAILABLE(macos(10.12), ios(10.0)); + +#if TARGET_OS_IPHONE +@property (nonatomic, setter=_setCoreLocationProvider:) id <_WKGeolocationCoreLocationProvider> _coreLocationProvider WK_API_AVAILABLE(ios(11.0)); +#endif + ++ (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL; ++ (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL bundleIdentifierIfNotInContainer:(NSString *)bundleIdentifier; + ++ (void)_setWebProcessCountLimit:(unsigned)limit WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +- (void)_warmInitialProcess WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_automationCapabilitiesDidChange WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_setAutomationSession:(_WKAutomationSession *)automationSession WK_API_AVAILABLE(macos(10.12), ios(10.0)); + +@property (nonatomic, copy, setter=_setJavaScriptConfigurationDirectory:) NSURL *_javaScriptConfigurationDirectory WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); + +- (void)_addSupportedPlugin:(NSString *) domain named:(NSString *) name withMimeTypes: (NSSet *) mimeTypes withExtensions: (NSSet *) extensions WK_API_AVAILABLE(macos(10.14), ios(12.0)); +- (void)_clearSupportedPlugins WK_API_AVAILABLE(macos(10.14), ios(12.0)); + +- (void)_registerURLSchemeAsCanDisplayOnlyIfCanRequest:(NSString *)scheme WK_API_AVAILABLE(macos(10.14), ios(12.0)); +- (void)_registerURLSchemeAsSecure:(NSString *)scheme WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (void)_registerURLSchemeAsBypassingContentSecurityPolicy:(NSString *)scheme WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (void)_setDomainRelaxationForbiddenForURLScheme:(NSString *)scheme WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +- (_WKDownload *)_downloadURLRequest:(NSURLRequest *)request websiteDataStore:(WKWebsiteDataStore *)dataStore originatingWebView:(WKWebView *)webView WK_API_DEPRECATED_WITH_REPLACEMENT("WKWebView _downloadRequest", macos(10.10, 12.0), ios(8.0, 15.0)); +- (_WKDownload *)_resumeDownloadFromData:(NSData *)resumeData websiteDataStore:(WKWebsiteDataStore *)dataStore path:(NSString *)path originatingWebView:(WKWebView *)webView WK_API_DEPRECATED_WITH_REPLACEMENT("WKWebView.resumeDownloadFromResumeData:completionHandler:", macos(10.10, 12.0), ios(8.0, 15.0)); + ++ (void)_setLinkedOnOrAfterEverything WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +// Test only. Should be called only while no web content processes are running. +- (void)_terminateServiceWorkers WK_API_AVAILABLE(macos(10.14), ios(12.0)); + +// Test only. +- (pid_t)_prewarmedProcessIdentifier WK_API_AVAILABLE(macos(10.15), ios(13.0)); + +- (void)_terminateAllWebContentProcesses; + +// Test only. +- (size_t)_webProcessCount WK_API_AVAILABLE(macos(10.13), ios(11.0)); +- (BOOL)_hasPrewarmedWebProcess WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (size_t)_webProcessCountIgnoringPrewarmed WK_API_AVAILABLE(macos(10.14), ios(12.0)); +- (size_t)_webProcessCountIgnoringPrewarmedAndCached WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (size_t)_pluginProcessCount WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); +- (size_t)_serviceWorkerProcessCount WK_API_AVAILABLE(macos(10.14), ios(12.0)); +- (void)_makeNextWebProcessLaunchFailForTesting WK_API_AVAILABLE(macos(10.14), ios(12.0)); +- (NSUInteger)_maximumSuspendedPageCount WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (NSUInteger)_processCacheCapacity WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (NSUInteger)_processCacheSize WK_API_AVAILABLE(macos(10.15), ios(13.0)); +- (void)_clearWebProcessCache WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (void)_setUseSeparateServiceWorkerProcess:(BOOL)forceServiceWorkerProcess WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (pid_t)_gpuProcessIdentifier WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (BOOL)_hasAudibleMediaActivity WK_API_AVAILABLE(macos(13.0), ios(16.0)); +- (BOOL)_requestWebProcessTermination:(pid_t)pid WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +// Test only. Returns web processes running web pages (does not include web processes running service workers) +- (size_t)_webPageContentProcessCount WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); + +// Test only. Should be called before any web content processes are launched. ++ (void)_forceGameControllerFramework WK_API_AVAILABLE(macos(10.13), ios(11.0)); ++ (void)_setLinkedOnOrAfterEverythingForTesting WK_API_AVAILABLE(macos(12.0), ios(15.0)); ++ (void)_setLinkedOnOrBeforeEverythingForTesting WK_API_AVAILABLE(macos(12.0), ios(15.0)); ++ (void)_setCaptivePortalModeEnabledGloballyForTesting:(BOOL)isEnabled WK_API_AVAILABLE(macos(13.0), ios(16.0)); ++ (void)_clearCaptivePortalModeEnabledGloballyForTesting WK_API_AVAILABLE(macos(13.0), ios(16.0)); ++ (BOOL)_lockdownModeEnabledGloballyForTesting WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +- (void)_preconnectToServer:(NSURL *)serverURL WK_API_DEPRECATED_WITH_REPLACEMENT("WKWebView._preconnectToServer", macos(10.13.4, 10.15.4), ios(11.3, 13.4)); + +// Test only. +- (void)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid completionHandler:(void(^)(NSArray *))completionHandler WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (void)_clearPermanentCredentialsForProtectionSpace:(NSURLProtectionSpace *)protectionSpace WK_API_AVAILABLE(macos(10.15), ios(13.0)); + +@property (nonatomic, getter=_isCookieStoragePartitioningEnabled, setter=_setCookieStoragePartitioningEnabled:) BOOL _cookieStoragePartitioningEnabled WK_API_DEPRECATED("Partitioned cookies are no longer supported", macos(10.12.3, 10.14.4), ios(10.3, 12.2)); + +- (WKNotificationManagerRef)_notificationManagerForTesting; + +// Test only. +- (void)_seedResourceLoadStatisticsForTestingWithFirstParty:(NSURL *)firstPartyURL thirdParty:(NSURL *)thirdPartyURL shouldScheduleNotification:(BOOL)shouldScheduleNotification completionHandler:(void(^)(void))completionHandler WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (void)_garbageCollectJavaScriptObjectsForTesting WK_API_AVAILABLE(macos(11.0), ios(14.0)); +- (size_t)_numberOfConnectedGamepadsForTesting WK_API_AVAILABLE(macos(11.0), ios(14.0)); +- (size_t)_numberOfConnectedHIDGamepadsForTesting WK_API_AVAILABLE(macos(11.0), ios(15.0)); +- (size_t)_numberOfConnectedGameControllerFrameworkGamepadsForTesting WK_API_AVAILABLE(macos(11.0), ios(14.0)); +- (void)_setUsesOnlyHIDGamepadProviderForTesting:(BOOL)usesHIDProvider WK_API_AVAILABLE(macos(11.0), ios(14.0)); +@end diff --git a/WebKit Headers/WebKit/WKUserContentControllerPrivate.h b/WebKit Headers/WebKit/WKUserContentControllerPrivate.h new file mode 100644 index 0000000..2c4a2fc --- /dev/null +++ b/WebKit Headers/WebKit/WKUserContentControllerPrivate.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@class WKContentWorld; +@class WKUserScript; +@class _WKUserContentFilter; +@class _WKUserContentWorld; +@class _WKUserStyleSheet; + +@interface WKUserContentController (WKPrivate) + +- (void)_removeUserScript:(WKUserScript *)userScript WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_removeAllUserScriptsAssociatedWithContentWorld:(WKContentWorld *)contentWorld WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +- (void)_addUserScriptImmediately:(WKUserScript *)userScript WK_API_AVAILABLE(macos(10.14), ios(12.0)); + +// FIXME: Remove this once rdar://100785999 is unblocked. +- (void)_addUserContentFilter:(_WKUserContentFilter *)userContentFilter WK_API_DEPRECATED_WITH_REPLACEMENT("addContentRuleList", macos(10.11, 13.3), ios(9.0, 16.4)); + +- (void)_removeUserContentFilter:(NSString *)userContentFilterName WK_API_AVAILABLE(macos(10.11), ios(9.0)); +- (void)_removeAllUserContentFilters WK_API_AVAILABLE(macos(10.11), ios(9.0)); +- (void)_addContentRuleList:(WKContentRuleList *)contentRuleList extensionBaseURL:(NSURL *)extensionBaseURL WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +@property (nonatomic, readonly, copy) NSArray<_WKUserStyleSheet *> *_userStyleSheets WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_addUserStyleSheet:(_WKUserStyleSheet *)userStyleSheet WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_removeUserStyleSheet:(_WKUserStyleSheet *)userStyleSheet WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_removeAllUserStyleSheets WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_removeAllUserStyleSheetsAssociatedWithContentWorld:(WKContentWorld *)contentWorld WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +- (void)_addScriptMessageHandler:(id )scriptMessageHandler name:(NSString *)name userContentWorld:(_WKUserContentWorld *)userContentWorld WK_API_DEPRECATED_WITH_REPLACEMENT("_addScriptMessageHandler:name:contentWorld:", macos(10.11, 11.0), ios(9.0, 14.0)); +- (void)_addScriptMessageHandler:(id )scriptMessageHandler name:(NSString *)name contentWorld:(WKContentWorld *)contentWorld; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +- (void)_removeScriptMessageHandlerForName:(NSString *)name userContentWorld:(_WKUserContentWorld *)userContentWorld; +- (void)_removeAllScriptMessageHandlersAssociatedWithUserContentWorld:(_WKUserContentWorld *)userContentWorld; +#pragma clang diagnostic pop + +@end diff --git a/WebKit Headers/WebKit/WKWebProcessPlugIn.h b/WebKit Headers/WebKit/WKWebProcessPlugIn.h new file mode 100644 index 0000000..fa1d2ec --- /dev/null +++ b/WebKit Headers/WebKit/WKWebProcessPlugIn.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2012-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import +#import + +@class WKWebProcessPlugInController; +@class WKWebProcessPlugInBrowserContextController; + +@protocol WKWebProcessPlugIn +@optional +- (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController initializeWithObject:(id)initializationObject; +- (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController didCreateBrowserContextController:(WKWebProcessPlugInBrowserContextController *)browserContextController; +- (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController willDestroyBrowserContextController:(WKWebProcessPlugInBrowserContextController *)browserContextController; +- (NSArray *)additionalClassesForParameterCoder; +@end + +@interface WKWebProcessPlugInController : NSObject +- (void)extendClassesForParameterCoder:(NSArray *)classes; + +@property (readonly) id parameters; + +@end diff --git a/WebKit Headers/WebKit/WKWebProcessPlugInBrowserContextController.h b/WebKit Headers/WebKit/WKWebProcessPlugInBrowserContextController.h new file mode 100644 index 0000000..b1c9e62 --- /dev/null +++ b/WebKit Headers/WebKit/WKWebProcessPlugInBrowserContextController.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2012 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import + +@class WKDOMDocument; +@class WKDOMRange; +@class WKWebProcessPlugInFrame; +@protocol WKWebProcessPlugInLoadDelegate; + +@interface WKWebProcessPlugInBrowserContextController : NSObject + +@property (readonly) WKDOMDocument *mainFrameDocument; + +@property (readonly) WKDOMRange *selectedRange; + +@property (readonly) WKWebProcessPlugInFrame *mainFrame; + +@property (weak) id loadDelegate; + +@end diff --git a/WebKit Headers/WebKit/WKWebProcessPlugInBrowserContextControllerPrivate.h b/WebKit Headers/WebKit/WKWebProcessPlugInBrowserContextControllerPrivate.h new file mode 100644 index 0000000..c103901 --- /dev/null +++ b/WebKit Headers/WebKit/WKWebProcessPlugInBrowserContextControllerPrivate.h @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2012 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import + +@class WKBrowsingContextHandle; +@class _WKRemoteObjectRegistry; +@protocol WKWebProcessPlugInEditingDelegate; +@protocol WKWebProcessPlugInFormDelegatePrivate; + +@interface WKWebProcessPlugInBrowserContextController (WKPrivate) + +@property (nonatomic, readonly) WKBundlePageRef _bundlePageRef; + +@property (nonatomic, readonly) WKBrowsingContextHandle *handle; + +@property (nonatomic, readonly) _WKRemoteObjectRegistry *_remoteObjectRegistry; + +@property (weak, setter=_setFormDelegate:) id _formDelegate; +@property (weak, setter=_setEditingDelegate:) id _editingDelegate API_AVAILABLE(macos(10.12.3), ios(10.3)); + + + +@property (nonatomic, readonly) BOOL _usesNonPersistentWebsiteDataStore; + +@property (nonatomic, readonly) NSString *_groupIdentifier API_AVAILABLE(macos(12.0), ios(15.0)); + ++ (instancetype)lookUpBrowsingContextFromHandle:(WKBrowsingContextHandle *)handle; + +@end diff --git a/WebKit Headers/WebKit/WKWebProcessPlugInFrame.h b/WebKit Headers/WebKit/WKWebProcessPlugInFrame.h new file mode 100644 index 0000000..cce0c2e --- /dev/null +++ b/WebKit Headers/WebKit/WKWebProcessPlugInFrame.h @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2013 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import +#import +#import + +@class _WKFrameHandle; +@class WKWebProcessPlugInCSSStyleDeclarationHandle; +@class WKWebProcessPlugInHitTestResult; +@class WKWebProcessPlugInNodeHandle; +@class WKWebProcessPlugInRangeHandle; +@class WKWebProcessPlugInScriptWorld; + +typedef NS_OPTIONS(NSUInteger, WKHitTestOptions) { + WKHitTestOptionAllowUserAgentShadowRootContent = 1 << 0, +}; + +@interface WKWebProcessPlugInFrame : NSObject + +@property (nonatomic, readonly) NSURL *URL; +@property (nonatomic, readonly) NSArray *childFrames; +@property (nonatomic, readonly) BOOL containsAnyFormElements; +@property (nonatomic, readonly) BOOL isMainFrame; + +@property (nonatomic, readonly) _WKFrameHandle *handle; + +// Returns URLs ordered by resolution in descending order. +// FIXME: These should be tagged nonnull. +@property (nonatomic, readonly) NSArray *appleTouchIconURLs API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, readonly) NSArray *faviconURLs API_AVAILABLE(macos(10.12), ios(10.0)); + +- (JSContext *)jsContextForWorld:(WKWebProcessPlugInScriptWorld *)world; +- (JSContext *)jsContextForServiceWorkerWorld:(WKWebProcessPlugInScriptWorld *)world; +- (WKWebProcessPlugInHitTestResult *)hitTest:(CGPoint)point; +- (WKWebProcessPlugInHitTestResult *)hitTest:(CGPoint)point options:(WKHitTestOptions)options API_AVAILABLE(macos(12.0), ios(15.0)); +- (JSValue *)jsCSSStyleDeclarationForCSSStyleDeclarationHandle:(WKWebProcessPlugInCSSStyleDeclarationHandle *)cssStyleDeclarationHandle inWorld:(WKWebProcessPlugInScriptWorld *)world API_AVAILABLE(macos(13.0), ios(16.0)); +- (JSValue *)jsNodeForNodeHandle:(WKWebProcessPlugInNodeHandle *)nodeHandle inWorld:(WKWebProcessPlugInScriptWorld *)world; +- (JSValue *)jsRangeForRangeHandle:(WKWebProcessPlugInRangeHandle *)rangeHandle inWorld:(WKWebProcessPlugInScriptWorld *)world API_AVAILABLE(macos(10.12.3), ios(10.3)); + +@end diff --git a/WebKit Headers/WebKit/WKWebProcessPlugInLoadDelegate.h b/WebKit Headers/WebKit/WKWebProcessPlugInLoadDelegate.h new file mode 100644 index 0000000..bb2506b --- /dev/null +++ b/WebKit Headers/WebKit/WKWebProcessPlugInLoadDelegate.h @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2013 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import +#import + +@class WKWebProcessPlugInBrowserContextController; +@class WKWebProcessPlugInFrame; +@class WKWebProcessPlugInScriptWorld; + +@protocol WKWebProcessPlugInLoadDelegate +@optional + +// Frame loading + +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didStartProvisionalLoadForFrame:(WKWebProcessPlugInFrame *)frame; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didReceiveServerRedirectForProvisionalLoadForFrame:(WKWebProcessPlugInFrame *)frame; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didCommitLoadForFrame:(WKWebProcessPlugInFrame *)frame; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didFinishDocumentLoadForFrame:(WKWebProcessPlugInFrame *)frame; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didFailProvisionalLoadWithErrorForFrame:(WKWebProcessPlugInFrame *)frame error:(NSError *)error; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didFailLoadWithErrorForFrame:(WKWebProcessPlugInFrame *)frame error:(NSError *)error; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didFinishLoadForFrame:(WKWebProcessPlugInFrame *)frame; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didSameDocumentNavigation:(_WKSameDocumentNavigationType)navigationType forFrame:(WKWebProcessPlugInFrame *)frame; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller didClearWindowObjectForFrame:(WKWebProcessPlugInFrame *)frame inScriptWorld:(WKWebProcessPlugInScriptWorld *)scriptWorld; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller globalObjectIsAvailableForFrame:(WKWebProcessPlugInFrame *)frame inScriptWorld:(WKWebProcessPlugInScriptWorld *)scriptWorld; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller serviceWorkerGlobalObjectIsAvailableForFrame:(WKWebProcessPlugInFrame *)frame inScriptWorld:(WKWebProcessPlugInScriptWorld *)scriptWorld; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller willInjectUserScriptForFrame:(WKWebProcessPlugInFrame *)frame inScriptWorld:(WKWebProcessPlugInScriptWorld *)scriptWorld; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller didRemoveFrameFromHierarchy:(WKWebProcessPlugInFrame *)frame; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller didHandleOnloadEventsForFrame:(WKWebProcessPlugInFrame *)frame; + +// Layout +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didLayoutForFrame:(WKWebProcessPlugInFrame *)frame; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller renderingProgressDidChange:(_WKRenderingProgressEvents)events; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didFirstVisuallyNonEmptyLayoutForFrame:(WKWebProcessPlugInFrame *)frame; +- (_WKRenderingProgressEvents)webProcessPlugInBrowserContextControllerRenderingProgressEvents:(WKWebProcessPlugInBrowserContextController *)controller; + +// Resource loading + +- (NSURLRequest *)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller frame:(WKWebProcessPlugInFrame *)frame willSendRequestForResource:(uint64_t)resource request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse; +- (NSURLRequest *)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller frame:(WKWebProcessPlugInFrame *)frame willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse; + +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller frame:(WKWebProcessPlugInFrame *)frame didInitiateLoadForResource:(uint64_t)resource request:(NSURLRequest *)request pageIsProvisionallyLoading:(BOOL)pageIsProvisionallyLoading; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller frame:(WKWebProcessPlugInFrame *)frame didInitiateLoadForResource:(uint64_t)resource request:(NSURLRequest *)request; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller frame:(WKWebProcessPlugInFrame *)frame didReceiveResponse:(NSURLResponse *)response forResource:(uint64_t)resource; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller frame:(WKWebProcessPlugInFrame *)frame didFinishLoadForResource:(uint64_t)resource; +- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller frame:(WKWebProcessPlugInFrame *)frame didFailLoadForResource:(uint64_t)resource error:(NSError *)error; + +@end diff --git a/WebKit Headers/WebKit/WKWebViewConfigurationPrivate.h b/WebKit Headers/WebKit/WKWebViewConfigurationPrivate.h new file mode 100644 index 0000000..c776a0a --- /dev/null +++ b/WebKit Headers/WebKit/WKWebViewConfigurationPrivate.h @@ -0,0 +1,173 @@ +/* + * Copyright (C) 2014-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import + +#if TARGET_OS_IPHONE +typedef NS_ENUM(NSUInteger, _WKDragLiftDelay) { + _WKDragLiftDelayShort = 0, + _WKDragLiftDelayMedium, + _WKDragLiftDelayLong +} WK_API_AVAILABLE(ios(11.0)); + +typedef NS_ENUM(NSUInteger, _WKAttributionOverrideTesting) { + _WKAttributionOverrideTestingNoOverride = 0, + _WKAttributionOverrideTestingAppInitiated, + _WKAttributionOverrideTestingUserInitiated +} WK_API_AVAILABLE(ios(15.0)); + +@protocol _UIClickInteractionDriving; +#endif + +typedef NS_ENUM(NSUInteger, _WKContentSecurityPolicyModeForExtension) { + _WKContentSecurityPolicyModeForExtensionNone = 0, + _WKContentSecurityPolicyModeForExtensionManifestV2, + _WKContentSecurityPolicyModeForExtensionManifestV3 +} WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +@class WKWebView; +@class _WKApplicationManifest; +@class _WKVisitedLinkStore; +@class _WKWebExtensionController; + +@interface WKWebViewConfiguration (WKPrivate) + +@property (nonatomic, weak, setter=_setRelatedWebView:) WKWebView *_relatedWebView; +@property (nonatomic, weak, setter=_setWebViewToCloneSessionStorageFrom:) WKWebView *_webViewToCloneSessionStorageFrom; +@property (nonatomic, copy, setter=_setGroupIdentifier:) NSString *_groupIdentifier; + +@property (nonatomic, strong, setter=_setVisitedLinkStore:) _WKVisitedLinkStore *_visitedLinkStore; + +@property (nonatomic, strong, readonly) _WKWebExtensionController *_strongWebExtensionController; +@property (nonatomic, weak, setter=_setWeakWebExtensionController:) _WKWebExtensionController *_weakWebExtensionController; +@property (nonatomic, strong, setter=_setWebExtensionController:) _WKWebExtensionController *_webExtensionController; + +@property (nonatomic, weak, setter=_setAlternateWebViewForNavigationGestures:) WKWebView *_alternateWebViewForNavigationGestures; + +@property (nonatomic, setter=_setRespectsImageOrientation:) BOOL _respectsImageOrientation WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setPrintsBackgrounds:) BOOL _printsBackgrounds WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setIncrementalRenderingSuppressionTimeout:) NSTimeInterval _incrementalRenderingSuppressionTimeout WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setAllowsJavaScriptMarkup:) BOOL _allowsJavaScriptMarkup WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setConvertsPositionStyleOnCopy:) BOOL _convertsPositionStyleOnCopy WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setAllowsMetaRefresh:) BOOL _allowsMetaRefresh WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setAllowUniversalAccessFromFileURLs:) BOOL _allowUniversalAccessFromFileURLs WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setAllowTopNavigationToDataURLs:) BOOL _allowTopNavigationToDataURLs WK_API_AVAILABLE(macos(11.0), ios(14.0)); +@property (nonatomic, setter=_setNeedsStorageAccessFromFileURLsQuirk:) BOOL _needsStorageAccessFromFileURLsQuirk WK_API_AVAILABLE(macos(10.12.3), ios(10.3)); +@property (nonatomic, setter=_setMainContentUserGestureOverrideEnabled:) BOOL _mainContentUserGestureOverrideEnabled WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setInvisibleAutoplayNotPermitted:) BOOL _invisibleAutoplayNotPermitted WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setMediaDataLoadsAutomatically:) BOOL _mediaDataLoadsAutomatically WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setAttachmentElementEnabled:) BOOL _attachmentElementEnabled WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setAttachmentWideLayoutEnabled:) BOOL _attachmentWideLayoutEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); +@property (nonatomic, setter=_setAttachmentFileWrapperClass:) Class _attachmentFileWrapperClass WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +@property (nonatomic, setter=_setInitialCapitalizationEnabled:) BOOL _initialCapitalizationEnabled WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setApplePayEnabled:) BOOL _applePayEnabled WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, setter=_setWaitsForPaintAfterViewDidMoveToWindow:) BOOL _waitsForPaintAfterViewDidMoveToWindow WK_API_AVAILABLE(macos(10.12.3), ios(10.3)); +@property (nonatomic, setter=_setControlledByAutomation:, getter=_isControlledByAutomation) BOOL _controlledByAutomation WK_API_AVAILABLE(macos(10.12.3), ios(10.3)); +@property (nonatomic, setter=_setApplicationManifest:) _WKApplicationManifest *_applicationManifest WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); +@property (nonatomic, setter=_setColorFilterEnabled:) BOOL _colorFilterEnabled WK_API_AVAILABLE(macos(10.14), ios(12.0)); +@property (nonatomic, setter=_setIncompleteImageBorderEnabled:) BOOL _incompleteImageBorderEnabled WK_API_AVAILABLE(macos(10.14), ios(12.0)); +@property (nonatomic, setter=_setDrawsBackground:) BOOL _drawsBackground WK_API_AVAILABLE(macos(10.14), ios(12.0)); +@property (nonatomic, setter=_setShouldDeferAsynchronousScriptsUntilAfterDocumentLoad:) BOOL _shouldDeferAsynchronousScriptsUntilAfterDocumentLoad WK_API_AVAILABLE(macos(10.14), ios(12.0)); + +@property (nonatomic, readonly) WKWebsiteDataStore *_websiteDataStoreIfExists WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +@property (nonatomic, copy, setter=_setCORSDisablingPatterns:) NSArray *_corsDisablingPatterns WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +@property (nonatomic, copy, setter=_setMaskedURLSchemes:) NSSet *_maskedURLSchemes WK_API_AVAILABLE(macos(13.0), ios(16.0)); +@property (nonatomic, setter=_setDeferrableUserScriptsShouldWaitUntilNotification:) BOOL _deferrableUserScriptsShouldWaitUntilNotification WK_API_AVAILABLE(macos(11.0), ios(14.0)); +@property (nonatomic, setter=_setCrossOriginAccessControlCheckEnabled:) BOOL _crossOriginAccessControlCheckEnabled WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +@property (nonatomic, setter=_setLoadsFromNetwork:) BOOL _loadsFromNetwork WK_API_DEPRECATED_WITH_REPLACEMENT("_allowedNetworkHosts", macos(11.0, 12.0), ios(14.0, 15.0)); +@property (nonatomic, copy, setter=_setAllowedNetworkHosts:) NSSet *_allowedNetworkHosts WK_API_AVAILABLE(macos(12.0), ios(15.0)); +@property (nonatomic, setter=_setLoadsSubresources:) BOOL _loadsSubresources WK_API_AVAILABLE(macos(11.0), ios(14.0)); +@property (nonatomic, setter=_setIgnoresAppBoundDomains:) BOOL _ignoresAppBoundDomains WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +#if TARGET_OS_IPHONE +@property (nonatomic, setter=_setClientNavigationsRunAtForegroundPriority:) BOOL _clientNavigationsRunAtForegroundPriority WK_API_AVAILABLE(ios(13.4)); +@property (nonatomic, setter=_setAlwaysRunsAtForegroundPriority:) BOOL _alwaysRunsAtForegroundPriority WK_API_DEPRECATED_WITH_REPLACEMENT("_clientNavigationsRunAtForegroundPriority", ios(9.0, 14.0)); +@property (nonatomic, setter=_setInlineMediaPlaybackRequiresPlaysInlineAttribute:) BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute WK_API_AVAILABLE(ios(10.0)); +@property (nonatomic, setter=_setAllowsInlineMediaPlaybackAfterFullscreen:) BOOL _allowsInlineMediaPlaybackAfterFullscreen WK_API_AVAILABLE(ios(10.0)); +@property (nonatomic, setter=_setDragLiftDelay:) _WKDragLiftDelay _dragLiftDelay WK_API_AVAILABLE(ios(11.0)); +@property (nonatomic, setter=_setLongPressActionsEnabled:) BOOL _longPressActionsEnabled WK_API_AVAILABLE(ios(12.0)); +@property (nonatomic, setter=_setSystemPreviewEnabled:) BOOL _systemPreviewEnabled WK_API_AVAILABLE(ios(12.0)); +@property (nonatomic, setter=_setShouldDecidePolicyBeforeLoadingQuickLookPreview:) BOOL _shouldDecidePolicyBeforeLoadingQuickLookPreview WK_API_AVAILABLE(ios(13.0)); +@property (nonatomic, setter=_setCanShowWhileLocked:) BOOL _canShowWhileLocked WK_API_AVAILABLE(ios(13.0)); +@property (nonatomic, setter=_setClickInteractionDriverForTesting:) id <_UIClickInteractionDriving> _clickInteractionDriverForTesting WK_API_AVAILABLE(ios(13.0)); +@property (nonatomic, setter=_setAppInitiatedOverrideValueForTesting:) _WKAttributionOverrideTesting _appInitiatedOverrideValueForTesting WK_API_AVAILABLE(ios(15.0)); +#else +@property (nonatomic, setter=_setShowsURLsInToolTips:) BOOL _showsURLsInToolTips WK_API_AVAILABLE(macos(10.12)); +@property (nonatomic, setter=_setServiceControlsEnabled:) BOOL _serviceControlsEnabled WK_API_AVAILABLE(macos(10.12)); +@property (nonatomic, setter=_setImageControlsEnabled:) BOOL _imageControlsEnabled WK_API_AVAILABLE(macos(13.0)); +@property (nonatomic, setter=_setContextMenuQRCodeDetectionEnabled:) BOOL _contextMenuQRCodeDetectionEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA)); +@property (nonatomic, readwrite, setter=_setRequiresUserActionForEditingControlsManager:) BOOL _requiresUserActionForEditingControlsManager WK_API_AVAILABLE(macos(10.12)); +@property (nonatomic, readwrite, setter=_setCPULimit:) double _cpuLimit WK_API_AVAILABLE(macos(10.13.4)); +@property (nonatomic, readwrite, setter=_setPageGroup:) WKPageGroupRef _pageGroup WK_API_AVAILABLE(macos(10.13.4)); +#endif + +@property (nonatomic, setter=_setRequiresUserActionForAudioPlayback:) BOOL _requiresUserActionForAudioPlayback WK_API_DEPRECATED_WITH_REPLACEMENT("mediaTypesRequiringUserActionForPlayback", macos(10.12, 10.12), ios(10.0, 10.0)); +@property (nonatomic, setter=_setRequiresUserActionForVideoPlayback:) BOOL _requiresUserActionForVideoPlayback WK_API_DEPRECATED_WITH_REPLACEMENT("mediaTypesRequiringUserActionForPlayback", macos(10.12, 10.12), ios(10.0, 10.0)); + +@property (nonatomic, setter=_setOverrideContentSecurityPolicy:) NSString *_overrideContentSecurityPolicy WK_API_AVAILABLE(macos(10.12.3), ios(10.3)); +@property (nonatomic, setter=_setMediaContentTypesRequiringHardwareSupport:) NSString *_mediaContentTypesRequiringHardwareSupport WK_API_AVAILABLE(macos(10.13), ios(11.0)); +@property (nonatomic, setter=_setLegacyEncryptedMediaAPIEnabled:) BOOL _legacyEncryptedMediaAPIEnabled WK_API_AVAILABLE(macos(10.13), ios(11.0)); +@property (nonatomic, setter=_setAllowMediaContentTypesRequiringHardwareSupportAsFallback:) BOOL _allowMediaContentTypesRequiringHardwareSupportAsFallback WK_API_AVAILABLE(macos(10.13), ios(11.0)); + +@property (nonatomic, setter=_setMediaCaptureEnabled:) BOOL _mediaCaptureEnabled WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +// The input of this SPI is an array of image UTI (Uniform Type Identifier). +@property (nonatomic, copy, setter=_setAdditionalSupportedImageTypes:) NSArray *_additionalSupportedImageTypes WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +@property (nonatomic, setter=_setUndoManagerAPIEnabled:) BOOL _undoManagerAPIEnabled WK_API_AVAILABLE(macos(10.15), ios(13.0)); +@property (nonatomic, setter=_setShouldRelaxThirdPartyCookieBlocking:) BOOL _shouldRelaxThirdPartyCookieBlocking WK_API_AVAILABLE(macos(11.0), ios(14.0)); +@property (nonatomic, setter=_setProcessDisplayName:) NSString *_processDisplayName WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +@property (nonatomic, setter=_setAppHighlightsEnabled:) BOOL _appHighlightsEnabled WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +@property (nonatomic, setter=_setAllowTestOnlyIPC:) BOOL _allowTestOnlyIPC WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); + +// The maximum Lab color difference allowed between two consecutive page top snapshots. +// Expects 0 (disables page top color sampling entirely) or any positive number. +@property (nonatomic, setter=_setSampledPageTopColorMaxDifference:) double _sampledPageTopColorMaxDifference WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +// How far down the page the sampled page top color needs to extend in order to be considered valid. +// Expects 0 (the color doesn't need to continue into the page at all) or any positive number. +@property (nonatomic, setter=_setSampledPageTopColorMinHeight:) double _sampledPageTopColorMinHeight WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +// Attributes network activity from this WKWebView to the app with this bundle. +@property (nonatomic, setter=_setAttributedBundleIdentifier:) NSString *_attributedBundleIdentifier; + +@property (nonatomic, setter=_setContentSecurityPolicyModeForExtension:) _WKContentSecurityPolicyModeForExtension _contentSecurityPolicyModeForExtension WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +@property (nonatomic, setter=_setMarkedTextInputEnabled:) BOOL _markedTextInputEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); +@end + +#if TARGET_OS_IPHONE + +@interface WKWebViewConfiguration (WKPrivateDeprecated) + +@property (nonatomic, setter=_setTextInteractionGesturesEnabled:) BOOL _textInteractionGesturesEnabled WK_API_DEPRECATED_WITH_REPLACEMENT("WKPreferences.textInteractionGesturesEnabled", ios(12.0, 15.0)); + +@end + +#endif diff --git a/WebKit Headers/WebKit/WKWebViewPrivate.h b/WebKit Headers/WebKit/WKWebViewPrivate.h new file mode 100644 index 0000000..702b5c4 --- /dev/null +++ b/WebKit Headers/WebKit/WKWebViewPrivate.h @@ -0,0 +1,770 @@ +/* + * Copyright (C) 2014-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if TARGET_OS_IPHONE +#if __has_include() +#import +#endif +#if __has_include() +#import +#endif +#endif + +#import +#import +#import +#import +#import +#import +#import +#import + +typedef NS_ENUM(NSInteger, _WKPaginationMode) { + _WKPaginationModeUnpaginated, + _WKPaginationModeLeftToRight, + _WKPaginationModeRightToLeft, + _WKPaginationModeTopToBottom, + _WKPaginationModeBottomToTop, +} WK_API_AVAILABLE(macos(10.10), ios(8.0)); + +typedef NS_OPTIONS(NSUInteger, _WKMediaCaptureStateDeprecated) { + _WKMediaCaptureStateDeprecatedNone = 0, + _WKMediaCaptureStateDeprecatedActiveMicrophone = 1 << 0, + _WKMediaCaptureStateDeprecatedActiveCamera = 1 << 1, + _WKMediaCaptureStateDeprecatedMutedMicrophone = 1 << 2, + _WKMediaCaptureStateDeprecatedMutedCamera = 1 << 3, +} WK_API_AVAILABLE(macos(10.13), ios(11.0)); + +typedef NS_OPTIONS(NSUInteger, _WKMediaMutedState) { + _WKMediaNoneMuted = 0, + _WKMediaAudioMuted = 1 << 0, + _WKMediaCaptureDevicesMuted = 1 << 1, + _WKMediaScreenCaptureMuted = 1 << 2, +} WK_API_AVAILABLE(macos(10.13), ios(11.0)); + +typedef NS_OPTIONS(NSUInteger, _WKCaptureDevices) { + _WKCaptureDeviceMicrophone = 1 << 0, + _WKCaptureDeviceCamera = 1 << 1, + _WKCaptureDeviceDisplay = 1 << 2, +} WK_API_AVAILABLE(macos(10.13), ios(11.0)); + +typedef NS_OPTIONS(NSUInteger, _WKSelectionAttributes) { + _WKSelectionAttributeNoSelection = 0, + _WKSelectionAttributeIsCaret = 1 << 0, + _WKSelectionAttributeIsRange = 1 << 1, +} WK_API_AVAILABLE(macos(10.15), ios(13.0)); + +typedef NS_ENUM(NSInteger, _WKShouldOpenExternalURLsPolicy) { + _WKShouldOpenExternalURLsPolicyNotAllow, + _WKShouldOpenExternalURLsPolicyAllow, + _WKShouldOpenExternalURLsPolicyAllowExternalSchemesButNotAppLinks, +} WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +#if TARGET_OS_IPHONE + +typedef NS_ENUM(NSUInteger, _WKDragInteractionPolicy) { + _WKDragInteractionPolicyDefault = 0, + _WKDragInteractionPolicyAlwaysEnable, + _WKDragInteractionPolicyAlwaysDisable +} WK_API_AVAILABLE(ios(11.0)); + +#else +#import +#endif + +#if !TARGET_OS_IPHONE + +typedef NS_ENUM(NSInteger, _WKImmediateActionType) { + _WKImmediateActionNone, + _WKImmediateActionLinkPreview, + _WKImmediateActionDataDetectedItem, + _WKImmediateActionLookupText, + _WKImmediateActionMailtoLink, + _WKImmediateActionTelLink +} WK_API_AVAILABLE(macos(10.12)); + +typedef NS_OPTIONS(NSUInteger, _WKRectEdge) { + _WKRectEdgeNone = 0, + _WKRectEdgeLeft = 1 << CGRectMinXEdge, + _WKRectEdgeTop = 1 << CGRectMinYEdge, + _WKRectEdgeRight = 1 << CGRectMaxXEdge, + _WKRectEdgeBottom = 1 << CGRectMaxYEdge, + _WKRectEdgeAll = _WKRectEdgeLeft | _WKRectEdgeTop | _WKRectEdgeRight | _WKRectEdgeBottom, +} WK_API_AVAILABLE(macos(10.13.4)); + +#endif + +@class UIEventAttribution; +@class UITextInputTraits; +@class WKBrowsingContextHandle; +@class WKDownload; +@class WKFrameInfo; +@class WKSecurityOrigin; +@class WKWebpagePreferences; +@class _UIFindInteraction; +@class _WKApplicationManifest; +@class _WKDataTask; +@class _WKFrameHandle; +@class _WKFrameTreeNode; +@class _WKHitTestResult; +@class _WKInspector; +@class _WKRemoteObjectRegistry; +@class _WKSafeBrowsingWarning; +@class _WKSessionState; +@class _WKTextInputContext; +@class _WKTextManipulationConfiguration; +@class _WKTextManipulationItem; +@class _WKThumbnailView; +@class _WKWebViewPrintFormatter; + +@protocol WKHistoryDelegatePrivate; +@protocol _WKAppHighlightDelegate; +@protocol _WKDiagnosticLoggingDelegate; +@protocol _WKFindDelegate; +@protocol _WKFullscreenDelegate; +@protocol _WKIconLoadingDelegate; +@protocol _WKInputDelegate; +@protocol _WKResourceLoadDelegate; +@protocol _WKTextManipulationDelegate; + +@interface WKWebView (WKPrivate) + +// FIXME: This should return a _WKRemoteObjectRegistry *. +@property (nonatomic, readonly) id _remoteObjectRegistry; +@property (nonatomic, readonly) WKBrowsingContextHandle *_handle; + +@property (nonatomic, setter=_setObservedRenderingProgressEvents:) _WKRenderingProgressEvents _observedRenderingProgressEvents; + +@property (nonatomic, weak, setter=_setHistoryDelegate:) id _historyDelegate; +@property (nonatomic, weak, setter=_setIconLoadingDelegate:) id <_WKIconLoadingDelegate> _iconLoadingDelegate; +@property (nonatomic, weak, setter=_setResourceLoadDelegate:) id <_WKResourceLoadDelegate> _resourceLoadDelegate WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +@property (nonatomic, readonly) NSURL *_unreachableURL; +@property (nonatomic, readonly) NSURL *_mainFrameURL WK_API_AVAILABLE(macos(10.15), ios(13.0)); +@property (nonatomic, readonly) NSURL *_resourceDirectoryURL WK_API_AVAILABLE(macos(10.15), ios(13.0)); + +- (void)_loadAlternateHTMLString:(NSString *)string baseURL:(NSURL *)baseURL forUnreachableURL:(NSURL *)unreachableURL; +- (WKNavigation *)_loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL userData:(id)userData WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLs:(BOOL)shouldOpenExternalURLs WK_API_AVAILABLE(macos(10.13), ios(11.0)); +- (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLsPolicy:(_WKShouldOpenExternalURLsPolicy)shouldOpenExternalURLsPolicy WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +@property (nonatomic, readonly) NSArray *_certificateChain WK_API_DEPRECATED_WITH_REPLACEMENT("certificateChain", macos(10.10, 10.11), ios(8.0, 9.0)); +@property (nonatomic, readonly) NSURL *_committedURL; +@property (nonatomic, readonly) NSString *_MIMEType; +@property (nonatomic, readonly) NSString *_userAgent WK_API_AVAILABLE(macos(10.11), ios(9.0)); +@property (copy, setter=_setApplicationNameForUserAgent:) NSString *_applicationNameForUserAgent; +@property (copy, setter=_setCustomUserAgent:) NSString *_customUserAgent; + +@property (nonatomic, readonly, getter=_isPlayingAudio) BOOL _playingAudio WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); +@property (nonatomic, setter=_setUserContentExtensionsEnabled:) BOOL _userContentExtensionsEnabled WK_API_AVAILABLE(macos(10.11), ios(9.0)); + +@property (nonatomic, readonly) pid_t _webProcessIdentifier; +@property (nonatomic, readonly) pid_t _provisionalWebProcessIdentifier WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +@property (nonatomic, readonly) pid_t _gpuProcessIdentifier WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +@property (nonatomic, getter=_isEditable, setter=_setEditable:) BOOL _editable WK_API_AVAILABLE(macos(10.11), ios(9.0)); + +/*! @abstract A Boolean value indicating whether any resource on the page +has been loaded over a connection using TLS 1.0 or TLS 1.1. +@discussion @link WKWebView @/link is key-value observing (KVO) compliant +for this property. +*/ +@property (nonatomic, readonly) BOOL _negotiatedLegacyTLS WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); + +@property (nonatomic, readonly) BOOL _wasPrivateRelayed WK_API_AVAILABLE(macos(13.1), ios(16.2)); + +- (void)_frames:(void (^)(_WKFrameTreeNode *))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +// FIXME: Remove these once nobody is using them. +@property (nonatomic, readonly) NSData *_sessionStateData; +- (void)_restoreFromSessionStateData:(NSData *)sessionStateData; + +@property (nonatomic, readonly) _WKSessionState *_sessionState; +- (WKNavigation *)_restoreSessionState:(_WKSessionState *)sessionState andNavigate:(BOOL)navigate; +- (_WKSessionState *)_sessionStateWithFilter:(BOOL (^)(WKBackForwardListItem *item))filter; + +@property (nonatomic, setter=_setAllowsRemoteInspection:) BOOL _allowsRemoteInspection WK_API_DEPRECATED_WITH_REPLACEMENT("inspectable", macos(10.10, 13.3), ios(8.0, 16.4)); +@property (nonatomic, copy, setter=_setRemoteInspectionNameOverride:) NSString *_remoteInspectionNameOverride WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, readonly) BOOL _isBeingInspected WK_API_AVAILABLE(macos(12.0), ios(15.0)); +@property (nonatomic, readonly) _WKInspector *_inspector WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +@property (nonatomic, readonly) _WKFrameHandle *_mainFrame WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +@property (nonatomic, weak, setter=_setTextManipulationDelegate:) id <_WKTextManipulationDelegate> _textManipulationDelegate WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (void)_startTextManipulationsWithConfiguration:(_WKTextManipulationConfiguration *)configuration completion:(void(^)(void))completionHandler WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (void)_completeTextManipulation:(_WKTextManipulationItem *)item completion:(void(^)(BOOL success))completionHandler WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (void)_completeTextManipulationForItems:(NSArray<_WKTextManipulationItem *> *)items completion:(void(^)(NSArray *errors))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +@property (nonatomic, setter=_setAddsVisitedLinks:) BOOL _addsVisitedLinks; + +@property (nonatomic, readonly) BOOL _networkRequestsInProgress; + +@property (nonatomic, readonly, getter=_isShowingNavigationGestureSnapshot) BOOL _showingNavigationGestureSnapshot; + +- (void)_close; +- (BOOL)_tryClose WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (BOOL)_isClosed WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); + +- (void)_updateWebpagePreferences:(WKWebpagePreferences *)webpagePreferences WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (void)_notifyUserScripts WK_API_AVAILABLE(macos(11.0), ios(14.0)); +@property (nonatomic, readonly) BOOL _deferrableUserScriptsNeedNotification WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +- (void)_evaluateJavaScriptWithoutUserGesture:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *))completionHandler WK_API_AVAILABLE(macos(10.13), ios(11.0)); +- (void)_evaluateJavaScript:(NSString *)javaScriptString inFrame:(WKFrameInfo *)frame inContentWorld:(WKContentWorld *)contentWorld completionHandler:(void (^)(id, NSError * error))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); +- (void)_evaluateJavaScript:(NSString *)javaScriptString withSourceURL:(NSURL *)sourceURL inFrame:(WKFrameInfo *)frame inContentWorld:(WKContentWorld *)contentWorld completionHandler:(void (^)(id, NSError * error))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); +- (void)_callAsyncJavaScript:(NSString *)functionBody arguments:(NSDictionary *)arguments inFrame:(WKFrameInfo *)frame inContentWorld:(WKContentWorld *)contentWorld completionHandler:(void (^)(id, NSError *error))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +- (BOOL)_allMediaPresentationsClosed WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +@property (nonatomic, setter=_setLayoutMode:) _WKLayoutMode _layoutMode; +// For use with _layoutMode = _WKLayoutModeFixedSize: +@property (nonatomic, setter=_setFixedLayoutSize:) CGSize _fixedLayoutSize; + +@property (nonatomic, setter=_setViewportSizeForCSSViewportUnits:) CGSize _viewportSizeForCSSViewportUnits WK_API_AVAILABLE(macos(10.13), ios(11.0)); + +@property (nonatomic, setter=_setViewScale:) CGFloat _viewScale WK_API_AVAILABLE(macos(10.11), ios(9.0)); + +@property (nonatomic, setter=_setMinimumEffectiveDeviceWidth:) CGFloat _minimumEffectiveDeviceWidth WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +@property (nonatomic, setter=_setBackgroundExtendsBeyondPage:) BOOL _backgroundExtendsBeyondPage WK_API_AVAILABLE(macos(10.13.4), ios(8.0)); + +- (_WKAttachment *)_insertAttachmentWithFilename:(NSString *)filename contentType:(NSString *)contentType data:(NSData *)data options:(_WKAttachmentDisplayOptions *)options completion:(void(^)(BOOL success))completionHandler WK_API_DEPRECATED_WITH_REPLACEMENT("-_insertAttachmentWithFileWrapper:contentType:options:completion:", macos(10.13.4, 10.14.4), ios(11.3, 12.2)); +- (_WKAttachment *)_insertAttachmentWithFileWrapper:(NSFileWrapper *)fileWrapper contentType:(NSString *)contentType options:(_WKAttachmentDisplayOptions *)options completion:(void(^)(BOOL success))completionHandler WK_API_DEPRECATED_WITH_REPLACEMENT("-_insertAttachmentWithFileWrapper:contentType:completion:", macos(10.14.4, 10.14.4), ios(12.2, 12.2)); +- (_WKAttachment *)_insertAttachmentWithFileWrapper:(NSFileWrapper *)fileWrapper contentType:(NSString *)contentType completion:(void(^)(BOOL success))completionHandler WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (_WKAttachment *)_attachmentForIdentifier:(NSString *)identifier WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +- (void)_simulateDeviceOrientationChangeWithAlpha:(double)alpha beta:(double)beta gamma:(double)gamma WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + ++ (BOOL)_willUpgradeToHTTPS:(NSURL *)url WK_API_AVAILABLE(macos(12.0), ios(15.0)); + ++ (BOOL)_handlesSafeBrowsing WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); ++ (NSURL *)_confirmMalwareSentinel WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); ++ (NSURL *)_visitUnsafeWebsiteSentinel WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (void)_showSafeBrowsingWarningWithTitle:(NSString *)title warning:(NSString *)warning details:(NSAttributedString *)details completionHandler:(void(^)(BOOL))completionHandler WK_API_DEPRECATED_WITH_REPLACEMENT("-_showSafeBrowsingWarningWithURL:title:warning:detailsWithLinks:completionHandler:", macos(10.14.4, 10.15.4), ios(12.2, 13.2)); +- (void)_showSafeBrowsingWarningWithURL:(NSURL *)url title:(NSString *)title warning:(NSString *)warning details:(NSAttributedString *)details completionHandler:(void(^)(BOOL))completionHandler WK_API_DEPRECATED_WITH_REPLACEMENT("-_showSafeBrowsingWarningWithURL:title:warning:detailsWithLinks:completionHandler:", macos(10.14.4, 10.15.4), ios(12.2, 13.2)); +- (void)_showSafeBrowsingWarningWithURL:(NSURL *)url title:(NSString *)title warning:(NSString *)warning detailsWithLinks:(NSAttributedString *)details completionHandler:(void(^)(BOOL, NSURL *))completionHandler WK_API_AVAILABLE(macos(10.15.4), ios(13.2)); + +- (void)_doAfterNextPresentationUpdate:(void (^)(void))updateBlock WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_doAfterNextPresentationUpdateWithoutWaitingForPainting:(void (^)(void))updateBlock WK_API_AVAILABLE(macos(10.12.3), ios(10.3)); + +- (void)_doAfterNextVisibleContentRectUpdate:(void (^)(void))updateBlock WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +- (void)_executeEditCommand:(NSString *)command argument:(NSString *)argument completion:(void (^)(BOOL))completion WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); + +- (void)_isJITEnabled:(void(^)(BOOL))completionHandler WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (void)_removeDataDetectedLinks:(dispatch_block_t)completion WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +- (IBAction)_alignCenter:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_alignJustified:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_alignLeft:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_alignRight:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_indent:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_outdent:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_toggleStrikeThrough:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_insertOrderedList:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_insertUnorderedList:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_insertNestedOrderedList:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_insertNestedUnorderedList:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_increaseListLevel:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_decreaseListLevel:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_changeListType:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_pasteAsQuotation:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_pasteAndMatchStyle:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +- (IBAction)_takeFindStringFromSelection:(id)sender WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +@property (class, nonatomic, copy, setter=_setStringForFind:) NSString *_stringForFind WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +@property (nonatomic, readonly) _WKSelectionAttributes _selectionAttributes WK_API_AVAILABLE(macos(10.15), ios(13.0)); + +- (WKNavigation *)_reloadWithoutContentBlockers WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (WKNavigation *)_reloadExpiredOnly WK_API_AVAILABLE(macos(10.13), ios(11.0)); + +@property (nonatomic, readonly) BOOL _webProcessIsResponsive WK_API_AVAILABLE(macos(10.12), ios(10.0)); +- (void)_killWebContentProcess; +- (void)_killWebContentProcessAndResetState; + +- (void)_getMainResourceDataWithCompletionHandler:(void (^)(NSData *, NSError *))completionHandler; +- (void)_getWebArchiveDataWithCompletionHandler:(void (^)(NSData *, NSError *))completionHandler; +- (void)_getContentsAsStringWithCompletionHandler:(void (^)(NSString *, NSError *))completionHandler WK_API_AVAILABLE(macos(10.13), ios(11.0)); +- (void)_getContentsAsStringWithCompletionHandlerKeepIPCConnectionAliveForTesting:(void (^)(NSString *, NSError *))completionHandler; +- (void)_getContentsOfAllFramesAsStringWithCompletionHandler:(void (^)(NSString *))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); +- (void)_getContentsAsAttributedStringWithCompletionHandler:(void (^)(NSAttributedString *, NSDictionary *, NSError *))completionHandler WK_API_AVAILABLE(macos(10.15), ios(13.0)); + +- (void)_getApplicationManifestWithCompletionHandler:(void (^)(_WKApplicationManifest *))completionHandler WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); + +- (void)_getTextFragmentMatchWithCompletionHandler:(void (^)(NSString *))completionHandler WK_API_AVAILABLE(macos(13.3), ios(16.4)); + +@property (nonatomic, setter=_setPaginationMode:) _WKPaginationMode _paginationMode; +// Whether the column-break-{before,after} properties are respected instead of the +// page-break-{before,after} properties. +@property (nonatomic, setter=_setPaginationBehavesLikeColumns:) BOOL _paginationBehavesLikeColumns; +// Set to 0 to have the page length equal the view length. +@property (nonatomic, setter=_setPageLength:) CGFloat _pageLength; +@property (nonatomic, setter=_setGapBetweenPages:) CGFloat _gapBetweenPages; +@property (nonatomic, setter=_setPaginationLineGridEnabled:) BOOL _paginationLineGridEnabled; +@property (readonly) NSUInteger _pageCount; + +@property (nonatomic, readonly) BOOL _supportsTextZoom; +@property (nonatomic, setter=_setTextZoomFactor:) double _textZoomFactor; +@property (nonatomic, setter=_setPageZoomFactor:) double _pageZoomFactor; + +@property (nonatomic, weak, setter=_setDiagnosticLoggingDelegate:) id <_WKDiagnosticLoggingDelegate> _diagnosticLoggingDelegate WK_API_AVAILABLE(macos(10.11), ios(9.0)); +@property (nonatomic, weak, setter=_setFindDelegate:) id <_WKFindDelegate> _findDelegate; +- (void)_findString:(NSString *)string options:(_WKFindOptions)options maxCount:(NSUInteger)maxCount; +- (void)_countStringMatches:(NSString *)string options:(_WKFindOptions)options maxCount:(NSUInteger)maxCount; +- (void)_hideFindUI; + +@property (nonatomic, weak, setter=_setInputDelegate:) id <_WKInputDelegate> _inputDelegate WK_API_AVAILABLE(macos(10.12), ios(10.0)); + +@property (nonatomic, readonly, getter=_isDisplayingStandaloneImageDocument) BOOL _displayingStandaloneImageDocument; +@property (nonatomic, readonly, getter=_isDisplayingStandaloneMediaDocument) BOOL _displayingStandaloneMediaDocument; + +@property (nonatomic, setter=_setScrollPerformanceDataCollectionEnabled:) BOOL _scrollPerformanceDataCollectionEnabled WK_API_AVAILABLE(macos(10.11), ios(9.0)); +@property (nonatomic, readonly) NSArray *_scrollPerformanceData WK_API_AVAILABLE(macos(10.11), ios(9.0)); + +- (void)_saveBackForwardSnapshotForItem:(WKBackForwardListItem *)item WK_API_AVAILABLE(macos(10.11), ios(9.0)); + +@property (nonatomic, getter=_allowsMediaDocumentInlinePlayback, setter=_setAllowsMediaDocumentInlinePlayback:) BOOL _allowsMediaDocumentInlinePlayback; + +@property (nonatomic, setter=_setFullscreenDelegate:) id<_WKFullscreenDelegate> _fullscreenDelegate WK_API_AVAILABLE(macos(10.13), ios(11.0)); +@property (nonatomic, readonly) BOOL _isInFullscreen WK_API_AVAILABLE(macos(10.12.3)); + +@property (nonatomic, readonly) _WKMediaCaptureStateDeprecated _mediaCaptureState WK_API_AVAILABLE(macos(10.15), ios(13.0)); +@property (nonatomic, readonly) _WKMediaMutedState _mediaMutedState WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +- (void)_setPageMuted:(_WKMediaMutedState)mutedState WK_API_AVAILABLE(macos(10.13), ios(11.0)); + +@property (nonatomic, setter=_setMediaCaptureEnabled:) BOOL _mediaCaptureEnabled WK_API_AVAILABLE(macos(10.13), ios(11.0)); +- (void)_stopMediaCapture WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); + +@property (nonatomic, readonly) BOOL _canTogglePictureInPicture; +@property (nonatomic, readonly) BOOL _isPictureInPictureActive; +- (void)_updateMediaPlaybackControlsManager; +- (void)_togglePictureInPicture; +- (void)_stopAllMediaPlayback; +- (void)_suspendAllMediaPlayback; +- (void)_resumeAllMediaPlayback; +- (void)_closeAllMediaPresentations; + +- (void)_takePDFSnapshotWithConfiguration:(WKSnapshotConfiguration *)snapshotConfiguration completionHandler:(void (^)(NSData *pdfSnapshotData, NSError *error))completionHandler WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); +- (void)_getPDFFirstPageSizeInFrame:(_WKFrameHandle *)frame completionHandler:(void(^)(CGSize))completionHandler WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +- (void)_getProcessDisplayNameWithCompletionHandler:(void (^)(NSString *))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +- (void)_serviceWorkersEnabled:(void(^)(BOOL))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); +- (void)_clearServiceWorkerEntitlementOverride:(void (^)(void))completionHandler WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +- (void)_preconnectToServer:(NSURL *)serverURL WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +@property (nonatomic, setter=_setCanUseCredentialStorage:) BOOL _canUseCredentialStorage WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +- (void)_didEnableBrowserExtensions:(NSDictionary *)extensionIDToNameMap WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (void)_didDisableBrowserExtensions:(NSSet *)extensionIDs WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +@property (nonatomic, weak, setter=_setAppHighlightDelegate:) id <_WKAppHighlightDelegate> _appHighlightDelegate WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (void)_restoreAppHighlights:(NSArray *)highlights WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (void)_restoreAndScrollToAppHighlight:(NSData *)highlight WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (void)_addAppHighlight WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (void)_addAppHighlightInNewGroup:(BOOL)newGroup originatedInApp:(BOOL)originatedInApp WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +// FIXME: Remove old `-[WKWebView _themeColor]` SPI +#if TARGET_OS_IPHONE +@property (nonatomic, readonly) UIColor *_themeColor WK_API_DEPRECATED_WITH_REPLACEMENT("themeColor", ios(15.0, 15.0)); +#else +@property (nonatomic, readonly) NSColor *_themeColor WK_API_DEPRECATED_WITH_REPLACEMENT("themeColor", macos(12.0, 12.0)); +#endif + +// FIXME: Remove old `-[WKWebView _pageExtendedBackgroundColor]` SPI +#if TARGET_OS_IPHONE +@property (nonatomic, readonly) UIColor *_pageExtendedBackgroundColor WK_API_DEPRECATED_WITH_REPLACEMENT("underPageBackgroundColor", ios(15.0, 15.0)); +#else +@property (nonatomic, readonly) NSColor *_pageExtendedBackgroundColor WK_API_DEPRECATED_WITH_REPLACEMENT("underPageBackgroundColor", macos(10.10, 12.0)); +#endif + +// Only set if `-[WKWebViewConfiguration _sampledPageTopColorMaxDifference]` is a positive number. +#if TARGET_OS_IPHONE +@property (nonatomic, readonly) UIColor *_sampledPageTopColor WK_API_AVAILABLE(ios(15.0)); +#else +@property (nonatomic, readonly) NSColor *_sampledPageTopColor WK_API_AVAILABLE(macos(12.0)); +#endif + +- (void)_grantAccessToAssetServices WK_API_AVAILABLE(macos(12.0), ios(14.0)); +- (void)_revokeAccessToAssetServices WK_API_AVAILABLE(macos(12.0), ios(14.0)); + +- (void)_disableURLSchemeCheckInDataDetectors WK_API_AVAILABLE(ios(16.0)); + +/*! @abstract If the WKWebView was created with _shouldAllowUserInstalledFonts = NO, + the web process will automatically use an in-process font registry, and its sandbox + will be restricted to forbid access to fontd. Otherwise, the web process will use + fontd to look up fonts instead of using the in-process registry, and the web + process's sandbox will automatically be extended to allow access to fontd. This + method represents a one-time, web-process-wide switch from using the in-process + font registry to using fontd, including granting the relevant sandbox extension. +*/ +- (void)_switchFromStaticFontRegistryToUserFontRegistry WK_API_AVAILABLE(macos(12.0)); + +- (void)_didLoadAppInitiatedRequest:(void (^)(BOOL result))completionHandler; +- (void)_didLoadNonAppInitiatedRequest:(void (^)(BOOL result))completionHandler; + +- (void)_loadServiceWorker:(NSURL *)url usingModules:(BOOL)usingModules completionHandler:(void (^)(BOOL success))completionHandler WK_API_AVAILABLE(macos(13.3), ios(16.4)); +- (void)_loadServiceWorker:(NSURL *)url completionHandler:(void (^)(BOOL success))completionHandler WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +- (void)_suspendPage:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(12.0), ios(15.0)); +- (void)_resumePage:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +- (void)_startImageAnalysis:(NSString *)identifier target:(NSString *)targetIdentifier WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +- (void)_dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void(^)(_WKDataTask *))completionHandler WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +// Default value is 0. A value of 0 means the window's backing scale factor will be used and automatically update when the window moves screens. +@property (nonatomic, setter=_setOverrideDeviceScaleFactor:) CGFloat _overrideDeviceScaleFactor WK_API_AVAILABLE(macos(10.11), ios(16.4)); + +typedef NS_ENUM(NSInteger, WKDisplayCaptureState) { + WKDisplayCaptureStateNone, + WKDisplayCaptureStateActive, + WKDisplayCaptureStateMuted, +} WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +typedef NS_ENUM(NSInteger, WKSystemAudioCaptureState) { + WKSystemAudioCaptureStateNone, + WKSystemAudioCaptureStateActive, + WKSystemAudioCaptureStateMuted, +} WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +typedef NS_OPTIONS(NSUInteger, WKDisplayCaptureSurfaces) { + WKDisplayCaptureSurfaceNone = 0, + WKDisplayCaptureSurfaceScreen = 0x1, + WKDisplayCaptureSurfaceWindow = 0x2, +}; + +/*! @abstract The type(s) of displays being captured on a web page. + @discussion @link WKWebView @/link is key-value observing (KVO) compliant + for this property. + */ +@property (nonatomic, readonly) WKDisplayCaptureSurfaces _displayCaptureSurfaces WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +/*! @abstract The state of display capture on a web page. + @discussion @link WKWebView @/link is key-value observing (KVO) compliant + for this property. + */ +@property (nonatomic, readonly) WKDisplayCaptureState _displayCaptureState WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +/*! @abstract The state of system audio capture on a web page. + @discussion @link WKWebView @/link is key-value observing (KVO) compliant + for this property. + */ +@property (nonatomic, readonly) WKSystemAudioCaptureState _systemAudioCaptureState WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +/*! @abstract Set display capture state of a WKWebView. + @param state State to apply for capture. + @param completionHandler A block to invoke after the screen state has been changed. + @discussion + If value is WKDisplayCaptureStateNone, this will stop all display capture. + If value is WKDisplayCaptureStateMuted, all active display captures will become muted. + If value is WKDisplayCaptureStateActive, all muted display captures will become active. + */ +- (void)_setDisplayCaptureState:(WKDisplayCaptureState)state completionHandler:(void (^)(void))completionHandler WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +/*! @abstract Set system audio capture state of a WKWebView. + @param state State to apply for system audio capture. + @param completionHandler A block to invoke after the system audio state has been changed. + @discussion + If value is WKSystemAudioCaptureStateNone, this will stop any system audio capture. + If value is WKSystemAudioCaptureStateMuted, any active system audio capture will become muted. + If value is WKSystemAudioCaptureStateActive, any muted system audio capture will become active. + @note When system audio capture is active, if screenCaptureState is active, all system audio will be captured. + Otherwise, if windowCaptureState is active, only the application whose window being is captured will have its audio captured. + If both screenCaptureState and windowCaptureState are None or Muted, no system audio will be captured. + */ +- (void)_setSystemAudioCaptureState:(WKSystemAudioCaptureState)state completionHandler:(void (^)(void))completionHandler WK_API_AVAILABLE(macos(13.0), ios(16.0)); + ++ (void)_permissionChanged:(NSString *)permissionName forOrigin:(WKSecurityOrigin *)origin WK_API_AVAILABLE(macos(13.3), ios(16.4)); + +/*! @abstract `YES` if any animation on the page is allowed to play. + @discussion Animations can be disallowed from starting both individually and globally. If even a single animation is allowed to play, this property will be `YES`. Calling @link _pauseAllAnimationsWithCompletionHandler @/link causes this property to become `NO`, while @link _playAllAnimationsWithCompletionHandler @/link causes it to become `YES`. +*/ +@property (nonatomic, readonly) BOOL _allowsAnyAnimationToPlay WK_API_AVAILABLE(macos(13.3), ios(16.4)); + +/*! @abstract Pauses all animations on the page. + @discussion Calling this function also results in @link _allowsAnyAnimationToPlay @/link becoming `NO`, meaning animations loaded after a call to this function will be paused until @link _playAllAnimationsWithCompletionHandler @/link is called. +*/ +- (void)_pauseAllAnimationsWithCompletionHandler:(void(^)(void))completionHandler WK_API_AVAILABLE(macos(13.3), ios(16.4)); + +/*! @abstract Plays all animations on the page. + @discussion Calling this function also results in @link _allowsAnyAnimationToPlay @/link becoming `YES`, meaning animations loaded after a call to this function will be allowed to begin playing. +*/ +- (void)_playAllAnimationsWithCompletionHandler:(void(^)(void))completionHandler WK_API_AVAILABLE(macos(13.3), ios(16.4)); + +@end + +#if TARGET_OS_IPHONE + +#if !TARGET_OS_TV && !TARGET_OS_WATCH && __has_include() +@interface WKWebView (WKPrivateIOS) <_UITextSearching, UITextSearching, UIFindInteractionDelegate> +#elif TARGET_OS_IOS && __IPHONE_OS_VERSION_MIN_REQUIRED >= 160000 +@interface WKWebView (WKPrivateIOS) +#else +@interface WKWebView (WKPrivateIOS) +#endif + +#if !TARGET_OS_TV && !TARGET_OS_WATCH +@property (nonatomic, copy, setter=_setUIEventAttribution:) UIEventAttribution *_uiEventAttribution WK_API_AVAILABLE(ios(15.0)); +@property (nonatomic, copy, setter=_setEphemeralUIEventAttribution:) UIEventAttribution *_ephemeralUIEventAttribution WK_API_AVAILABLE(ios(16.0)); +- (void)_setEphemeralUIEventAttribution:(UIEventAttribution *)attribution forApplicationWithBundleID:(NSString *)bundleID WK_API_AVAILABLE(ios(16.0)); + +#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MIN_REQUIRED >= 160000 +@property (nonatomic, readonly) _UIFindInteraction *_findInteraction WK_API_AVAILABLE(ios(16.0)); +@property (nonatomic, readwrite, setter=_setFindInteractionEnabled:) BOOL _findInteractionEnabled WK_API_AVAILABLE(ios(16.0)); + +@property (nonatomic, readonly) CALayer *_layerForFindOverlay WK_API_AVAILABLE(ios(16.0)); + +- (void)_requestRectForFoundTextRange:(UITextRange *)ranges completionHandler:(void (^)(CGRect))completionHandler WK_API_AVAILABLE(ios(16.0)); + +- (void)_addLayerForFindOverlay WK_API_AVAILABLE(ios(16.0)); +- (void)_removeLayerForFindOverlay WK_API_AVAILABLE(ios(16.0)); +#endif + +#endif + +@property (nonatomic, readonly) CGRect _contentVisibleRect WK_API_AVAILABLE(ios(10.0)); + +// DERECATED: The setters of the three following function are deprecated, please use overrideLayoutParameters. +// Define the smallest size a page take with a regular viewport. +@property (nonatomic, readonly) CGSize _minimumLayoutSizeOverride; +// Define the largest size the unobscured area can get for the current view bounds. This value is used to define viewport units. +@property (nonatomic, readonly) CGSize _maximumUnobscuredSizeOverride; + +// Define the inset of the scrollview unusable by the web page. +@property (nonatomic, setter=_setObscuredInsets:) UIEdgeInsets _obscuredInsets; + +@property (nonatomic, setter=_setUnobscuredSafeAreaInsets:) UIEdgeInsets _unobscuredSafeAreaInsets WK_API_AVAILABLE(ios(11.0)); +@property (nonatomic, readonly) BOOL _safeAreaShouldAffectObscuredInsets WK_API_AVAILABLE(ios(11.0)); +@property (nonatomic, setter=_setObscuredInsetEdgesAffectedBySafeArea:) UIRectEdge _obscuredInsetEdgesAffectedBySafeArea WK_API_AVAILABLE(ios(11.0)); + +// An ancestor view whose bounds will be intersected with those of this WKWebView to determine the visible region of content to render. +@property (nonatomic, readonly) UIView *_enclosingViewForExposedRectComputation WK_API_AVAILABLE(ios(11.0)); + +// Override the interface orientation. Clients using _beginAnimatedResizeWithUpdates: must update the interface orientation +// in the update block. +@property (nonatomic, setter=_setInterfaceOrientationOverride:) UIInterfaceOrientation _interfaceOrientationOverride; +- (void)_clearInterfaceOrientationOverride WK_API_AVAILABLE(ios(11.0)); + +@property (nonatomic, setter=_setAllowsViewportShrinkToFit:) BOOL _allowsViewportShrinkToFit; + +// FIXME: Remove these three properties once we expose WKWebViewContentProvider as API. +@property (nonatomic, readonly, getter=_isDisplayingPDF) BOOL _displayingPDF; +@property (nonatomic, readonly) NSData *_dataForDisplayedPDF; +// FIXME: This can be removed once WKNavigation's response property is implemented. +@property (nonatomic, readonly) NSString *_suggestedFilenameForDisplayedPDF; + +@property (nonatomic, readonly) _WKWebViewPrintFormatter *_webViewPrintFormatter; + +@property (nonatomic, setter=_setDragInteractionPolicy:) _WKDragInteractionPolicy _dragInteractionPolicy WK_API_AVAILABLE(ios(11.0)); +@property (nonatomic, readonly) BOOL _shouldAvoidResizingWhenInputViewBoundsChange WK_API_AVAILABLE(ios(13.0)); +@property (nonatomic, readonly) BOOL _contentViewIsFirstResponder WK_API_AVAILABLE(ios(12.2)); + +@property (nonatomic, readonly) CGRect _uiTextCaretRect WK_API_AVAILABLE(ios(10.3)); + +@property (nonatomic, readonly) UIView *_safeBrowsingWarning WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +- (CGPoint)_convertPointFromContentsToView:(CGPoint)point WK_API_AVAILABLE(ios(10.0)); +- (CGPoint)_convertPointFromViewToContents:(CGPoint)point WK_API_AVAILABLE(ios(10.0)); + +- (void)_doAfterNextStablePresentationUpdate:(dispatch_block_t)updateBlock WK_API_AVAILABLE(ios(10.3)); + +- (void)_setFont:(UIFont *)font sender:(id)sender WK_API_AVAILABLE(ios(12.2)); +- (void)_setFontSize:(CGFloat)fontSize sender:(id)sender WK_API_AVAILABLE(ios(12.2)); +- (void)_setTextColor:(UIColor *)color sender:(id)sender WK_API_AVAILABLE(ios(12.2)); + +- (void)_detectDataWithTypes:(WKDataDetectorTypes)types completionHandler:(dispatch_block_t)completion WK_API_AVAILABLE(ios(12.2)); + +- (void)_requestActivatedElementAtPosition:(CGPoint)position completionBlock:(void (^)(_WKActivatedElementInfo *))block WK_API_AVAILABLE(ios(11.0)); + +- (void)didStartFormControlInteraction WK_API_AVAILABLE(ios(10.3)); +- (void)didEndFormControlInteraction WK_API_AVAILABLE(ios(10.3)); + +- (void)_beginInteractiveObscuredInsetsChange; +- (void)_endInteractiveObscuredInsetsChange; +- (void)_hideContentUntilNextUpdate; + +- (void)_beginAnimatedResizeWithUpdates:(void (^)(void))updateBlock; +- (void)_endAnimatedResize; +- (void)_resizeWhileHidingContentWithUpdates:(void (^)(void))updateBlock; + +- (void)_snapshotRectAfterScreenUpdates:(BOOL)afterScreenUpdates rectInViewCoordinates:(CGRect)rectInViewCoordinates intoImageOfWidth:(CGFloat)imageWidth completionHandler:(void(^)(CGImageRef))completionHandler WK_API_AVAILABLE(ios(16.0)); +- (void)_snapshotRect:(CGRect)rectInViewCoordinates intoImageOfWidth:(CGFloat)imageWidth completionHandler:(void(^)(CGImageRef))completionHandler; + +- (void)_overrideLayoutParametersWithMinimumLayoutSize:(CGSize)minimumLayoutSize maximumUnobscuredSizeOverride:(CGSize)maximumUnobscuredSizeOverride WK_API_AVAILABLE(ios(9_0)); +- (void)_clearOverrideLayoutParameters WK_API_AVAILABLE(ios(11.0)); +- (void)_overrideViewportWithArguments:(NSDictionary *)arguments WK_API_AVAILABLE(ios(13.0)); + +- (UIView *)_viewForFindUI; + +- (void)_setOverlaidAccessoryViewsInset:(CGSize)inset; + +// Puts the view into a state where being taken out of the view hierarchy and resigning first responder +// will not count as becoming inactive and unfocused. The returned block must be called to exit the state. +- (void (^)(void))_retainActiveFocusedState WK_API_AVAILABLE(ios(9_0)); + +- (void)_becomeFirstResponderWithSelectionMovingForward:(BOOL)selectingForward completionHandler:(void (^)(BOOL didBecomeFirstResponder))completionHandler WK_API_AVAILABLE(ios(9_0)); + +- (id)_snapshotLayerContentsForBackForwardListItem:(WKBackForwardListItem *)item WK_API_AVAILABLE(ios(9_0)); + +- (NSArray *)_dataDetectionResults; + +- (void)_accessibilityRetrieveRectsAtSelectionOffset:(NSInteger)offset withText:(NSString *)text completionHandler:(void (^)(NSArray *rects))completionHandler WK_API_AVAILABLE(ios(11.3)); +- (void)_accessibilityStoreSelection WK_API_AVAILABLE(ios(11.3)); +- (void)_accessibilityClearSelection WK_API_AVAILABLE(ios(11.3)); + +- (void)_accessibilityRetrieveSpeakSelectionContent WK_API_AVAILABLE(ios(11.0)); +- (void)_accessibilityDidGetSpeakSelectionContent:(NSString *)content WK_API_AVAILABLE(ios(11.0)); + +- (UIView *)_fullScreenPlaceholderView WK_API_AVAILABLE(ios(12.0)); + +- (void)_willOpenAppLink WK_API_AVAILABLE(ios(14.0)); + +- (void)_isNavigatingToAppBoundDomain:(void(^)(BOOL))completionHandler WK_API_AVAILABLE(ios(14.0)); +- (void)_isForcedIntoAppBoundMode:(void(^)(BOOL))completionHandler WK_API_AVAILABLE(ios(14.0)); + +- (UITextInputTraits *)_textInputTraits WK_API_AVAILABLE(ios(16.4)); + +@end + +@interface WKWebView () +@end + +#if !TARGET_OS_WATCH + +@interface WKWebView (FullScreenAPI_Private) + +-(BOOL)hasFullScreenWindowController; +-(void)closeFullScreenWindowController; + +@end +#endif // !TARGET_OS_WATCH + +#endif // TARGET_OS_IPHONE + + +#if !TARGET_OS_IPHONE + +@interface WKWebView (WKPrivateMac) + +@property (nonatomic, readonly) WKPageRef _pageRefForTransitionToWKWebView WK_API_AVAILABLE(macos(10.13.4)); +@property (nonatomic, readonly) BOOL _hasActiveVideoForControlsManager WK_API_AVAILABLE(macos(10.12)); +@property (nonatomic, readwrite, setter=_setIgnoresNonWheelEvents:) BOOL _ignoresNonWheelEvents WK_API_AVAILABLE(macos(10.13.4)); +@property (nonatomic, readwrite, setter=_setIgnoresMouseMoveEvents:) BOOL _ignoresMouseMoveEvents WK_API_AVAILABLE(macos(13.0)); + +/*! @abstract A Boolean value indicating whether drawing clips to the visibleRect. +@discussion When YES, the view will use its -visibleRect when determining which areas of the WKWebView to draw. This may improve performance for large WKWebViews which are mostly clipped out by enclosing views. The default value is NO. +*/ +@property (nonatomic, readwrite, setter=_setClipsToVisibleRect:) BOOL _clipsToVisibleRect WK_API_AVAILABLE(macos(11.0)); + +@property (nonatomic, readonly) NSView *_safeBrowsingWarning WK_API_AVAILABLE(macos(10.14.4)); + +@property (nonatomic, readonly) _WKRectEdge _pinnedState WK_API_AVAILABLE(macos(10.13.4)); +@property (nonatomic, setter=_setRubberBandingEnabled:) _WKRectEdge _rubberBandingEnabled WK_API_AVAILABLE(macos(10.13.4)); + +@property (nonatomic, setter=_setBackgroundColor:) NSColor *_backgroundColor WK_API_AVAILABLE(macos(10.14)); +@property (nonatomic, copy, setter=_setUnderlayColor:) NSColor *_underlayColor WK_API_AVAILABLE(macos(10.13.4)); + +@property (nonatomic, setter=_setTotalHeightOfBanners:) CGFloat _totalHeightOfBanners WK_API_AVAILABLE(macos(10.13.4)); +@property (nonatomic, setter=_setDrawsBackground:) BOOL _drawsBackground; +@property (nonatomic, setter=_setTopContentInset:) CGFloat _topContentInset; + +@property (nonatomic, setter=_setAutomaticallyAdjustsContentInsets:) BOOL _automaticallyAdjustsContentInsets; + +@property (nonatomic, setter=_setWindowOcclusionDetectionEnabled:) BOOL _windowOcclusionDetectionEnabled; + +@property (nonatomic, readonly) NSInteger _spellCheckerDocumentTag WK_API_AVAILABLE(macos(10.14)); + +// When using _minimumLayoutWidth, the web content will lay out to the intrinsic height +// of the content; use this property to force it to lay out to the height of the view instead. +@property (nonatomic, setter=_setShouldExpandContentToViewHeightForAutoLayout:) BOOL _shouldExpandContentToViewHeightForAutoLayout WK_API_AVAILABLE(macos(10.12)); + +@property (nonatomic, setter=_setMinimumLayoutWidth:) CGFloat _minimumLayoutWidth WK_API_AVAILABLE(macos(10.12)); +@property (nonatomic, setter=_setSizeToContentAutoSizeMaximumSize:) CGSize _sizeToContentAutoSizeMaximumSize; + +@property (nonatomic, setter=_setAlwaysShowsHorizontalScroller:) BOOL _alwaysShowsHorizontalScroller WK_API_AVAILABLE(macos(10.13.4)); +@property (nonatomic, setter=_setAlwaysShowsVerticalScroller:) BOOL _alwaysShowsVerticalScroller WK_API_AVAILABLE(macos(10.13.4)); + +@property (nonatomic, readwrite, setter=_setUseSystemAppearance:) BOOL _useSystemAppearance WK_API_AVAILABLE(macos(10.14)); +@property (nonatomic, setter=_setOverlayScrollbarStyle:) _WKOverlayScrollbarStyle _overlayScrollbarStyle WK_API_AVAILABLE(macos(10.13.4)); +@property (strong, nonatomic, setter=_setInspectorAttachmentView:) NSView *_inspectorAttachmentView WK_API_AVAILABLE(macos(10.13.4)); + +@property (nonatomic, setter=_setHeaderBannerLayer:) CALayer *_headerBannerLayer; +@property (nonatomic, setter=_setFooterBannerLayer:) CALayer *_footerBannerLayer; + +@property (nonatomic, setter=_setThumbnailView:) _WKThumbnailView *_thumbnailView WK_API_AVAILABLE(macos(10.13.4)); +@property (nonatomic, setter=_setIgnoresAllEvents:) BOOL _ignoresAllEvents WK_API_AVAILABLE(macos(10.13.4)); + +// Defaults to YES; if set to NO, WebKit will draw the grey wash and highlights itself. +@property (nonatomic, setter=_setUsePlatformFindUI:) BOOL _usePlatformFindUI WK_API_AVAILABLE(macos(10.15)); + +- (void)_setShouldSuppressFirstResponderChanges:(BOOL)shouldSuppress; +- (BOOL)_canChangeFrameLayout:(_WKFrameHandle *)frameHandle WK_API_AVAILABLE(macos(10.13.4)); +- (BOOL)_tryToSwipeWithEvent:(NSEvent *)event ignoringPinnedState:(BOOL)ignoringPinnedState WK_API_AVAILABLE(macos(10.13.4)); + +- (void)_dismissContentRelativeChildWindows WK_API_AVAILABLE(macos(10.13.4)); +- (void)_setFrame:(NSRect)rect andScrollBy:(NSSize)offset WK_API_AVAILABLE(macos(10.13.4)); + +- (void)_gestureEventWasNotHandledByWebCore:(NSEvent *)event WK_API_AVAILABLE(macos(10.13.4)); + +- (void)_disableFrameSizeUpdates WK_API_AVAILABLE(macos(10.13.4)); +- (void)_enableFrameSizeUpdates WK_API_AVAILABLE(macos(10.13.4)); + +- (void)_beginDeferringViewInWindowChanges WK_API_AVAILABLE(macos(10.13.4)); +- (void)_endDeferringViewInWindowChanges WK_API_AVAILABLE(macos(10.13.4)); +- (void)_endDeferringViewInWindowChangesSync WK_API_AVAILABLE(macos(10.13.4)); + +- (void)_setCustomSwipeViews:(NSArray *)customSwipeViews WK_API_AVAILABLE(macos(10.13.4)); +- (void)_setDidMoveSwipeSnapshotCallback:(void(^)(CGRect))callback WK_API_AVAILABLE(macos(10.13.4)); +- (void)_setCustomSwipeViewsTopContentInset:(float)topContentInset WK_API_AVAILABLE(macos(10.13.4)); + +- (NSView *)_fullScreenPlaceholderView WK_API_AVAILABLE(macos(10.13.4)); +- (NSWindow *)_fullScreenWindow WK_API_AVAILABLE(macos(10.13.4)); + +// Clients that want to maintain default behavior can return nil. To disable the immediate action entirely, return NSNull. And to +// do something custom, return an object that conforms to the NSImmediateActionAnimationController protocol. +- (id)_immediateActionAnimationControllerForHitTestResult:(_WKHitTestResult *)hitTestResult withType:(_WKImmediateActionType)type userData:(id)userData; + +- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo; +- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo forFrame:(_WKFrameHandle *)frameHandle WK_API_AVAILABLE(macos(10.12)); + +// FIXME: This SPI should become a part of the WKUIDelegate. rdar://problem/26561537 +@property (nonatomic, readwrite, setter=_setWantsMediaPlaybackControlsView:) BOOL _wantsMediaPlaybackControlsView WK_API_AVAILABLE(macos(10.12.3)); +@property (nonatomic, readonly) id _mediaPlaybackControlsView WK_API_AVAILABLE(macos(10.13)); + +- (void)_addMediaPlaybackControlsView:(id)mediaPlaybackControlsView WK_API_AVAILABLE(macos(10.13)); +- (void)_removeMediaPlaybackControlsView WK_API_AVAILABLE(macos(10.12.3)); + +- (void)_prepareForMoveToWindow:(NSWindow *)targetWindow completionHandler:(void(^)(void))completionHandler WK_API_AVAILABLE(macos(10.13)); + +- (void)_simulateMouseMove:(NSEvent *)event WK_API_AVAILABLE(macos(13.0)); + +- (void)_setFont:(NSFont *)font sender:(id)sender WK_API_AVAILABLE(macos(13.3)); + +@end + +#endif // !TARGET_OS_IPHONE diff --git a/WebKit Headers/WebKit/_WKActivatedElementInfo.h b/WebKit Headers/WebKit/_WKActivatedElementInfo.h new file mode 100644 index 0000000..54d5795 --- /dev/null +++ b/WebKit Headers/WebKit/_WKActivatedElementInfo.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#if TARGET_OS_IPHONE +@class UIImage; +#else +@class NSImage; +#endif + +typedef NS_ENUM(NSInteger, _WKActivatedElementType) { + _WKActivatedElementTypeLink, + _WKActivatedElementTypeImage, + _WKActivatedElementTypeAttachment WK_API_AVAILABLE(macos(10.12), ios(10.0)), + _WKActivatedElementTypeUnspecified WK_API_AVAILABLE(macos(10.13), ios(11.0)), +} WK_API_AVAILABLE(macos(10.10), ios(8.0)); + +WK_CLASS_AVAILABLE(macos(10.10), ios(8.0)) +@interface _WKActivatedElementInfo : NSObject + +@property (nonatomic, readonly) NSURL *URL; +@property (nonatomic, readonly) NSURL *imageURL; +@property (nonatomic, readonly) NSString *title; +@property (nonatomic, readonly) _WKActivatedElementType type; +@property (nonatomic, readonly) CGRect boundingRect; +@property (nonatomic, readonly) NSString *ID WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic, readonly) BOOL isAnimatedImage WK_API_AVAILABLE(macos(10.15), ios(13.0)); +#if TARGET_OS_IPHONE +@property (nonatomic, readonly) BOOL isAnimating; +@property (nonatomic, readonly) BOOL canShowAnimationControls; +@property (nonatomic, readonly) NSDictionary *userInfo WK_API_AVAILABLE(ios(11.0)); +@property (nonatomic, readonly, copy) UIImage *image; +#else +@property (nonatomic, readonly, copy) NSImage *image; +#endif + +@end diff --git a/WebKit Headers/WebKit/_WKAttachment.h b/WebKit Headers/WebKit/_WKAttachment.h new file mode 100644 index 0000000..0764ec8 --- /dev/null +++ b/WebKit Headers/WebKit/_WKAttachment.h @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2017 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, _WKAttachmentDisplayMode) { + _WKAttachmentDisplayModeAuto = 1, + _WKAttachmentDisplayModeInPlace, + _WKAttachmentDisplayModeAsIcon +} WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); + +WK_CLASS_AVAILABLE(macos(10.13.4), ios(11.3)) +@interface _WKAttachmentDisplayOptions : NSObject +@property (nonatomic) _WKAttachmentDisplayMode mode; +@end + +WK_CLASS_AVAILABLE(macos(10.14), ios(12.0)) +@interface _WKAttachmentInfo : NSObject +@property (nonatomic, readonly, nullable) NSString *contentType; +@property (nonatomic, readonly, nullable) NSString *name; +@property (nonatomic, readonly, nullable) NSString *filePath; +@property (nonatomic, readonly, nullable) NSData *data; +@property (nonatomic, readonly, nullable) NSFileWrapper *fileWrapper; +@end + +WK_CLASS_AVAILABLE(macos(10.13.4), ios(11.3)) +@interface _WKAttachment : NSObject + +- (void)setFileWrapper:(NSFileWrapper *)fileWrapper contentType:(nullable NSString *)contentType completion:(void(^ _Nullable)(NSError * _Nullable))completionHandler WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +@property (nonatomic, readonly, nullable) _WKAttachmentInfo *info WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +@property (nonatomic, readonly) NSString *uniqueIdentifier; +@property (nonatomic, readonly, getter=isConnected) BOOL connected WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +// Deprecated SPI. +- (void)requestInfo:(void(^)(_WKAttachmentInfo * _Nullable, NSError * _Nullable))completionHandler WK_API_DEPRECATED_WITH_REPLACEMENT("-info", macos(10.14, 10.14.4), ios(12.0, 12.2)); +- (void)setData:(NSData *)data newContentType:(nullable NSString *)newContentType newFilename:(nullable NSString *)newFilename completion:(void(^ _Nullable)(NSError * _Nullable))completionHandler WK_API_DEPRECATED_WITH_REPLACEMENT("Please use -setFileWrapper:contentType:completion: instead.", macos(10.13.4, 10.14.4), ios(11.3, 12.2)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/WebKit Headers/WebKit/_WKFindDelegate.h b/WebKit Headers/WebKit/_WKFindDelegate.h new file mode 100644 index 0000000..6c6dd6e --- /dev/null +++ b/WebKit Headers/WebKit/_WKFindDelegate.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import + +@protocol _WKFindDelegate + +@optional + +- (void)_webView:(WKWebView *)webView didCountMatches:(NSUInteger)matches forString:(NSString *)string; +- (void)_webView:(WKWebView *)webView didFindMatches:(NSUInteger)matches forString:(NSString *)string withMatchIndex:(NSInteger)matchIndex; +- (void)_webView:(WKWebView *)webView didFailToFindString:(NSString *)string; + +- (void)_webView:(WKWebView *)webView didAddLayerForFindOverlay:(CALayer *)layer; +- (void)_webViewDidRemoveLayerForFindOverlay:(WKWebView *)webView; + +@end diff --git a/WebKit Headers/WebKit/_WKFindOptions.h b/WebKit Headers/WebKit/_WKFindOptions.h new file mode 100644 index 0000000..474d865 --- /dev/null +++ b/WebKit Headers/WebKit/_WKFindOptions.h @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +typedef NS_OPTIONS(NSUInteger, _WKFindOptions) { + _WKFindOptionsCaseInsensitive = 1 << 0, + _WKFindOptionsAtWordStarts = 1 << 1, + _WKFindOptionsTreatMedialCapitalAsWordStart = 1 << 2, + _WKFindOptionsBackwards = 1 << 3, + _WKFindOptionsWrapAround = 1 << 4, + _WKFindOptionsShowOverlay = 1 << 5, + _WKFindOptionsShowFindIndicator = 1 << 6, + _WKFindOptionsShowHighlight = 1 << 7, + _WKFindOptionsNoIndexChange = 1 << 8, + _WKFindOptionsDetermineMatchIndex = 1 << 9, + + _WKFindOptionsIrrelevantForIncrementalResults = _WKFindOptionsShowOverlay | _WKFindOptionsShowFindIndicator | _WKFindOptionsShowHighlight | _WKFindOptionsDetermineMatchIndex, + _WKFindOptionsIrrelevantForBatchResults = _WKFindOptionsBackwards | _WKFindOptionsWrapAround | _WKFindOptionsIrrelevantForIncrementalResults + +} WK_API_AVAILABLE(macos(10.10), ios(8.0)); diff --git a/WebKit Headers/WebKit/_WKLayoutMode.h b/WebKit Headers/WebKit/_WKLayoutMode.h new file mode 100644 index 0000000..7814671 --- /dev/null +++ b/WebKit Headers/WebKit/_WKLayoutMode.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +typedef NS_ENUM(NSUInteger, _WKLayoutMode) { + _WKLayoutModeViewSize = 0, + _WKLayoutModeFixedSize = 1, + + // Lay out the view with its frame scaled by the inverse viewScale. + _WKLayoutModeDynamicSizeComputedFromViewScale = 2, + + // Lay out the view at a heuristically-determined size based on the minimum size of the document. + _WKLayoutModeDynamicSizeComputedFromMinimumDocumentSize = 4, + +} WK_API_AVAILABLE(macos(10.11), ios(9.0)); diff --git a/WebKit Headers/WebKit/_WKOverlayScrollbarStyle.h b/WebKit Headers/WebKit/_WKOverlayScrollbarStyle.h new file mode 100644 index 0000000..a70c136 --- /dev/null +++ b/WebKit Headers/WebKit/_WKOverlayScrollbarStyle.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +typedef NS_ENUM(NSUInteger, _WKOverlayScrollbarStyle) { + _WKOverlayScrollbarStyleDefault, + _WKOverlayScrollbarStyleDark, + _WKOverlayScrollbarStyleLight, + + // Setting the overlay scrollbar style to automatic will cause WebKit to use its normal + // heuristic to choose an appropriate color. + _WKOverlayScrollbarStyleAutomatic + +} WK_API_AVAILABLE(macos(10.11), ios(9.0)); diff --git a/WebKit Headers/WebKit/_WKProcessPoolConfiguration.h b/WebKit Headers/WebKit/_WKProcessPoolConfiguration.h new file mode 100644 index 0000000..30a1382 --- /dev/null +++ b/WebKit Headers/WebKit/_WKProcessPoolConfiguration.h @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2014-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import +#import + +#import "WebKitDefines.h" + +NS_ASSUME_NONNULL_BEGIN + +WK_CLASS_AVAILABLE(macos(10.10), ios(8.0)) +@interface _WKProcessPoolConfiguration : NSObject + +@property (nonatomic, copy) NSURL *injectedBundleURL; +@property (nonatomic, copy) NSSet *customClassesForParameterCoder WK_API_DEPRECATED("No longer supported", macos(10.15.4, WK_MAC_TBA), ios(13.4, WK_IOS_TBA)); +@property (nonatomic) NSUInteger maximumProcessCount WK_API_DEPRECATED("It is no longer possible to limit the number of processes", macos(10.0, 10.15), ios(1.0, 13.0)); +@property (nonatomic) BOOL usesSingleWebProcess WK_API_AVAILABLE(macos(10.15), ios(13.0)); +@property (nonatomic, nullable, copy) NSString *customWebContentServiceBundleIdentifier WK_API_DEPRECATED("No longer supported", macos(10.14.4, WK_MAC_TBA), ios(12.2, WK_IOS_TBA)); + +@property (nonatomic) BOOL ignoreSynchronousMessagingTimeoutsForTesting WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic) BOOL attrStyleEnabled WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +// Defaults to YES. +@property (nonatomic) BOOL shouldThrowExceptionForGlobalConstantRedeclaration WK_API_AVAILABLE(macos(12.0), ios(15.0)); + +@property (nonatomic, copy) NSArray *additionalReadAccessAllowedURLs WK_API_AVAILABLE(macos(10.13), ios(11.0)); + +#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR +@property (nonatomic) NSUInteger wirelessContextIdentifier WK_API_DEPRECATED("Use of this API is no longer necessary and can be removed", ios(10.12, 13.0)); +#endif + +// Network Process properties +// FIXME: These should be be per-session/data store when we support multiple non-persistent sessions/data stores. + +@property (nonatomic) NSInteger diskCacheSizeOverride WK_API_DEPRECATED("Use [WKWebsiteDataStore nonPersistentDataStore] to limit disk cache size to 0", macos(10.11, 10.14.4), ios(9.0, 12.2)); +@property (nonatomic, copy) NSArray *cachePartitionedURLSchemes; +@property (nonatomic, copy) NSArray *alwaysRevalidatedURLSchemes WK_API_AVAILABLE(macos(10.12), ios(10.0)); +@property (nonatomic) BOOL diskCacheSpeculativeValidationEnabled WK_API_DEPRECATED_WITH_REPLACEMENT("_WKWebsiteDataStoreConfiguration.networkCacheSpeculativeValidationEnabled", macos(10.12, 10.15.4), ios(10.0, 13.4)); +@property (nonatomic, nullable, copy) NSString *sourceApplicationBundleIdentifier WK_API_DEPRECATED_WITH_REPLACEMENT("_WKWebsiteDataStoreConfiguration.sourceApplicationBundleIdentifier", macos(10.12.3, 10.14.4), ios(10.3, 12.2)); +@property (nonatomic, nullable, copy) NSString *sourceApplicationSecondaryIdentifier WK_API_DEPRECATED_WITH_REPLACEMENT("_WKWebsiteDataStoreConfiguration.sourceApplicationSecondaryIdentifier", macos(10.12.3, 10.14.4), ios(10.3, 12.2)); +@property (nonatomic) BOOL shouldCaptureAudioInUIProcess WK_API_AVAILABLE(macos(10.13), ios(11.0)); +#if TARGET_OS_IPHONE +@property (nonatomic) BOOL alwaysRunsAtBackgroundPriority WK_API_AVAILABLE(ios(10.3)); +@property (nonatomic) BOOL shouldTakeUIBackgroundAssertion WK_API_AVAILABLE(ios(11.0)); +#endif +@property (nonatomic) pid_t presentingApplicationPID WK_API_AVAILABLE(macos(10.13), ios(11.0)); +@property (nonatomic) audit_token_t presentingApplicationProcessToken WK_API_AVAILABLE(macos(10.13), ios(11.3)); +@property (nonatomic) BOOL processSwapsOnNavigation WK_API_AVAILABLE(macos(10.14), ios(12.0)); +@property (nonatomic) BOOL alwaysKeepAndReuseSwappedProcesses WK_API_AVAILABLE(macos(10.14), ios(12.0)); +@property (nonatomic) BOOL processSwapsOnWindowOpenWithOpener WK_API_AVAILABLE(macos(10.14), ios(12.0)); +@property (nonatomic) BOOL processSwapsOnNavigationWithinSameNonHTTPFamilyProtocol WK_API_AVAILABLE(macos(12.0), ios(15.0)); +@property (nonatomic) BOOL prewarmsProcessesAutomatically WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +@property (nonatomic) BOOL usesWebProcessCache WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); +@property (nonatomic) BOOL pageCacheEnabled WK_API_AVAILABLE(macos(10.14), ios(12.0)); +@property (nonatomic, getter=isJITEnabled) BOOL JITEnabled WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); + +@property (nonatomic) BOOL configureJSCForTesting WK_API_AVAILABLE(macos(10.15.4), ios(13.4)); + +@property (nonatomic, nullable, copy) NSString *timeZoneOverride WK_API_AVAILABLE(macos(13.0), ios(16.0)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/WebKit Headers/WebKit/_WKRemoteObjectInterface.h b/WebKit Headers/WebKit/_WKRemoteObjectInterface.h new file mode 100644 index 0000000..ccc06af --- /dev/null +++ b/WebKit Headers/WebKit/_WKRemoteObjectInterface.h @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2013-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import + + +@interface _WKRemoteObjectInterface : NSObject + ++ (instancetype)remoteObjectInterfaceWithProtocol:(Protocol *)protocol; + +- (id)initWithProtocol:(Protocol *)protocol identifier:(NSString *)identifier; + +@property (readonly, nonatomic) Protocol *protocol; +@property (readonly, nonatomic) NSString *identifier; + +- (NSSet *)classesForSelector:(SEL)selector argumentIndex:(NSUInteger)argumentIndex ofReply:(BOOL)ofReply; +- (void)setClasses:(NSSet *)classes forSelector:(SEL)selector argumentIndex:(NSUInteger)argumentIndex ofReply:(BOOL)ofReply; + + +@end diff --git a/WebKit Headers/WebKit/_WKRemoteObjectRegistry.h b/WebKit Headers/WebKit/_WKRemoteObjectRegistry.h new file mode 100644 index 0000000..c5b450c --- /dev/null +++ b/WebKit Headers/WebKit/_WKRemoteObjectRegistry.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2013 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import + +@class _WKRemoteObjectInterface; + +@interface _WKRemoteObjectRegistry : NSObject + +- (void)registerExportedObject:(id)object interface:(_WKRemoteObjectInterface *)interface; +- (void)unregisterExportedObject:(id)object interface:(_WKRemoteObjectInterface *)interface; + +- (id)remoteObjectProxyWithInterface:(_WKRemoteObjectInterface *)interface; + +@end diff --git a/WebKit Headers/WebKit/_WKRenderingProgressEvents 2.h b/WebKit Headers/WebKit/_WKRenderingProgressEvents 2.h new file mode 100644 index 0000000..5ce5828 --- /dev/null +++ b/WebKit Headers/WebKit/_WKRenderingProgressEvents 2.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +typedef NS_OPTIONS(NSUInteger, _WKRenderingProgressEvents) { + _WKRenderingProgressEventFirstLayout = 1 << 0, + _WKRenderingProgressEventFirstVisuallyNonEmptyLayout WK_API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 1, + _WKRenderingProgressEventFirstPaintWithSignificantArea = 1 << 2, + _WKRenderingProgressEventReachedSessionRestorationRenderTreeSizeThreshold WK_API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 3, + _WKRenderingProgressEventFirstLayoutAfterSuppressedIncrementalRendering WK_API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 4, + _WKRenderingProgressEventFirstPaintAfterSuppressedIncrementalRendering WK_API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 5, + _WKRenderingProgressEventFirstPaint WK_API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 6, + _WKRenderingProgressEventDidRenderSignificantAmountOfText WK_API_AVAILABLE(macos(10.14), ios(12.0)) = 1 << 7, + _WKRenderingProgressEventFirstMeaningfulPaint WK_API_AVAILABLE(macos(10.14.4), ios(12.2)) = 1 << 8, +} WK_API_AVAILABLE(macos(10.10), ios(8.0)); diff --git a/WebKit Headers/WebKit/_WKRenderingProgressEvents.h b/WebKit Headers/WebKit/_WKRenderingProgressEvents.h new file mode 100644 index 0000000..ea75b49 --- /dev/null +++ b/WebKit Headers/WebKit/_WKRenderingProgressEvents.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +typedef NS_OPTIONS(NSUInteger, _WKRenderingProgressEvents) { + _WKRenderingProgressEventFirstLayout = 1 << 0, + _WKRenderingProgressEventFirstVisuallyNonEmptyLayout API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 1, + _WKRenderingProgressEventFirstPaintWithSignificantArea = 1 << 2, + _WKRenderingProgressEventReachedSessionRestorationRenderTreeSizeThreshold API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 3, + _WKRenderingProgressEventFirstLayoutAfterSuppressedIncrementalRendering API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 4, + _WKRenderingProgressEventFirstPaintAfterSuppressedIncrementalRendering API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 5, + _WKRenderingProgressEventFirstPaint API_AVAILABLE(macos(10.11), ios(9.0)) = 1 << 6, + _WKRenderingProgressEventDidRenderSignificantAmountOfText API_AVAILABLE(macos(10.14), ios(12.0)) = 1 << 7, + _WKRenderingProgressEventFirstMeaningfulPaint API_AVAILABLE(macos(10.14.4), ios(12.2)) = 1 << 8, +} API_AVAILABLE(macos(10.10), ios(8.0)); diff --git a/WebKit Headers/WebKit/_WKSameDocumentNavigationType.h b/WebKit Headers/WebKit/_WKSameDocumentNavigationType.h new file mode 100644 index 0000000..f7d59ca --- /dev/null +++ b/WebKit Headers/WebKit/_WKSameDocumentNavigationType.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +typedef NS_ENUM(NSInteger, _WKSameDocumentNavigationType) { + _WKSameDocumentNavigationTypeAnchorNavigation, + _WKSameDocumentNavigationTypeSessionStatePush, + _WKSameDocumentNavigationTypeSessionStateReplace, + _WKSameDocumentNavigationTypeSessionStatePop, +} API_AVAILABLE(macos(10.10), ios(8.0)); diff --git a/WebKit Headers/WebKit/_WKUserStyleSheet.h b/WebKit Headers/WebKit/_WKUserStyleSheet.h new file mode 100644 index 0000000..4974e14 --- /dev/null +++ b/WebKit Headers/WebKit/_WKUserStyleSheet.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2015-2020 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class _WKUserContentWorld; +@class WKContentWorld; +@class WKWebView; + +typedef NS_ENUM(NSInteger, _WKUserStyleLevel) { + _WKUserStyleUserLevel, + _WKUserStyleAuthorLevel +} WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +WK_CLASS_AVAILABLE(macos(10.12), ios(10.0)) +@interface _WKUserStyleSheet : NSObject + +@property (nonatomic, readonly, copy) NSString *source; + +@property (nonatomic, readonly, copy) NSURL *baseURL; + +@property (nonatomic, readonly, getter=isForMainFrameOnly) BOOL forMainFrameOnly; + +- (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly; + +- (instancetype)initWithSource:(NSString *)source forWKWebView:(nullable WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly includeMatchPatternStrings:(nullable NSArray *)includeMatchPatternStrings excludeMatchPatternStrings:(nullable NSArray *)excludeMatchPatternStrings baseURL:(nullable NSURL *)baseURL level:(_WKUserStyleLevel)level contentWorld:(nullable WKContentWorld *)contentWorld WK_API_AVAILABLE(macos(11.0), ios(14.0)); + +@end + +NS_ASSUME_NONNULL_END