Skip to content

Commit 0323101

Browse files
Fix WKNavigationDelegate policy signatures (#320)
Assisted-By: devx/058cd5b9-f1cc-431b-b520-15657ace50f1
1 parent d32973e commit 0323101

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

platforms/swift/Sources/ShopifyCheckoutKit/CheckoutWebView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ extension CheckoutWebView: WKScriptMessageHandler {
479479
}
480480

481481
extension CheckoutWebView: WKNavigationDelegate {
482-
func webView(_: WKWebView, decidePolicyFor action: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
482+
func webView(_: WKWebView, decidePolicyFor action: WKNavigationAction, decisionHandler: @escaping @MainActor @Sendable (WKNavigationActionPolicy) -> Void) {
483483
// Handle rare cases where the url is nil
484484
guard let url = action.request.url else {
485485
decisionHandler(.allow)
@@ -505,7 +505,7 @@ extension CheckoutWebView: WKNavigationDelegate {
505505
decisionHandler(.allow)
506506
}
507507

508-
func webView(_: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
508+
func webView(_: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping @MainActor @Sendable (WKNavigationResponsePolicy) -> Void) {
509509
if let response = navigationResponse.response as? HTTPURLResponse {
510510
decisionHandler(handleResponse(response))
511511
return

platforms/swift/Tests/ShopifyCheckoutKitTests/CheckoutWebViewTests.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ class CheckoutWebViewTests: XCTestCase {
3232
XCTAssertTrue(view.configuration.allowsInlineMediaPlayback)
3333
}
3434

35+
func testImplementsWKNavigationDelegatePolicySelectors() {
36+
let navigationActionSelector = NSSelectorFromString("webView:decidePolicyForNavigationAction:decisionHandler:")
37+
let navigationResponseSelector = NSSelectorFromString("webView:decidePolicyForNavigationResponse:decisionHandler:")
38+
39+
XCTAssertTrue(view.responds(to: navigationActionSelector))
40+
XCTAssertTrue(view.responds(to: navigationResponseSelector))
41+
}
42+
3543
func testDetachBridgeIsIdempotent() {
3644
XCTAssertTrue(view.isBridgeAttached)
3745

0 commit comments

Comments
 (0)