Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/webview_flutter/webview_flutter/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
},
Expand Down Expand Up @@ -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);
}
},
Expand Down Expand Up @@ -1202,75 +1202,6 @@ void main() {
},
skip: _skipDueToIssue86757,
);

testWidgets(
'JavaScript does not run in parent window',
(WidgetTester tester) async {
const String iframe = '''
<!DOCTYPE html>
<script>
window.onload = () => {
window.open(`javascript:
var elem = document.createElement("p");
elem.innerHTML = "<b>Executed JS in parent origin: " + window.location.origin + "</b>";
document.body.append(elem);
`);
};
</script>
''';
final String iframeTestBase64 =
base64Encode(const Utf8Encoder().convert(iframe));

final String openWindowTest = '''
<!DOCTYPE html>
<html>
<head>
<title>XSS test</title>
</head>
<body>
<iframe
onload="window.iframeLoaded = true;"
src="data:text/html;charset=utf-8;base64,$iframeTestBase64"></iframe>
</body>
</html>
''';
final String openWindowTestBase64 =
base64Encode(const Utf8Encoder().convert(openWindowTest));
final Completer<WebViewController> controllerCompleter =
Completer<WebViewController>();
final Completer<void> pageLoadCompleter = Completer<void>();

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.
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
},
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
},
Expand Down Expand Up @@ -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);
}
},
Expand Down