Skip to content

Commit f22ff36

Browse files
[webview_flutter_wkwebview] Only set limitsNavigationsToAppBoundDomains when it is set to true (#5137)
This changes the flag to only flag to only call the method if it sets it to `true`. Fixes flutter/flutter#136449
1 parent c6821f9 commit f22ff36

File tree

4 files changed

+33
-3
lines changed

4 files changed

+33
-3
lines changed

Diff for: packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 3.9.2
2+
3+
* Fixes error caused by calling `WKWebViewConfiguration.limitsNavigationsToAppBoundDomains` on
4+
versions below 14.
5+
16
## 3.9.1
27

38
* Fixes bug where `WebkitWebViewController.getUserAgent` was incorrectly returning an empty String.

Diff for: packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart

+8-2
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,14 @@ class WebKitWebViewControllerCreationParams
7070
);
7171
}
7272
_configuration.setAllowsInlineMediaPlayback(allowsInlineMediaPlayback);
73-
_configuration.setLimitsNavigationsToAppBoundDomains(
74-
limitsNavigationsToAppBoundDomains);
73+
// `WKWebViewConfiguration.limitsNavigationsToAppBoundDomains` is only
74+
// supported on iOS versions 14+. So this only calls it if the value is set
75+
// to true.
76+
if (limitsNavigationsToAppBoundDomains) {
77+
_configuration.setLimitsNavigationsToAppBoundDomains(
78+
limitsNavigationsToAppBoundDomains,
79+
);
80+
}
7581
}
7682

7783
/// Constructs a [WebKitWebViewControllerCreationParams] using a

Diff for: packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: webview_flutter_wkwebview
22
description: A Flutter plugin that provides a WebView widget based on Apple's WKWebView control.
33
repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_wkwebview
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22
5-
version: 3.9.1
5+
version: 3.9.2
66

77
environment:
88
sdk: ">=2.19.0 <4.0.0"

Diff for: packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart

+19
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,25 @@ void main() {
160160
);
161161
});
162162

163+
test(
164+
'limitsNavigationsToAppBoundDomains is not called if it uses default value (false)',
165+
() {
166+
final MockWKWebViewConfiguration mockConfiguration =
167+
MockWKWebViewConfiguration();
168+
169+
WebKitWebViewControllerCreationParams(
170+
webKitProxy: WebKitProxy(
171+
createWebViewConfiguration: ({InstanceManager? instanceManager}) {
172+
return mockConfiguration;
173+
},
174+
),
175+
);
176+
177+
verifyNever(
178+
mockConfiguration.setLimitsNavigationsToAppBoundDomains(any),
179+
);
180+
});
181+
163182
test('mediaTypesRequiringUserAction', () {
164183
final MockWKWebViewConfiguration mockConfiguration =
165184
MockWKWebViewConfiguration();

0 commit comments

Comments
 (0)