@@ -61,8 +61,6 @@ void main() {
6161 expect (currentUrl, 'https://www.google.com/' );
6262 });
6363
64- // enable this once https://github.com/flutter/flutter/issues/31510
65- // is resolved.
6664 testWidgets ('loadUrl with headers' , (WidgetTester tester) async {
6765 final Completer <WebViewController > controllerCompleter =
6866 Completer <WebViewController >();
@@ -343,6 +341,11 @@ void main() {
343341 function play() {
344342 var video = document.getElementById("video");
345343 video.play();
344+ video.addEventListener('timeupdate', videoTimeUpdateHandler, false);
345+ }
346+ function videoTimeUpdateHandler(e) {
347+ var video = document.getElementById("video");
348+ VideoTestTime.postMessage(video.currentTime);
346349 }
347350 function isPaused() {
348351 var video = document.getElementById("video");
@@ -420,7 +423,7 @@ void main() {
420423
421424 isPaused = await controller.evaluateJavascript ('isPaused();' );
422425 expect (isPaused, _webviewBool (true ));
423- }, skip : true /* https://github.com/flutter/flutter/issues/72572 */ );
426+ });
424427
425428 testWidgets ('Changes to initialMediaPlaybackPolicy are ignored' ,
426429 (WidgetTester tester) async {
@@ -479,24 +482,36 @@ void main() {
479482
480483 isPaused = await controller.evaluateJavascript ('isPaused();' );
481484 expect (isPaused, _webviewBool (false ));
482- }, skip : true /* https://github.com/flutter/flutter/issues/72572 */ );
485+ });
483486
484487 testWidgets ('Video plays inline when allowsInlineMediaPlayback is true' ,
485488 (WidgetTester tester) async {
486489 Completer <WebViewController > controllerCompleter =
487490 Completer <WebViewController >();
488491 Completer <void > pageLoaded = Completer <void >();
492+ Completer <void > videoPlaying = Completer <void >();
489493
490494 await tester.pumpWidget (
491495 Directionality (
492496 textDirection: TextDirection .ltr,
493497 child: WebView (
494- key: GlobalKey (),
495498 initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
496499 onWebViewCreated: (WebViewController controller) {
497500 controllerCompleter.complete (controller);
498501 },
499502 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+ },
500515 onPageFinished: (String url) {
501516 pageLoaded.complete (null );
502517 },
@@ -508,23 +523,46 @@ void main() {
508523 WebViewController controller = await controllerCompleter.future;
509524 await pageLoaded.future;
510525
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 =
512533 await controller.evaluateJavascript ('isFullScreen();' );
513- expect (isFullScreen, _webviewBool (false ));
534+ expect (fullScreen, _webviewBool (false ));
535+ });
514536
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 >();
517544
518545 await tester.pumpWidget (
519546 Directionality (
520547 textDirection: TextDirection .ltr,
521548 child: WebView (
522- key: GlobalKey (),
523549 initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
524550 onWebViewCreated: (WebViewController controller) {
525551 controllerCompleter.complete (controller);
526552 },
527553 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+ },
528566 onPageFinished: (String url) {
529567 pageLoaded.complete (null );
530568 },
@@ -533,13 +571,19 @@ void main() {
533571 ),
534572 ),
535573 );
536-
537- controller = await controllerCompleter.future;
574+ WebViewController controller = await controllerCompleter.future;
538575 await pageLoaded.future;
539576
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+ });
543587 });
544588
545589 group ('Audio playback policy' , () {
@@ -639,7 +683,7 @@ void main() {
639683
640684 isPaused = await controller.evaluateJavascript ('isPaused();' );
641685 expect (isPaused, _webviewBool (true ));
642- }, skip : true /* https://github.com/flutter/flutter/issues/72572 */ );
686+ });
643687
644688 testWidgets ('Changes to initialMediaPlaybackPolocy are ignored' ,
645689 (WidgetTester tester) async {
@@ -708,7 +752,7 @@ void main() {
708752
709753 isPaused = await controller.evaluateJavascript ('isPaused();' );
710754 expect (isPaused, _webviewBool (false ));
711- }, skip : true /* https://github.com/flutter/flutter/issues/72572 */ );
755+ });
712756 });
713757
714758 testWidgets ('getTitle' , (WidgetTester tester) async {
0 commit comments