diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md index aa117c9d72a8..662070437cf7 100644 --- a/packages/webview_flutter/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md @@ -1,3 +1,8 @@ +## NEXT + +* Removes a duplicate Android-specific integration test. +* Fixes an integration test race condition. + ## 3.0.0 * **BREAKING CHANGE**: On Android, hybrid composition (SurfaceAndroidWebView) 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 4c2d1fb0f4ff..7588dc8e02fb 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 @@ -480,7 +480,7 @@ void main() { onMessageReceived: (JavascriptMessage message) { final double currentTime = double.parse(message.message); // Let it play for at least 1 second to make sure the related video's properties are set. - if (currentTime > 1) { + if (currentTime > 1 && !videoPlaying.isCompleted) { videoPlaying.complete(null); } }, @@ -532,7 +532,7 @@ void main() { onMessageReceived: (JavascriptMessage message) { final double currentTime = double.parse(message.message); // Let it play for at least 1 second to make sure the related video's properties are set. - if (currentTime > 1) { + if (currentTime > 1 && !videoPlaying.isCompleted) { videoPlaying.complete(null); } }, @@ -1202,75 +1202,6 @@ void main() { }, skip: _skipDueToIssue86757, ); - - testWidgets( - 'JavaScript does not run in parent window', - (WidgetTester tester) async { - const String iframe = ''' - - - '''; - final String iframeTestBase64 = - base64Encode(const Utf8Encoder().convert(iframe)); - - final String openWindowTest = ''' - - - - XSS test - - - - - - '''; - final String openWindowTestBase64 = - base64Encode(const Utf8Encoder().convert(openWindowTest)); - final Completer controllerCompleter = - Completer(); - final Completer pageLoadCompleter = Completer(); - - await tester.pumpWidget( - Directionality( - textDirection: TextDirection.ltr, - child: WebView( - key: GlobalKey(), - onWebViewCreated: (WebViewController controller) { - controllerCompleter.complete(controller); - }, - javascriptMode: JavascriptMode.unrestricted, - initialUrl: - 'data:text/html;charset=utf-8;base64,$openWindowTestBase64', - onPageFinished: (String url) { - pageLoadCompleter.complete(); - }, - ), - ), - ); - - final WebViewController controller = await controllerCompleter.future; - await pageLoadCompleter.future; - - expect(controller.runJavascriptReturningResult('iframeLoaded'), - completion('true')); - expect( - controller.runJavascriptReturningResult( - 'document.querySelector("p") && document.querySelector("p").textContent'), - completion('null'), - ); - }, - skip: !Platform.isAndroid, - ); } // JavaScript booleans evaluate to different string values on Android and iOS. diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 818a13439c95..145bc8fcc068 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## NEXT + +* Fixes an integration test race condition. + ## 2.8.2 * Adds the `WebSettings.setAllowFileAccess()` method and ensure that file access is allowed when the `WebViewAndroidWidget.loadFile()` method is executed. 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 91fc860dffae..544089f1a7ab 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 @@ -484,7 +484,7 @@ void main() { onMessageReceived: (JavascriptMessage message) { final double currentTime = double.parse(message.message); // Let it play for at least 1 second to make sure the related video's properties are set. - if (currentTime > 1) { + if (currentTime > 1 && !videoPlaying.isCompleted) { videoPlaying.complete(null); } }, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index db8338df5565..c3dd8726273e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,6 +1,10 @@ +## NEXT + +* Fixes an integration test race condition. + ## 2.7.1 -* Fixes header import for cookie manager to be relative only. +* Fixes header import for cookie manager to be relative only. ## 2.7.0 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 1e4adb9f7de0..5824d5d32d0b 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 @@ -466,7 +466,7 @@ void main() { onMessageReceived: (JavascriptMessage message) { final double currentTime = double.parse(message.message); // Let it play for at least 1 second to make sure the related video's properties are set. - if (currentTime > 1) { + if (currentTime > 1 && !videoPlaying.isCompleted) { videoPlaying.complete(null); } }, @@ -517,7 +517,7 @@ void main() { onMessageReceived: (JavascriptMessage message) { final double currentTime = double.parse(message.message); // Let it play for at least 1 second to make sure the related video's properties are set. - if (currentTime > 1) { + if (currentTime > 1 && !videoPlaying.isCompleted) { videoPlaying.complete(null); } },