From 9e9f772323277113fdf6ad76f2039ac643801874 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 28 Oct 2025 18:00:18 -0400 Subject: [PATCH 1/2] fix crash --- .../darwin/Tests/NavigationDelegateProxyAPITests.swift | 2 +- .../darwin/Tests/NavigationResponseProxyAPITests.swift | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationDelegateProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationDelegateProxyAPITests.swift index 07f65e0751c..11df2e04329 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationDelegateProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationDelegateProxyAPITests.swift @@ -62,7 +62,7 @@ class NavigationDelegateProxyAPITests: XCTestCase { let registrar = TestProxyApiRegistrar() let instance = NavigationDelegateImpl(api: api, registrar: registrar) let webView = WKWebView(frame: .zero) - let navigationResponse = TestNavigationResponse() + let navigationResponse = TestNavigationResponse.instance var result: WKNavigationResponsePolicy? let callbackExpectation = expectation(description: "Wait for callback.") diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift index df861beccda..279fe143563 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift @@ -12,7 +12,7 @@ class NavigationResponseProxyAPITests: XCTestCase { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKNavigationResponse(registrar) - let instance = WKNavigationResponse() + let instance = TestNavigationResponse.instance let value = try? api.pigeonDelegate.response(pigeonApi: api, pigeonInstance: instance) XCTAssertEqual(value, instance.response) @@ -22,7 +22,7 @@ class NavigationResponseProxyAPITests: XCTestCase { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiWKNavigationResponse(registrar) - let instance = TestNavigationResponse() + let instance = TestNavigationResponse.instance let value = try? api.pigeonDelegate.isForMainFrame(pigeonApi: api, pigeonInstance: instance) XCTAssertEqual(value, instance.isForMainFrame) @@ -30,6 +30,10 @@ class NavigationResponseProxyAPITests: XCTestCase { } class TestNavigationResponse: WKNavigationResponse { + // Provides a static instance to prevent a crash when a WKNavigationResponse is deallocated + // See https://github.com/flutter/flutter/issues/173326 + static let instance = TestNavigationResponse() + let testResponse = URLResponse() override var isForMainFrame: Bool { From 62a5093338add73f50c10d49bca1fcd28d59ccd7 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 28 Oct 2025 18:04:42 -0400 Subject: [PATCH 2/2] make init private --- .../darwin/Tests/NavigationResponseProxyAPITests.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift index 279fe143563..1d5bce66ca9 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/NavigationResponseProxyAPITests.swift @@ -36,6 +36,10 @@ class TestNavigationResponse: WKNavigationResponse { let testResponse = URLResponse() + private override init() { + super.init() + } + override var isForMainFrame: Bool { return true }