@@ -340,122 +340,135 @@ Future<void> main() async {
340340 });
341341
342342 group ('Video playback policy' , () {
343- testWidgets ('Auto media playback' , (WidgetTester tester) async {
344- final String videoTestBase64 = await getTestVideoBase64 ();
345- Completer <WebViewController > controllerCompleter =
346- Completer <WebViewController >();
347- Completer <void > pageLoaded = Completer <void >();
343+ testWidgets (
344+ 'Auto media playback' ,
345+ (WidgetTester tester) async {
346+ final String videoTestBase64 = await getTestVideoBase64 ();
347+ Completer <WebViewController > controllerCompleter =
348+ Completer <WebViewController >();
349+ Completer <void > pageLoaded = Completer <void >();
348350
349- await tester.pumpWidget (
350- Directionality (
351- textDirection: TextDirection .ltr,
352- child: WebView (
353- key: GlobalKey (),
354- initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
355- onWebViewCreated: (WebViewController controller) {
356- controllerCompleter.complete (controller);
357- },
358- javascriptMode: JavascriptMode .unrestricted,
359- onPageFinished: (String url) {
360- pageLoaded.complete (null );
361- },
362- initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy .always_allow,
351+ await tester.pumpWidget (
352+ Directionality (
353+ textDirection: TextDirection .ltr,
354+ child: WebView (
355+ key: GlobalKey (),
356+ initialUrl:
357+ 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
358+ onWebViewCreated: (WebViewController controller) {
359+ controllerCompleter.complete (controller);
360+ },
361+ javascriptMode: JavascriptMode .unrestricted,
362+ onPageFinished: (String url) {
363+ pageLoaded.complete (null );
364+ },
365+ initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy .always_allow,
366+ ),
363367 ),
364- ),
365- );
366- WebViewController controller = await controllerCompleter.future;
367- await pageLoaded.future;
368+ );
369+ WebViewController controller = await controllerCompleter.future;
370+ await pageLoaded.future;
368371
369- String isPaused =
370- await controller.runJavascriptReturningResult ('isPaused();' );
371- expect (isPaused, _webviewBool (false ));
372+ String isPaused =
373+ await controller.runJavascriptReturningResult ('isPaused();' );
374+ expect (isPaused, _webviewBool (false ));
372375
373- controllerCompleter = Completer <WebViewController >();
374- pageLoaded = Completer <void >();
376+ controllerCompleter = Completer <WebViewController >();
377+ pageLoaded = Completer <void >();
375378
376- // We change the key to re-create a new webview as we change the initialMediaPlaybackPolicy
377- await tester.pumpWidget (
378- Directionality (
379- textDirection: TextDirection .ltr,
380- child: WebView (
381- key: GlobalKey (),
382- initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
383- onWebViewCreated: (WebViewController controller) {
384- controllerCompleter.complete (controller);
385- },
386- javascriptMode: JavascriptMode .unrestricted,
387- onPageFinished: (String url) {
388- pageLoaded.complete (null );
389- },
379+ // We change the key to re-create a new webview as we change the initialMediaPlaybackPolicy
380+ await tester.pumpWidget (
381+ Directionality (
382+ textDirection: TextDirection .ltr,
383+ child: WebView (
384+ key: GlobalKey (),
385+ initialUrl:
386+ 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
387+ onWebViewCreated: (WebViewController controller) {
388+ controllerCompleter.complete (controller);
389+ },
390+ javascriptMode: JavascriptMode .unrestricted,
391+ onPageFinished: (String url) {
392+ pageLoaded.complete (null );
393+ },
394+ ),
390395 ),
391- ),
392- );
396+ );
393397
394- controller = await controllerCompleter.future;
395- await pageLoaded.future;
398+ controller = await controllerCompleter.future;
399+ await pageLoaded.future;
396400
397- isPaused = await controller.runJavascriptReturningResult ('isPaused();' );
398- expect (isPaused, _webviewBool (true ));
399- });
401+ isPaused = await controller.runJavascriptReturningResult ('isPaused();' );
402+ expect (isPaused, _webviewBool (true ));
403+ },
404+ // Flakes on iOS: https://github.com/flutter/flutter/issues/164632
405+ skip: Platform .isIOS,
406+ );
400407
401- testWidgets ('Changes to initialMediaPlaybackPolicy are ignored' ,
402- (WidgetTester tester) async {
403- final String videoTestBase64 = await getTestVideoBase64 ();
404- final Completer <WebViewController > controllerCompleter =
405- Completer <WebViewController >();
406- Completer <void > pageLoaded = Completer <void >();
408+ testWidgets (
409+ 'Changes to initialMediaPlaybackPolicy are ignored' ,
410+ (WidgetTester tester) async {
411+ final String videoTestBase64 = await getTestVideoBase64 ();
412+ final Completer <WebViewController > controllerCompleter =
413+ Completer <WebViewController >();
414+ Completer <void > pageLoaded = Completer <void >();
407415
408- final GlobalKey key = GlobalKey ();
409- await tester.pumpWidget (
410- Directionality (
411- textDirection: TextDirection .ltr,
412- child: WebView (
413- key: key,
414- initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
415- onWebViewCreated: (WebViewController controller) {
416- controllerCompleter.complete (controller);
417- },
418- javascriptMode: JavascriptMode .unrestricted,
419- onPageFinished: (String url) {
420- pageLoaded.complete (null );
421- },
422- initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy .always_allow,
416+ final GlobalKey key = GlobalKey ();
417+ await tester.pumpWidget (
418+ Directionality (
419+ textDirection: TextDirection .ltr,
420+ child: WebView (
421+ key: key,
422+ initialUrl:
423+ 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
424+ onWebViewCreated: (WebViewController controller) {
425+ controllerCompleter.complete (controller);
426+ },
427+ javascriptMode: JavascriptMode .unrestricted,
428+ onPageFinished: (String url) {
429+ pageLoaded.complete (null );
430+ },
431+ initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy .always_allow,
432+ ),
423433 ),
424- ),
425- );
426- final WebViewController controller = await controllerCompleter.future;
427- await pageLoaded.future;
434+ );
435+ final WebViewController controller = await controllerCompleter.future;
436+ await pageLoaded.future;
428437
429- String isPaused =
430- await controller.runJavascriptReturningResult ('isPaused();' );
431- expect (isPaused, _webviewBool (false ));
438+ String isPaused =
439+ await controller.runJavascriptReturningResult ('isPaused();' );
440+ expect (isPaused, _webviewBool (false ));
432441
433- pageLoaded = Completer <void >();
442+ pageLoaded = Completer <void >();
434443
435- await tester.pumpWidget (
436- Directionality (
437- textDirection: TextDirection .ltr,
438- child: WebView (
439- key: key,
440- initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
441- onWebViewCreated: (WebViewController controller) {
442- controllerCompleter.complete (controller);
443- },
444- javascriptMode: JavascriptMode .unrestricted,
445- onPageFinished: (String url) {
446- pageLoaded.complete (null );
447- },
444+ await tester.pumpWidget (
445+ Directionality (
446+ textDirection: TextDirection .ltr,
447+ child: WebView (
448+ key: key,
449+ initialUrl:
450+ 'data:text/html;charset=utf-8;base64,$videoTestBase64 ' ,
451+ onWebViewCreated: (WebViewController controller) {
452+ controllerCompleter.complete (controller);
453+ },
454+ javascriptMode: JavascriptMode .unrestricted,
455+ onPageFinished: (String url) {
456+ pageLoaded.complete (null );
457+ },
458+ ),
448459 ),
449- ),
450- );
460+ );
451461
452- await controller.reload ();
462+ await controller.reload ();
453463
454- await pageLoaded.future;
464+ await pageLoaded.future;
455465
456- isPaused = await controller.runJavascriptReturningResult ('isPaused();' );
457- expect (isPaused, _webviewBool (false ));
458- });
466+ isPaused = await controller.runJavascriptReturningResult ('isPaused();' );
467+ expect (isPaused, _webviewBool (false ));
468+ },
469+ // Flakes on iOS: https://github.com/flutter/flutter/issues/164632
470+ skip: Platform .isIOS,
471+ );
459472
460473 testWidgets ('Video plays inline when allowsInlineMediaPlayback is true' ,
461474 (WidgetTester tester) async {
0 commit comments