Skip to content

Commit ec80d34

Browse files
[webview_flutter] Remove duplicate integration test (flutter#4666)
This test is for a change that was entirely in Android Java code when it was written, so is testing behavior that is internal to the Android implementation, and a copy of this test already runs webview_flutter_android. Given that it's testing internal Android behavior, only that copy is needed. For unknown reasons, this copy seems to hang test runs, while the webview_flutter_android copy does not. Since it's a duplicate that we want to remove anyway, this simply removes it to fix the tree without meaningful loss of coverage. Also fixes a race condition in an integration test, where a future could be completed more than once. Part of flutter/flutter#91004
1 parent 146b751 commit ec80d34

File tree

6 files changed

+19
-75
lines changed

6 files changed

+19
-75
lines changed

packages/webview_flutter/webview_flutter/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## NEXT
2+
3+
* Removes a duplicate Android-specific integration test.
4+
* Fixes an integration test race condition.
5+
16
## 3.0.0
27

38
* **BREAKING CHANGE**: On Android, hybrid composition (SurfaceAndroidWebView)

packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart

Lines changed: 2 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ void main() {
480480
onMessageReceived: (JavascriptMessage message) {
481481
final double currentTime = double.parse(message.message);
482482
// Let it play for at least 1 second to make sure the related video's properties are set.
483-
if (currentTime > 1) {
483+
if (currentTime > 1 && !videoPlaying.isCompleted) {
484484
videoPlaying.complete(null);
485485
}
486486
},
@@ -532,7 +532,7 @@ void main() {
532532
onMessageReceived: (JavascriptMessage message) {
533533
final double currentTime = double.parse(message.message);
534534
// Let it play for at least 1 second to make sure the related video's properties are set.
535-
if (currentTime > 1) {
535+
if (currentTime > 1 && !videoPlaying.isCompleted) {
536536
videoPlaying.complete(null);
537537
}
538538
},
@@ -1202,75 +1202,6 @@ void main() {
12021202
},
12031203
skip: _skipDueToIssue86757,
12041204
);
1205-
1206-
testWidgets(
1207-
'JavaScript does not run in parent window',
1208-
(WidgetTester tester) async {
1209-
const String iframe = '''
1210-
<!DOCTYPE html>
1211-
<script>
1212-
window.onload = () => {
1213-
window.open(`javascript:
1214-
var elem = document.createElement("p");
1215-
elem.innerHTML = "<b>Executed JS in parent origin: " + window.location.origin + "</b>";
1216-
document.body.append(elem);
1217-
`);
1218-
};
1219-
</script>
1220-
''';
1221-
final String iframeTestBase64 =
1222-
base64Encode(const Utf8Encoder().convert(iframe));
1223-
1224-
final String openWindowTest = '''
1225-
<!DOCTYPE html>
1226-
<html>
1227-
<head>
1228-
<title>XSS test</title>
1229-
</head>
1230-
<body>
1231-
<iframe
1232-
onload="window.iframeLoaded = true;"
1233-
src="data:text/html;charset=utf-8;base64,$iframeTestBase64"></iframe>
1234-
</body>
1235-
</html>
1236-
''';
1237-
final String openWindowTestBase64 =
1238-
base64Encode(const Utf8Encoder().convert(openWindowTest));
1239-
final Completer<WebViewController> controllerCompleter =
1240-
Completer<WebViewController>();
1241-
final Completer<void> pageLoadCompleter = Completer<void>();
1242-
1243-
await tester.pumpWidget(
1244-
Directionality(
1245-
textDirection: TextDirection.ltr,
1246-
child: WebView(
1247-
key: GlobalKey(),
1248-
onWebViewCreated: (WebViewController controller) {
1249-
controllerCompleter.complete(controller);
1250-
},
1251-
javascriptMode: JavascriptMode.unrestricted,
1252-
initialUrl:
1253-
'data:text/html;charset=utf-8;base64,$openWindowTestBase64',
1254-
onPageFinished: (String url) {
1255-
pageLoadCompleter.complete();
1256-
},
1257-
),
1258-
),
1259-
);
1260-
1261-
final WebViewController controller = await controllerCompleter.future;
1262-
await pageLoadCompleter.future;
1263-
1264-
expect(controller.runJavascriptReturningResult('iframeLoaded'),
1265-
completion('true'));
1266-
expect(
1267-
controller.runJavascriptReturningResult(
1268-
'document.querySelector("p") && document.querySelector("p").textContent'),
1269-
completion('null'),
1270-
);
1271-
},
1272-
skip: !Platform.isAndroid,
1273-
);
12741205
}
12751206

12761207
// JavaScript booleans evaluate to different string values on Android and iOS.

packages/webview_flutter/webview_flutter_android/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## NEXT
2+
3+
* Fixes an integration test race condition.
4+
15
## 2.8.2
26

37
* Adds the `WebSettings.setAllowFileAccess()` method and ensure that file access is allowed when the `WebViewAndroidWidget.loadFile()` method is executed.

packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ void main() {
484484
onMessageReceived: (JavascriptMessage message) {
485485
final double currentTime = double.parse(message.message);
486486
// Let it play for at least 1 second to make sure the related video's properties are set.
487-
if (currentTime > 1) {
487+
if (currentTime > 1 && !videoPlaying.isCompleted) {
488488
videoPlaying.complete(null);
489489
}
490490
},

packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
## NEXT
2+
3+
* Fixes an integration test race condition.
4+
15
## 2.7.1
26

3-
* Fixes header import for cookie manager to be relative only.
7+
* Fixes header import for cookie manager to be relative only.
48

59
## 2.7.0
610

packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ void main() {
466466
onMessageReceived: (JavascriptMessage message) {
467467
final double currentTime = double.parse(message.message);
468468
// Let it play for at least 1 second to make sure the related video's properties are set.
469-
if (currentTime > 1) {
469+
if (currentTime > 1 && !videoPlaying.isCompleted) {
470470
videoPlaying.complete(null);
471471
}
472472
},
@@ -517,7 +517,7 @@ void main() {
517517
onMessageReceived: (JavascriptMessage message) {
518518
final double currentTime = double.parse(message.message);
519519
// Let it play for at least 1 second to make sure the related video's properties are set.
520-
if (currentTime > 1) {
520+
if (currentTime > 1 && !videoPlaying.isCompleted) {
521521
videoPlaying.complete(null);
522522
}
523523
},

0 commit comments

Comments
 (0)