Skip to content

Commit 54b49e1

Browse files
[webview_flutter_wkwebview] Removes internal native library Dart proxy (#10528)
Removes internal native library Dart proxy and updates test with generated PigeonOverrides. Also removes unnecessary test InstanceManagers. ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
1 parent 8f0fdfc commit 54b49e1

22 files changed

+1768
-2416
lines changed

packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 3.23.5
2+
3+
* Removes internal native library Dart proxy.
4+
15
## 3.23.4
26

37
* Replaces use of deprecated Color.value.

packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift

Lines changed: 145 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2013 The Flutter Authors
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
4-
// Autogenerated from Pigeon (v26.1.0), do not edit directly.
4+
// Autogenerated from Pigeon (v26.1.4), do not edit directly.
55
// See also: https://pub.dev/packages/pigeon
66

77
import Foundation
@@ -4099,6 +4099,15 @@ final class PigeonApiWKScriptMessageHandler: PigeonApiProtocolWKScriptMessageHan
40994099
code: "ignore-calls-error",
41004100
message: "Calls to Dart are being ignored.", details: "")))
41014101
return
4102+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4103+
completion(
4104+
.failure(
4105+
PigeonError(
4106+
code: "missing-instance-error",
4107+
message:
4108+
"Callback to `WKScriptMessageHandler.didReceiveScriptMessage` failed because native instance was not in the instance manager.",
4109+
details: "")))
4110+
return
41024111
}
41034112
let binaryMessenger = pigeonRegistrar.binaryMessenger
41044113
let codec = pigeonRegistrar.codec
@@ -4249,6 +4258,15 @@ final class PigeonApiWKNavigationDelegate: PigeonApiProtocolWKNavigationDelegate
42494258
code: "ignore-calls-error",
42504259
message: "Calls to Dart are being ignored.", details: "")))
42514260
return
4261+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4262+
completion(
4263+
.failure(
4264+
PigeonError(
4265+
code: "missing-instance-error",
4266+
message:
4267+
"Callback to `WKNavigationDelegate.didFinishNavigation` failed because native instance was not in the instance manager.",
4268+
details: "")))
4269+
return
42524270
}
42534271
let binaryMessenger = pigeonRegistrar.binaryMessenger
42544272
let codec = pigeonRegistrar.codec
@@ -4284,6 +4302,15 @@ final class PigeonApiWKNavigationDelegate: PigeonApiProtocolWKNavigationDelegate
42844302
code: "ignore-calls-error",
42854303
message: "Calls to Dart are being ignored.", details: "")))
42864304
return
4305+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4306+
completion(
4307+
.failure(
4308+
PigeonError(
4309+
code: "missing-instance-error",
4310+
message:
4311+
"Callback to `WKNavigationDelegate.didStartProvisionalNavigation` failed because native instance was not in the instance manager.",
4312+
details: "")))
4313+
return
42874314
}
42884315
let binaryMessenger = pigeonRegistrar.binaryMessenger
42894316
let codec = pigeonRegistrar.codec
@@ -4321,6 +4348,15 @@ final class PigeonApiWKNavigationDelegate: PigeonApiProtocolWKNavigationDelegate
43214348
code: "ignore-calls-error",
43224349
message: "Calls to Dart are being ignored.", details: "")))
43234350
return
4351+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4352+
completion(
4353+
.failure(
4354+
PigeonError(
4355+
code: "missing-instance-error",
4356+
message:
4357+
"Callback to `WKNavigationDelegate.decidePolicyForNavigationAction` failed because native instance was not in the instance manager.",
4358+
details: "")))
4359+
return
43244360
}
43254361
let binaryMessenger = pigeonRegistrar.binaryMessenger
43264362
let codec = pigeonRegistrar.codec
@@ -4366,6 +4402,15 @@ final class PigeonApiWKNavigationDelegate: PigeonApiProtocolWKNavigationDelegate
43664402
code: "ignore-calls-error",
43674403
message: "Calls to Dart are being ignored.", details: "")))
43684404
return
4405+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4406+
completion(
4407+
.failure(
4408+
PigeonError(
4409+
code: "missing-instance-error",
4410+
message:
4411+
"Callback to `WKNavigationDelegate.decidePolicyForNavigationResponse` failed because native instance was not in the instance manager.",
4412+
details: "")))
4413+
return
43694414
}
43704415
let binaryMessenger = pigeonRegistrar.binaryMessenger
43714416
let codec = pigeonRegistrar.codec
@@ -4409,6 +4454,15 @@ final class PigeonApiWKNavigationDelegate: PigeonApiProtocolWKNavigationDelegate
44094454
code: "ignore-calls-error",
44104455
message: "Calls to Dart are being ignored.", details: "")))
44114456
return
4457+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4458+
completion(
4459+
.failure(
4460+
PigeonError(
4461+
code: "missing-instance-error",
4462+
message:
4463+
"Callback to `WKNavigationDelegate.didFailNavigation` failed because native instance was not in the instance manager.",
4464+
details: "")))
4465+
return
44124466
}
44134467
let binaryMessenger = pigeonRegistrar.binaryMessenger
44144468
let codec = pigeonRegistrar.codec
@@ -4445,6 +4499,15 @@ final class PigeonApiWKNavigationDelegate: PigeonApiProtocolWKNavigationDelegate
44454499
code: "ignore-calls-error",
44464500
message: "Calls to Dart are being ignored.", details: "")))
44474501
return
4502+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4503+
completion(
4504+
.failure(
4505+
PigeonError(
4506+
code: "missing-instance-error",
4507+
message:
4508+
"Callback to `WKNavigationDelegate.didFailProvisionalNavigation` failed because native instance was not in the instance manager.",
4509+
details: "")))
4510+
return
44484511
}
44494512
let binaryMessenger = pigeonRegistrar.binaryMessenger
44504513
let codec = pigeonRegistrar.codec
@@ -4480,6 +4543,15 @@ final class PigeonApiWKNavigationDelegate: PigeonApiProtocolWKNavigationDelegate
44804543
code: "ignore-calls-error",
44814544
message: "Calls to Dart are being ignored.", details: "")))
44824545
return
4546+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4547+
completion(
4548+
.failure(
4549+
PigeonError(
4550+
code: "missing-instance-error",
4551+
message:
4552+
"Callback to `WKNavigationDelegate.webViewWebContentProcessDidTerminate` failed because native instance was not in the instance manager.",
4553+
details: "")))
4554+
return
44834555
}
44844556
let binaryMessenger = pigeonRegistrar.binaryMessenger
44854557
let codec = pigeonRegistrar.codec
@@ -4516,6 +4588,15 @@ final class PigeonApiWKNavigationDelegate: PigeonApiProtocolWKNavigationDelegate
45164588
code: "ignore-calls-error",
45174589
message: "Calls to Dart are being ignored.", details: "")))
45184590
return
4591+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4592+
completion(
4593+
.failure(
4594+
PigeonError(
4595+
code: "missing-instance-error",
4596+
message:
4597+
"Callback to `WKNavigationDelegate.didReceiveAuthenticationChallenge` failed because native instance was not in the instance manager.",
4598+
details: "")))
4599+
return
45194600
}
45204601
let binaryMessenger = pigeonRegistrar.binaryMessenger
45214602
let codec = pigeonRegistrar.codec
@@ -4701,6 +4782,15 @@ final class PigeonApiNSObject: PigeonApiProtocolNSObject {
47014782
code: "ignore-calls-error",
47024783
message: "Calls to Dart are being ignored.", details: "")))
47034784
return
4785+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
4786+
completion(
4787+
.failure(
4788+
PigeonError(
4789+
code: "missing-instance-error",
4790+
message:
4791+
"Callback to `NSObject.observeValue` failed because native instance was not in the instance manager.",
4792+
details: "")))
4793+
return
47044794
}
47054795
let binaryMessenger = pigeonRegistrar.binaryMessenger
47064796
let codec = pigeonRegistrar.codec
@@ -6237,6 +6327,15 @@ final class PigeonApiWKUIDelegate: PigeonApiProtocolWKUIDelegate {
62376327
code: "ignore-calls-error",
62386328
message: "Calls to Dart are being ignored.", details: "")))
62396329
return
6330+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
6331+
completion(
6332+
.failure(
6333+
PigeonError(
6334+
code: "missing-instance-error",
6335+
message:
6336+
"Callback to `WKUIDelegate.onCreateWebView` failed because native instance was not in the instance manager.",
6337+
details: "")))
6338+
return
62406339
}
62416340
let binaryMessenger = pigeonRegistrar.binaryMessenger
62426341
let codec = pigeonRegistrar.codec
@@ -6276,6 +6375,15 @@ final class PigeonApiWKUIDelegate: PigeonApiProtocolWKUIDelegate {
62766375
code: "ignore-calls-error",
62776376
message: "Calls to Dart are being ignored.", details: "")))
62786377
return
6378+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
6379+
completion(
6380+
.failure(
6381+
PigeonError(
6382+
code: "missing-instance-error",
6383+
message:
6384+
"Callback to `WKUIDelegate.requestMediaCapturePermission` failed because native instance was not in the instance manager.",
6385+
details: "")))
6386+
return
62796387
}
62806388
let binaryMessenger = pigeonRegistrar.binaryMessenger
62816389
let codec = pigeonRegistrar.codec
@@ -6320,6 +6428,15 @@ final class PigeonApiWKUIDelegate: PigeonApiProtocolWKUIDelegate {
63206428
code: "ignore-calls-error",
63216429
message: "Calls to Dart are being ignored.", details: "")))
63226430
return
6431+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
6432+
completion(
6433+
.failure(
6434+
PigeonError(
6435+
code: "missing-instance-error",
6436+
message:
6437+
"Callback to `WKUIDelegate.runJavaScriptAlertPanel` failed because native instance was not in the instance manager.",
6438+
details: "")))
6439+
return
63236440
}
63246441
let binaryMessenger = pigeonRegistrar.binaryMessenger
63256442
let codec = pigeonRegistrar.codec
@@ -6357,6 +6474,15 @@ final class PigeonApiWKUIDelegate: PigeonApiProtocolWKUIDelegate {
63576474
code: "ignore-calls-error",
63586475
message: "Calls to Dart are being ignored.", details: "")))
63596476
return
6477+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
6478+
completion(
6479+
.failure(
6480+
PigeonError(
6481+
code: "missing-instance-error",
6482+
message:
6483+
"Callback to `WKUIDelegate.runJavaScriptConfirmPanel` failed because native instance was not in the instance manager.",
6484+
details: "")))
6485+
return
63606486
}
63616487
let binaryMessenger = pigeonRegistrar.binaryMessenger
63626488
let codec = pigeonRegistrar.codec
@@ -6401,6 +6527,15 @@ final class PigeonApiWKUIDelegate: PigeonApiProtocolWKUIDelegate {
64016527
code: "ignore-calls-error",
64026528
message: "Calls to Dart are being ignored.", details: "")))
64036529
return
6530+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
6531+
completion(
6532+
.failure(
6533+
PigeonError(
6534+
code: "missing-instance-error",
6535+
message:
6536+
"Callback to `WKUIDelegate.runJavaScriptTextInputPanel` failed because native instance was not in the instance manager.",
6537+
details: "")))
6538+
return
64046539
}
64056540
let binaryMessenger = pigeonRegistrar.binaryMessenger
64066541
let codec = pigeonRegistrar.codec
@@ -6653,6 +6788,15 @@ final class PigeonApiUIScrollViewDelegate: PigeonApiProtocolUIScrollViewDelegate
66536788
code: "ignore-calls-error",
66546789
message: "Calls to Dart are being ignored.", details: "")))
66556790
return
6791+
} else if !pigeonRegistrar.instanceManager.containsInstance(pigeonInstanceArg as AnyObject) {
6792+
completion(
6793+
.failure(
6794+
PigeonError(
6795+
code: "missing-instance-error",
6796+
message:
6797+
"Callback to `UIScrollViewDelegate.scrollViewDidScroll` failed because native instance was not in the instance manager.",
6798+
details: "")))
6799+
return
66566800
}
66576801
let binaryMessenger = pigeonRegistrar.binaryMessenger
66586802
let codec = pigeonRegistrar.codec

packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@ import 'package:flutter_test/flutter_test.dart';
1717
import 'package:integration_test/integration_test.dart';
1818
import 'package:leak_tracker/leak_tracker.dart';
1919
import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
20-
import 'package:webview_flutter_wkwebview/src/common/platform_webview.dart';
2120
import 'package:webview_flutter_wkwebview/src/common/weak_reference_utils.dart';
2221
import 'package:webview_flutter_wkwebview/src/common/web_kit.g.dart';
23-
import 'package:webview_flutter_wkwebview/src/webkit_proxy.dart';
2422
import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart';
2523

2624
Future<void> main() async {
@@ -63,6 +61,10 @@ Future<void> main() async {
6361
final headersUrl = '$prefixUrl/headers';
6462
final basicAuthUrl = '$prefixUrl/http-basic-authentication';
6563

64+
setUp(() {
65+
PigeonOverrides.pigeon_reset();
66+
});
67+
6668
testWidgets(
6769
'withWeakReferenceTo allows encapsulating class to be garbage collected',
6870
(WidgetTester tester) async {
@@ -98,38 +100,48 @@ Future<void> main() async {
98100
}
99101
});
100102

103+
PigeonOverrides.uIViewWKWebView_new =
104+
({
105+
required WKWebViewConfiguration initialConfiguration,
106+
void Function(
107+
NSObject pigeonInstance,
108+
String? keyPath,
109+
NSObject? object,
110+
Map<KeyValueChangeKey, Object?>? change,
111+
)?
112+
observeValue,
113+
}) {
114+
final webView = UIViewWKWebView.pigeon_new(
115+
initialConfiguration: initialConfiguration,
116+
);
117+
finalizer.attach(webView, webViewToken);
118+
return webView;
119+
};
120+
PigeonOverrides.nSViewWKWebView_new =
121+
({
122+
required WKWebViewConfiguration initialConfiguration,
123+
void Function(
124+
NSObject pigeonInstance,
125+
String? keyPath,
126+
NSObject? object,
127+
Map<KeyValueChangeKey, Object?>? change,
128+
)?
129+
observeValue,
130+
}) {
131+
final webView = NSViewWKWebView.pigeon_new(
132+
initialConfiguration: initialConfiguration,
133+
);
134+
finalizer.attach(webView, webViewToken);
135+
return webView;
136+
};
101137
// Wait for any WebView to be garbage collected.
102138
await tester.pumpWidget(
103139
Builder(
104140
builder: (BuildContext context) {
105141
return PlatformWebViewWidget(
106142
WebKitWebViewWidgetCreationParams(
107143
controller: PlatformWebViewController(
108-
WebKitWebViewControllerCreationParams(
109-
webKitProxy: WebKitProxy(
110-
newPlatformWebView:
111-
({
112-
required WKWebViewConfiguration
113-
initialConfiguration,
114-
void Function(
115-
NSObject,
116-
String?,
117-
NSObject?,
118-
Map<KeyValueChangeKey, Object?>?,
119-
)?
120-
observeValue,
121-
}) {
122-
final platformWebView = PlatformWebView(
123-
initialConfiguration: initialConfiguration,
124-
);
125-
finalizer.attach(
126-
platformWebView.nativeWebView,
127-
webViewToken,
128-
);
129-
return platformWebView;
130-
},
131-
),
132-
),
144+
WebKitWebViewControllerCreationParams(),
133145
),
134146
),
135147
).build(context);

0 commit comments

Comments
 (0)