From ba6659e6b1b80eeb1bc9a5b2ec0ee357540de1cb Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 3 Mar 2022 11:42:30 -0500 Subject: [PATCH 1/7] Switch remaining server-based webiew tests to local server --- .../example/integration_test/webview_flutter_test.dart | 8 ++++---- .../example/integration_test/webview_flutter_test.dart | 8 ++++---- .../example/integration_test/webview_flutter_test.dart | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 02ee1976eb67..3f52144cad38 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -933,7 +933,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('youtube.com')) + return (request.url.contains('does-not-match-target')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1063,7 +1063,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('youtube.com')) + return (request.url.contains('secondary.txt')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1075,7 +1075,7 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; await controller - .runJavascript('location.href = "https://www.youtube.com/"'); + .runJavascript('location.href = "$secondaryUrl"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order @@ -1083,7 +1083,7 @@ Future main() async { await pageLoads.stream.first .timeout(const Duration(milliseconds: 500), onTimeout: () => ''); final String? currentUrl = await controller.currentUrl(); - expect(currentUrl, isNot(contains('youtube.com'))); + expect(currentUrl, isNot(contains('secondary.txt'))); }); testWidgets('supports asynchronous decisions', (WidgetTester tester) async { diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 58f2f369bcf5..41e3c13ad1ef 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1029,7 +1029,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('youtube.com')) + return (request.url.contains('does-not-match-target')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1154,7 +1154,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('youtube.com')) + return (request.url.contains('secondary.txt')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1166,7 +1166,7 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; await controller - .runJavascript('location.href = "https://www.youtube.com/"'); + .runJavascript('location.href = "$secondaryUrl"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order @@ -1174,7 +1174,7 @@ Future main() async { await pageLoads.stream.first .timeout(const Duration(milliseconds: 500), onTimeout: () => ''); final String? currentUrl = await controller.currentUrl(); - expect(currentUrl, isNot(contains('youtube.com'))); + expect(currentUrl, isNot(contains('secondary.txt'))); }); testWidgets('supports asynchronous decisions', (WidgetTester tester) async { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 924a6caa0f85..5824ed7995b8 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -881,7 +881,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('youtube.com')) + return (request.url.contains('does-not-match-target')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1011,7 +1011,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('youtube.com')) + return (request.url.contains('secondary.txt')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1023,7 +1023,7 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; await controller - .runJavascript('location.href = "https://www.youtube.com/"'); + .runJavascript('location.href = "$secondaryUrl"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order @@ -1031,7 +1031,7 @@ Future main() async { await pageLoads.stream.first .timeout(const Duration(milliseconds: 500), onTimeout: () => ''); final String? currentUrl = await controller.currentUrl(); - expect(currentUrl, isNot(contains('youtube.com'))); + expect(currentUrl, isNot(contains('secondary.txt'))); }); testWidgets('supports asynchronous decisions', (WidgetTester tester) async { From 4991b1cf71e0e71d7b3e3efb3590ee2d017d8bbd Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 3 Mar 2022 11:48:48 -0500 Subject: [PATCH 2/7] Switch video_player to team-owned URLs --- .../integration_test/video_player_test.dart | 16 +++++++--------- .../integration_test/video_player_test.dart | 5 ++++- .../integration_test/video_player_test.dart | 7 +++++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index 746c63fcbfd6..151eb93149ee 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -21,10 +21,13 @@ const String _videoAssetKey = kIsWeb ? 'assets/Butterfly-209.webm' : 'assets/Butterfly-209.mp4'; // Returns the URL to load an asset from this example app as a network source. +// +// TODO(stuartmorgan): Convert this to a local `HttpServer` that vends the +// assets directly, https://github.com/flutter/flutter/issues/95420 String getUrlForAssetAsNetworkSource(String assetKey) { return 'https://github.com/flutter/plugins/blob/' // This hash can be rolled forward to pick up newly-added assets. - 'cba393233e559c925a4daf71b06b4bb01c606762' + 'cb381ced070d356799dddf24aca38ce0579d3d7b' '/packages/video_player/video_player/example/' '$assetKey' '?raw=true'; @@ -56,7 +59,7 @@ void main() { (WidgetTester tester) async { final VideoPlayerController networkController = VideoPlayerController.network( - 'https://cph-p2p-msl.akamaized.net/hls/live/2000341/test/master.m3u8', + 'https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8', ); await networkController.initialize(); @@ -229,13 +232,8 @@ void main() { group('network videos', () { setUp(() { - // TODO(stuartmorgan): Remove this conditional and update the hash in - // getUrlForAssetAsNetworkSource as a follow-up, once the webm asset is - // checked in. - final String videoUrl = kIsWeb - ? 'https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm' - : getUrlForAssetAsNetworkSource(_videoAssetKey); - _controller = VideoPlayerController.network(videoUrl); + _controller = VideoPlayerController.network( + getUrlForAssetAsNetworkSource(_videoAssetKey)); }); testWidgets( diff --git a/packages/video_player/video_player_android/example/integration_test/video_player_test.dart b/packages/video_player/video_player_android/example/integration_test/video_player_test.dart index b80ed745a6f9..c17234f121be 100644 --- a/packages/video_player/video_player_android/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player_android/example/integration_test/video_player_test.dart @@ -24,10 +24,13 @@ const Duration _playDuration = Duration(seconds: 1); const String _videoAssetKey = 'assets/Butterfly-209.mp4'; // Returns the URL to load an asset from this example app as a network source. +// +// TODO(stuartmorgan): Convert this to a local `HttpServer` that vends the +// assets directly, https://github.com/flutter/flutter/issues/95420 String getUrlForAssetAsNetworkSource(String assetKey) { return 'https://github.com/flutter/plugins/blob/' // This hash can be rolled forward to pick up newly-added assets. - 'cba393233e559c925a4daf71b06b4bb01c606762' + 'cb381ced070d356799dddf24aca38ce0579d3d7b' '/packages/video_player/video_player/example/' '$assetKey' '?raw=true'; diff --git a/packages/video_player/video_player_avfoundation/example/integration_test/video_player_test.dart b/packages/video_player/video_player_avfoundation/example/integration_test/video_player_test.dart index a457d9226e3e..528723d092b4 100644 --- a/packages/video_player/video_player_avfoundation/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player_avfoundation/example/integration_test/video_player_test.dart @@ -24,10 +24,13 @@ const Duration _playDuration = Duration(seconds: 1); const String _videoAssetKey = 'assets/Butterfly-209.mp4'; // Returns the URL to load an asset from this example app as a network source. +// +// TODO(stuartmorgan): Convert this to a local `HttpServer` that vends the +// assets directly, https://github.com/flutter/flutter/issues/95420 String getUrlForAssetAsNetworkSource(String assetKey) { return 'https://github.com/flutter/plugins/blob/' // This hash can be rolled forward to pick up newly-added assets. - 'cba393233e559c925a4daf71b06b4bb01c606762' + 'cb381ced070d356799dddf24aca38ce0579d3d7b' '/packages/video_player/video_player/example/' '$assetKey' '?raw=true'; @@ -167,7 +170,7 @@ void main() { testWidgets('live stream duration != 0', (WidgetTester tester) async { final MiniController livestreamController = MiniController.network( - 'https://cph-p2p-msl.akamaized.net/hls/live/2000341/test/master.m3u8', + 'https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8', ); await livestreamController.initialize(); From 221707d415af714037f26ac41619d71e50216fbf Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 3 Mar 2022 12:09:38 -0500 Subject: [PATCH 3/7] dart format --- .../example/integration_test/webview_flutter_test.dart | 3 +-- .../example/integration_test/webview_flutter_test.dart | 3 +-- .../example/integration_test/webview_flutter_test.dart | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 3f52144cad38..1eca26141095 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -1074,8 +1074,7 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; - await controller - .runJavascript('location.href = "$secondaryUrl"'); + await controller.runJavascript('location.href = "$secondaryUrl"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 41e3c13ad1ef..9a2074f4d238 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1165,8 +1165,7 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; - await controller - .runJavascript('location.href = "$secondaryUrl"'); + await controller.runJavascript('location.href = "$secondaryUrl"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 5824ed7995b8..3781cac692cd 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -1022,8 +1022,7 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; - await controller - .runJavascript('location.href = "$secondaryUrl"'); + await controller.runJavascript('location.href = "$secondaryUrl"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order From ee9d74ca1809ffe118cef5b2611a730d4ad16cc3 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 3 Mar 2022 12:10:56 -0500 Subject: [PATCH 4/7] Missed URL change --- .../example/integration_test/video_player_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/video_player/video_player_android/example/integration_test/video_player_test.dart b/packages/video_player/video_player_android/example/integration_test/video_player_test.dart index c17234f121be..77a618bbbdfc 100644 --- a/packages/video_player/video_player_android/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player_android/example/integration_test/video_player_test.dart @@ -158,7 +158,7 @@ void main() { testWidgets('live stream duration != 0', (WidgetTester tester) async { final MiniController livestreamController = MiniController.network( - 'https://cph-p2p-msl.akamaized.net/hls/live/2000341/test/master.m3u8', + 'https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8', ); await livestreamController.initialize(); From 43e86ffdc5f42ac8142f2b2b0722b01b69e8a8a1 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 3 Mar 2022 12:43:24 -0500 Subject: [PATCH 5/7] Try starting from primaryUrl --- .../example/integration_test/webview_flutter_test.dart | 2 +- .../example/integration_test/webview_flutter_test.dart | 2 +- .../example/integration_test/webview_flutter_test.dart | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 1eca26141095..72b5325c346e 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -1057,7 +1057,7 @@ Future main() async { textDirection: TextDirection.ltr, child: WebView( key: GlobalKey(), - initialUrl: blankPageEncoded, + initialUrl: primaryUrl, onWebViewCreated: (WebViewController controller) { controllerCompleter.complete(controller); }, diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 9a2074f4d238..ba0adb4de6d8 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1148,7 +1148,7 @@ Future main() async { textDirection: TextDirection.ltr, child: WebView( key: GlobalKey(), - initialUrl: blankPageEncoded, + initialUrl: primaryUrl, onWebViewCreated: (WebViewController controller) { controllerCompleter.complete(controller); }, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 3781cac692cd..c365307ecf60 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -1005,7 +1005,7 @@ Future main() async { textDirection: TextDirection.ltr, child: WebView( key: GlobalKey(), - initialUrl: blankPageEncoded, + initialUrl: primaryUrl, onWebViewCreated: (WebViewController controller) { controllerCompleter.complete(controller); }, From 6e6e9ef4a62c099db6f24f02c05290df3fcd0feb Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 3 Mar 2022 13:53:12 -0500 Subject: [PATCH 6/7] Temp logging for CI failures --- .../example/integration_test/webview_flutter_test.dart | 1 + .../example/integration_test/webview_flutter_test.dart | 1 + .../example/integration_test/webview_flutter_test.dart | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 72b5325c346e..ca39d675ca96 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -1063,6 +1063,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { + print('### GOT NAVIGATION REQUEST ### ${request.url}'); return (request.url.contains('secondary.txt')) ? NavigationDecision.prevent : NavigationDecision.navigate; diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index ba0adb4de6d8..1e7f88f5edff 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1154,6 +1154,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { + print('### GOT NAVIGATION REQUEST ### ${request.url}'); return (request.url.contains('secondary.txt')) ? NavigationDecision.prevent : NavigationDecision.navigate; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index c365307ecf60..abe203938336 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -1011,6 +1011,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { + print('### GOT NAVIGATION REQUEST ### ${request.url}'); return (request.url.contains('secondary.txt')) ? NavigationDecision.prevent : NavigationDecision.navigate; From 292b6f27492f59dde90a94e92cc147d6529e027b Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Wed, 23 Mar 2022 15:15:09 -0400 Subject: [PATCH 7/7] Revert the webview changes --- .../integration_test/webview_flutter_test.dart | 12 ++++++------ .../integration_test/webview_flutter_test.dart | 12 ++++++------ .../integration_test/webview_flutter_test.dart | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index ca39d675ca96..02ee1976eb67 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -933,7 +933,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('does-not-match-target')) + return (request.url.contains('youtube.com')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1057,14 +1057,13 @@ Future main() async { textDirection: TextDirection.ltr, child: WebView( key: GlobalKey(), - initialUrl: primaryUrl, + initialUrl: blankPageEncoded, onWebViewCreated: (WebViewController controller) { controllerCompleter.complete(controller); }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - print('### GOT NAVIGATION REQUEST ### ${request.url}'); - return (request.url.contains('secondary.txt')) + return (request.url.contains('youtube.com')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1075,7 +1074,8 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; - await controller.runJavascript('location.href = "$secondaryUrl"'); + await controller + .runJavascript('location.href = "https://www.youtube.com/"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order @@ -1083,7 +1083,7 @@ Future main() async { await pageLoads.stream.first .timeout(const Duration(milliseconds: 500), onTimeout: () => ''); final String? currentUrl = await controller.currentUrl(); - expect(currentUrl, isNot(contains('secondary.txt'))); + expect(currentUrl, isNot(contains('youtube.com'))); }); testWidgets('supports asynchronous decisions', (WidgetTester tester) async { diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 1e7f88f5edff..58f2f369bcf5 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1029,7 +1029,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('does-not-match-target')) + return (request.url.contains('youtube.com')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1148,14 +1148,13 @@ Future main() async { textDirection: TextDirection.ltr, child: WebView( key: GlobalKey(), - initialUrl: primaryUrl, + initialUrl: blankPageEncoded, onWebViewCreated: (WebViewController controller) { controllerCompleter.complete(controller); }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - print('### GOT NAVIGATION REQUEST ### ${request.url}'); - return (request.url.contains('secondary.txt')) + return (request.url.contains('youtube.com')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1166,7 +1165,8 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; - await controller.runJavascript('location.href = "$secondaryUrl"'); + await controller + .runJavascript('location.href = "https://www.youtube.com/"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order @@ -1174,7 +1174,7 @@ Future main() async { await pageLoads.stream.first .timeout(const Duration(milliseconds: 500), onTimeout: () => ''); final String? currentUrl = await controller.currentUrl(); - expect(currentUrl, isNot(contains('secondary.txt'))); + expect(currentUrl, isNot(contains('youtube.com'))); }); testWidgets('supports asynchronous decisions', (WidgetTester tester) async { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index abe203938336..924a6caa0f85 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -881,7 +881,7 @@ Future main() async { }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - return (request.url.contains('does-not-match-target')) + return (request.url.contains('youtube.com')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1005,14 +1005,13 @@ Future main() async { textDirection: TextDirection.ltr, child: WebView( key: GlobalKey(), - initialUrl: primaryUrl, + initialUrl: blankPageEncoded, onWebViewCreated: (WebViewController controller) { controllerCompleter.complete(controller); }, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) { - print('### GOT NAVIGATION REQUEST ### ${request.url}'); - return (request.url.contains('secondary.txt')) + return (request.url.contains('youtube.com')) ? NavigationDecision.prevent : NavigationDecision.navigate; }, @@ -1023,7 +1022,8 @@ Future main() async { await pageLoads.stream.first; // Wait for initial page load. final WebViewController controller = await controllerCompleter.future; - await controller.runJavascript('location.href = "$secondaryUrl"'); + await controller + .runJavascript('location.href = "https://www.youtube.com/"'); // There should never be any second page load, since our new URL is // blocked. Still wait for a potential page change for some time in order @@ -1031,7 +1031,7 @@ Future main() async { await pageLoads.stream.first .timeout(const Duration(milliseconds: 500), onTimeout: () => ''); final String? currentUrl = await controller.currentUrl(); - expect(currentUrl, isNot(contains('secondary.txt'))); + expect(currentUrl, isNot(contains('youtube.com'))); }); testWidgets('supports asynchronous decisions', (WidgetTester tester) async {