From 38583912a11150b582cab6a74b435ea849a6c179 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 9 Jul 2025 21:33:17 -0400 Subject: [PATCH 1/3] log error --- .../darwin/Tests/ProxyAPIRegistrarTests.swift | 17 +++++++++++++++++ .../ProxyAPIRegistrar.swift | 11 +++++------ .../ios/Runner.xcodeproj/project.pbxproj | 4 ++++ 3 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift new file mode 100644 index 00000000000..9ae7b1e7fab --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift @@ -0,0 +1,17 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import XCTest + +@testable import webview_flutter_wkwebview + +class ProxyAPIRegistrarTests: XCTestCase { + func testLogFlutterMethodFailureDoesNotThrowAnError() { + let registrar = TestProxyApiRegistrar() + + XCTExpectFailure("Method should log a message and not throw an error.") { + XCTAssertThrowsError(registrar.logFlutterMethodFailure(PigeonError(code: "code", message: "message", details: nil), methodName: "aMethod")) + } + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ProxyAPIRegistrar.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ProxyAPIRegistrar.swift index 0c451567b62..7fd16fe59db 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ProxyAPIRegistrar.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ProxyAPIRegistrar.swift @@ -68,11 +68,10 @@ open class ProxyAPIRegistrar: WebKitLibraryPigeonProxyApiRegistrar { details: nil) } - // Creates an assertion failure when a Flutter method receives an error from Dart. - fileprivate func assertFlutterMethodFailure(_ error: PigeonError, methodName: String) { - assertionFailure( - "\(String(describing: error)): Error returned from calling \(methodName): \(String(describing: error.message))" - ) + // Log when a Flutter method receives an error from Dart. + func logFlutterMethodFailure(_ error: PigeonError, methodName: String) { + NSLog("\(String(describing: error)): Error returned from calling \(methodName): \(String(describing: error.message))") + NSLog("%@", Thread.callStackSymbols.joined(separator: "\n")) } /// Handles calling a Flutter method on the main thread. @@ -83,7 +82,7 @@ open class ProxyAPIRegistrar: WebKitLibraryPigeonProxyApiRegistrar { ) { DispatchQueue.main.async { work { methodName, error in - self.assertFlutterMethodFailure(error, methodName: methodName) + self.logFlutterMethodFailure(error, methodName: methodName) } } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj index 7b9f2bef87e..8e11a3cf005 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; + 8F0EDFD32E1F4967001938E6 /* ProxyAPIRegistrarTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F0EDFD22E1F4967001938E6 /* ProxyAPIRegistrarTests.swift */; }; 8F1488E22D2DE27000191744 /* ScriptMessageHandlerProxyAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F1488D02D2DE27000191744 /* ScriptMessageHandlerProxyAPITests.swift */; }; 8F1488E32D2DE27000191744 /* TestProxyApiRegistrar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F1488D62D2DE27000191744 /* TestProxyApiRegistrar.swift */; }; 8F1488E42D2DE27000191744 /* URLRequestProxyAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F1488DC2D2DE27000191744 /* URLRequestProxyAPITests.swift */; }; @@ -98,6 +99,7 @@ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 8F0EDFD22E1F4967001938E6 /* ProxyAPIRegistrarTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ProxyAPIRegistrarTests.swift; path = ../../darwin/Tests/ProxyAPIRegistrarTests.swift; sourceTree = SOURCE_ROOT; }; 8F1488C52D2DE27000191744 /* ErrorProxyAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ErrorProxyAPITests.swift; path = ../../darwin/Tests/ErrorProxyAPITests.swift; sourceTree = SOURCE_ROOT; }; 8F1488C62D2DE27000191744 /* FrameInfoProxyAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = FrameInfoProxyAPITests.swift; path = ../../darwin/Tests/FrameInfoProxyAPITests.swift; sourceTree = SOURCE_ROOT; }; 8F1488C72D2DE27000191744 /* FWFWebViewFlutterWKWebViewExternalAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = FWFWebViewFlutterWKWebViewExternalAPITests.swift; path = ../../darwin/Tests/FWFWebViewFlutterWKWebViewExternalAPITests.swift; sourceTree = SOURCE_ROOT; }; @@ -178,6 +180,7 @@ 68BDCAEA23C3F7CB00D9C032 /* RunnerTests */ = { isa = PBXGroup; children = ( + 8F0EDFD22E1F4967001938E6 /* ProxyAPIRegistrarTests.swift */, 8FEC64812DA2C6DC00C48569 /* GetTrustResultResponseProxyAPITests.swift */, 8FEC64822DA2C6DC00C48569 /* SecCertificateProxyAPITests.swift */, 8FEC64832DA2C6DC00C48569 /* SecTrustProxyAPITests.swift */, @@ -561,6 +564,7 @@ 8F1488E82D2DE27000191744 /* ScriptMessageProxyAPITests.swift in Sources */, 8F1488E92D2DE27000191744 /* UIViewProxyAPITests.swift in Sources */, 8F1488EA2D2DE27000191744 /* SecurityOriginProxyAPITests.swift in Sources */, + 8F0EDFD32E1F4967001938E6 /* ProxyAPIRegistrarTests.swift in Sources */, 8F1488EB2D2DE27000191744 /* PreferencesProxyAPITests.swift in Sources */, 8F1488EC2D2DE27000191744 /* FrameInfoProxyAPITests.swift in Sources */, 8F1488ED2D2DE27000191744 /* ErrorProxyAPITests.swift in Sources */, From 15507edb8bc2834d3dd558b8fae1573561dfd291 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 9 Jul 2025 21:34:02 -0400 Subject: [PATCH 2/3] formatting --- .../darwin/Tests/ProxyAPIRegistrarTests.swift | 6 ++++-- .../webview_flutter_wkwebview/ProxyAPIRegistrar.swift | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift index 9ae7b1e7fab..53e3dd3c37a 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ProxyAPIRegistrarTests.swift @@ -9,9 +9,11 @@ import XCTest class ProxyAPIRegistrarTests: XCTestCase { func testLogFlutterMethodFailureDoesNotThrowAnError() { let registrar = TestProxyApiRegistrar() - + XCTExpectFailure("Method should log a message and not throw an error.") { - XCTAssertThrowsError(registrar.logFlutterMethodFailure(PigeonError(code: "code", message: "message", details: nil), methodName: "aMethod")) + XCTAssertThrowsError( + registrar.logFlutterMethodFailure( + PigeonError(code: "code", message: "message", details: nil), methodName: "aMethod")) } } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ProxyAPIRegistrar.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ProxyAPIRegistrar.swift index 7fd16fe59db..51de764a622 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ProxyAPIRegistrar.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ProxyAPIRegistrar.swift @@ -70,7 +70,9 @@ open class ProxyAPIRegistrar: WebKitLibraryPigeonProxyApiRegistrar { // Log when a Flutter method receives an error from Dart. func logFlutterMethodFailure(_ error: PigeonError, methodName: String) { - NSLog("\(String(describing: error)): Error returned from calling \(methodName): \(String(describing: error.message))") + NSLog( + "\(String(describing: error)): Error returned from calling \(methodName): \(String(describing: error.message))" + ) NSLog("%@", Thread.callStackSymbols.joined(separator: "\n")) } From 1c172d2faa014df20b86a0a02a919af62c62e0bc Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 9 Jul 2025 21:36:45 -0400 Subject: [PATCH 3/3] version bump --- .../webview_flutter/webview_flutter_wkwebview/CHANGELOG.md | 4 +++- .../webview_flutter/webview_flutter_wkwebview/pubspec.yaml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index a1043b3f698..58e0622917b 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,5 +1,7 @@ -## NEXT +## 3.22.1 +* Changes the handling of a Flutter method failure from throwing an assertion error to logging the + error. * Updates minimum supported SDK version to Flutter 3.27/Dart 3.6. ## 3.22.0 diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index d2d74eda012..114667e8392 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_wkwebview description: A Flutter plugin that provides a WebView widget based on Apple's WKWebView control. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_wkwebview issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 3.22.0 +version: 3.22.1 environment: sdk: ^3.6.0 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy