From dfd778d038a66852bea00edf39200067ab015a15 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 25 Nov 2023 11:53:19 -0800 Subject: [PATCH] Add `isJavascriptEnabled` setting, defaulting to false, and respect it in the web view. --- Mac/AppDefaults.swift | 31 +++++++++++++------ .../Detail/DetailWebViewController.swift | 3 +- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Mac/AppDefaults.swift b/Mac/AppDefaults.swift index de6fcba22..6aeb9781b 100644 --- a/Mac/AppDefaults.swift +++ b/Mac/AppDefaults.swift @@ -41,6 +41,7 @@ final class AppDefaults { static let exportOPMLAccountID = "exportOPMLAccountID" static let defaultBrowserID = "defaultBrowserID" static let currentThemeName = "currentThemeName" + static let javascriptEnabled = "javascriptEnabled" // Hidden prefs static let showDebugMenu = "ShowDebugMenu" @@ -299,6 +300,15 @@ final class AppDefaults { } } + var isJavascriptEnabled: Bool { + get { + UserDefaults.standard.bool(forKey: Key.javascriptEnabled) + } + set { + UserDefaults.standard.set(newValue, forKey: Key.javascriptEnabled) + } + } + func registerDefaults() { #if DEBUG let showDebugMenu = true @@ -306,15 +316,18 @@ final class AppDefaults { let showDebugMenu = false #endif - let defaults: [String : Any] = [Key.sidebarFontSize: FontSize.medium.rawValue, - Key.timelineFontSize: FontSize.medium.rawValue, - Key.detailFontSize: FontSize.medium.rawValue, - Key.timelineSortDirection: ComparisonResult.orderedDescending.rawValue, - Key.timelineGroupByFeed: false, - "NSScrollViewShouldScrollUnderTitlebar": false, - Key.refreshInterval: RefreshInterval.everyHour.rawValue, - Key.showDebugMenu: showDebugMenu, - Key.currentThemeName: Self.defaultThemeName] + let defaults: [String : Any] = [ + Key.sidebarFontSize: FontSize.medium.rawValue, + Key.timelineFontSize: FontSize.medium.rawValue, + Key.detailFontSize: FontSize.medium.rawValue, + Key.timelineSortDirection: ComparisonResult.orderedDescending.rawValue, + Key.timelineGroupByFeed: false, + "NSScrollViewShouldScrollUnderTitlebar": false, + Key.refreshInterval: RefreshInterval.everyHour.rawValue, + Key.showDebugMenu: showDebugMenu, + Key.currentThemeName: Self.defaultThemeName, + Key.javascriptEnabled: false + ] UserDefaults.standard.register(defaults: defaults) diff --git a/Mac/MainWindow/Detail/DetailWebViewController.swift b/Mac/MainWindow/Detail/DetailWebViewController.swift index 546b4e337..b5ecd8de9 100644 --- a/Mac/MainWindow/Detail/DetailWebViewController.swift +++ b/Mac/MainWindow/Detail/DetailWebViewController.swift @@ -95,10 +95,9 @@ final class DetailWebViewController: NSViewController { preferences.minimumFontSize = 12.0 preferences.javaScriptCanOpenWindowsAutomatically = false - let configuration = WKWebViewConfiguration() configuration.preferences = preferences - configuration.defaultWebpagePreferences.allowsContentJavaScript = false + configuration.defaultWebpagePreferences.allowsContentJavaScript = AppDefaults.shared.isJavascriptEnabled configuration.setURLSchemeHandler(detailIconSchemeHandler, forURLScheme: ArticleRenderer.imageIconScheme) let userContentController = WKUserContentController()