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);
}
},