From a58ccb7f1469211185bb29e2f821cff659342924 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 16 Mar 2022 10:29:11 -0700 Subject: [PATCH] Use a single process pool for all webviews This is a first step to improving our caching on iOS. --- .../Sources/Views/Article/WebAppView.swift | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/apple/OmnivoreKit/Sources/Views/Article/WebAppView.swift b/apple/OmnivoreKit/Sources/Views/Article/WebAppView.swift index f493a9e8f..b97b3b924 100644 --- a/apple/OmnivoreKit/Sources/Views/Article/WebAppView.swift +++ b/apple/OmnivoreKit/Sources/Views/Article/WebAppView.swift @@ -5,6 +5,27 @@ import WebKit public let readerViewNavBarHeight = 50.0 +enum WebViewConfigurationManager { + private static let processPool = WKProcessPool() + static func create() -> WKWebViewConfiguration { + let config = WKWebViewConfiguration() + config.processPool = processPool + // config.limitsNavigationsToAppBoundDomains = true + return config + } +} + +enum WebViewManager { + public static let sharedView = create() + public static func shared() -> WebView { + sharedView + } + + public static func create() -> WebView { + WebView(frame: CGRect.zero, configuration: WebViewConfigurationManager.create()) + } +} + #if os(iOS) struct WebAppView: UIViewRepresentable { let request: URLRequest @@ -28,7 +49,7 @@ public let readerViewNavBarHeight = 50.0 } func makeUIView(context: Context) -> WKWebView { - let webView = WebView(frame: CGRect.zero) + let webView = WebViewManager.create() let contentController = WKUserContentController() webView.navigationDelegate = context.coordinator