From 31a0b32bca882abffe12d70f102049a9805194e7 Mon Sep 17 00:00:00 2001 From: Gaute Haugen Date: Wed, 3 Nov 2021 16:19:34 +0100 Subject: [PATCH 1/3] Added `limitsNavigationsToAppBoundDomains` to `CreationParams` --- .../lib/src/method_channel/webview_method_channel.dart | 2 ++ .../lib/src/types/creation_params.dart | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart index a88479e7e024..1ad40346108b 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart @@ -239,6 +239,8 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { 'userAgent': creationParams.userAgent, 'autoMediaPlaybackPolicy': creationParams.autoMediaPlaybackPolicy.index, 'usesHybridComposition': usesHybridComposition, + 'limitsNavigationsToAppBoundDomains': + creationParams.limitsNavigationsToAppBoundDomains, }; } } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/creation_params.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/creation_params.dart index f213e976ad84..09697b9cad7f 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/creation_params.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/creation_params.dart @@ -20,6 +20,7 @@ class CreationParams { this.userAgent, this.autoMediaPlaybackPolicy = AutoMediaPlaybackPolicy.require_user_action_for_all_media_types, + this.limitsNavigationsToAppBoundDomains = false, }) : assert(autoMediaPlaybackPolicy != null); /// The initialUrl to load in the webview. @@ -53,8 +54,11 @@ class CreationParams { /// Which restrictions apply on automatic media playback. final AutoMediaPlaybackPolicy autoMediaPlaybackPolicy; + /// This value is used to either enable or disable navigations to app-bound domains + final bool limitsNavigationsToAppBoundDomains; + @override String toString() { - return '$runtimeType(initialUrl: $initialUrl, settings: $webSettings, javascriptChannelNames: $javascriptChannelNames, UserAgent: $userAgent)'; + return '$runtimeType(initialUrl: $initialUrl, settings: $webSettings, javascriptChannelNames: $javascriptChannelNames, UserAgent: $userAgent, limitsNavigationsToAppBoundDomains: $limitsNavigationsToAppBoundDomains)'; } } From 3cd53c33efbaaec5a3e0ee94c45499e9b8a165d2 Mon Sep 17 00:00:00 2001 From: Gaute Haugen Date: Wed, 3 Nov 2021 16:20:07 +0100 Subject: [PATCH 2/3] Added flutter unit tests for `limitsNavigationsToAppBoundDomains` --- .../webview_method_channel_test.dart | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart index b85b7b3df286..56befdd8ee3b 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart @@ -536,6 +536,32 @@ void main() { ); }); }); + + group('Tests limitsNavigationsToAppBoundDomains', () { + test('Make sure limitsNavigationsToAppBoundDomains defaults to false', () { + final value = MethodChannelWebViewPlatform.creationParamsToMap( + CreationParams( + webSettings: WebSettings( + userAgent: WebSetting.of(''), + ), + ), + ); + + expect(value['limitsNavigationsToAppBoundDomains'], false); + }); + test('Make sure limitsNavigationsToAppBoundDomains can be set to true', () { + final value = MethodChannelWebViewPlatform.creationParamsToMap( + CreationParams( + limitsNavigationsToAppBoundDomains: true, + webSettings: WebSettings( + userAgent: WebSetting.of(''), + ), + ), + ); + + expect(value['limitsNavigationsToAppBoundDomains'], true); + }); + }); } class MockWebViewPlatformCallbacksHandler extends Mock From 915abb2a3807531d5812221969f9151b6b2c0832 Mon Sep 17 00:00:00 2001 From: Gaute Haugen Date: Wed, 3 Nov 2021 16:20:17 +0100 Subject: [PATCH 3/3] Updated changelog and pubspec --- .../webview_flutter_platform_interface/CHANGELOG.md | 4 ++++ .../webview_flutter_platform_interface/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index 0579121be82b..1353eb0ca817 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.0 + +* Added `limitsNavigationsToAppBoundDomains` functionality to `CreationParams`. + ## 1.3.0 * Added `loadRequest` method to platform interface. diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml index 508af0ef0862..4a4746d8ab68 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ repository: https://github.com/flutter/plugins/tree/master/packages/webview_flut issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview_flutter%22 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.3.0 +version: 1.4.0 environment: sdk: ">=2.12.0 <3.0.0"