@@ -61,8 +61,6 @@ void main() {
61
61
expect (currentUrl, 'https://www.google.com/' );
62
62
});
63
63
64
- // enable this once https://github.com/flutter/flutter/issues/31510
65
- // is resolved.
66
64
testWidgets ('loadUrl with headers' , (WidgetTester tester) async {
67
65
final Completer <WebViewController > controllerCompleter =
68
66
Completer <WebViewController >();
@@ -343,6 +341,11 @@ void main() {
343
341
function play() {
344
342
var video = document.getElementById("video");
345
343
video.play();
344
+ video.addEventListener('timeupdate', videoTimeUpdateHandler, false);
345
+ }
346
+ function videoTimeUpdateHandler(e) {
347
+ var video = document.getElementById("video");
348
+ VideoTestTime.postMessage(video.currentTime);
346
349
}
347
350
function isPaused() {
348
351
var video = document.getElementById("video");
@@ -420,7 +423,7 @@ void main() {
420
423
421
424
isPaused = await controller.evaluateJavascript ('isPaused();' );
422
425
expect (isPaused, _webviewBool (true ));
423
- }, skip : true /* https://github.com/flutter/flutter/issues/72572 */ );
426
+ });
424
427
425
428
testWidgets ('Changes to initialMediaPlaybackPolicy are ignored' ,
426
429
(WidgetTester tester) async {
@@ -479,24 +482,36 @@ void main() {
479
482
480
483
isPaused = await controller.evaluateJavascript ('isPaused();' );
481
484
expect (isPaused, _webviewBool (false ));
482
- }, skip : true /* https://github.com/flutter/flutter/issues/72572 */ );
485
+ });
483
486
484
487
testWidgets ('Video plays inline when allowsInlineMediaPlayback is true' ,
485
488
(WidgetTester tester) async {
486
489
Completer <WebViewController > controllerCompleter =
487
490
Completer <WebViewController >();
488
491
Completer <void > pageLoaded = Completer <void >();
492
+ Completer <void > videoPlaying = Completer <void >();
489
493
490
494
await tester.pumpWidget (
491
495
Directionality (
492
496
textDirection: TextDirection .ltr,
493
497
child: WebView (
494
- key: GlobalKey (),
495
498
initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
496
499
onWebViewCreated: (WebViewController controller) {
497
500
controllerCompleter.complete (controller);
498
501
},
499
502
javascriptMode: JavascriptMode .unrestricted,
503
+ javascriptChannels: < JavascriptChannel > {
504
+ JavascriptChannel (
505
+ name: 'VideoTestTime' ,
506
+ onMessageReceived: (JavascriptMessage message) {
507
+ final double currentTime = double .parse (message.message);
508
+ // Let it play for at least 1 second to make sure the related video's properties are set.
509
+ if (currentTime > 1 ) {
510
+ videoPlaying.complete (null );
511
+ }
512
+ },
513
+ ),
514
+ },
500
515
onPageFinished: (String url) {
501
516
pageLoaded.complete (null );
502
517
},
@@ -508,23 +523,46 @@ void main() {
508
523
WebViewController controller = await controllerCompleter.future;
509
524
await pageLoaded.future;
510
525
511
- String isFullScreen =
526
+ // Pump once to trigger the video play.
527
+ await tester.pump ();
528
+
529
+ // Makes sure we get the correct event that indicates the video is actually playing.
530
+ await videoPlaying.future;
531
+
532
+ String fullScreen =
512
533
await controller.evaluateJavascript ('isFullScreen();' );
513
- expect (isFullScreen, _webviewBool (false ));
534
+ expect (fullScreen, _webviewBool (false ));
535
+ });
514
536
515
- controllerCompleter = Completer <WebViewController >();
516
- pageLoaded = Completer <void >();
537
+ testWidgets (
538
+ 'Video plays full screen when allowsInlineMediaPlayback is false' ,
539
+ (WidgetTester tester) async {
540
+ Completer <WebViewController > controllerCompleter =
541
+ Completer <WebViewController >();
542
+ Completer <void > pageLoaded = Completer <void >();
543
+ Completer <void > videoPlaying = Completer <void >();
517
544
518
545
await tester.pumpWidget (
519
546
Directionality (
520
547
textDirection: TextDirection .ltr,
521
548
child: WebView (
522
- key: GlobalKey (),
523
549
initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
524
550
onWebViewCreated: (WebViewController controller) {
525
551
controllerCompleter.complete (controller);
526
552
},
527
553
javascriptMode: JavascriptMode .unrestricted,
554
+ javascriptChannels: < JavascriptChannel > {
555
+ JavascriptChannel (
556
+ name: 'VideoTestTime' ,
557
+ onMessageReceived: (JavascriptMessage message) {
558
+ final double currentTime = double .parse (message.message);
559
+ // Let it play for at least 1 second to make sure the related video's properties are set.
560
+ if (currentTime > 1 ) {
561
+ videoPlaying.complete (null );
562
+ }
563
+ },
564
+ ),
565
+ },
528
566
onPageFinished: (String url) {
529
567
pageLoaded.complete (null );
530
568
},
@@ -533,13 +571,19 @@ void main() {
533
571
),
534
572
),
535
573
);
536
-
537
- controller = await controllerCompleter.future;
574
+ WebViewController controller = await controllerCompleter.future;
538
575
await pageLoaded.future;
539
576
540
- isFullScreen = await controller.evaluateJavascript ('isFullScreen();' );
541
- expect (isFullScreen, _webviewBool (true ));
542
- }, skip: true /* https://github.com/flutter/flutter/issues/72572 */ );
577
+ // Pump once to trigger the video play.
578
+ await tester.pump ();
579
+
580
+ // Makes sure we get the correct event that indicates the video is actually playing.
581
+ await videoPlaying.future;
582
+
583
+ String fullScreen =
584
+ await controller.evaluateJavascript ('isFullScreen();' );
585
+ expect (fullScreen, _webviewBool (true ));
586
+ });
543
587
});
544
588
545
589
group ('Audio playback policy' , () {
@@ -639,7 +683,7 @@ void main() {
639
683
640
684
isPaused = await controller.evaluateJavascript ('isPaused();' );
641
685
expect (isPaused, _webviewBool (true ));
642
- }, skip : true /* https://github.com/flutter/flutter/issues/72572 */ );
686
+ });
643
687
644
688
testWidgets ('Changes to initialMediaPlaybackPolocy are ignored' ,
645
689
(WidgetTester tester) async {
@@ -708,7 +752,7 @@ void main() {
708
752
709
753
isPaused = await controller.evaluateJavascript ('isPaused();' );
710
754
expect (isPaused, _webviewBool (false ));
711
- }, skip : true /* https://github.com/flutter/flutter/issues/72572 */ );
755
+ });
712
756
});
713
757
714
758
testWidgets ('getTitle' , (WidgetTester tester) async {
0 commit comments