@@ -62,6 +62,7 @@ void main() {
62
62
testWidgets ('loadUrl with headers' , (WidgetTester tester) async {
63
63
final Completer <WebViewController > controllerCompleter =
64
64
Completer <WebViewController >();
65
+ final StreamController <String > pageStarts = StreamController <String >();
65
66
final StreamController <String > pageLoads = StreamController <String >();
66
67
await tester.pumpWidget (
67
68
Directionality (
@@ -73,6 +74,9 @@ void main() {
73
74
controllerCompleter.complete (controller);
74
75
},
75
76
javascriptMode: JavascriptMode .unrestricted,
77
+ onPageStarted: (String url) {
78
+ pageStarts.add (url);
79
+ },
76
80
onPageFinished: (String url) {
77
81
pageLoads.add (url);
78
82
},
@@ -88,7 +92,9 @@ void main() {
88
92
final String currentUrl = await controller.currentUrl ();
89
93
expect (currentUrl, 'https://flutter-header-echo.herokuapp.com/' );
90
94
95
+ await pageStarts.stream.firstWhere ((String url) => url == currentUrl);
91
96
await pageLoads.stream.firstWhere ((String url) => url == currentUrl);
97
+
92
98
final String content = await controller
93
99
.evaluateJavascript ('document.documentElement.innerText' );
94
100
expect (content.contains ('flutter_test_header' ), isTrue);
@@ -97,6 +103,7 @@ void main() {
97
103
testWidgets ('JavaScriptChannel' , (WidgetTester tester) async {
98
104
final Completer <WebViewController > controllerCompleter =
99
105
Completer <WebViewController >();
106
+ final Completer <void > pageStarted = Completer <void >();
100
107
final Completer <void > pageLoaded = Completer <void >();
101
108
final List <String > messagesReceived = < String > [];
102
109
await tester.pumpWidget (
@@ -121,13 +128,17 @@ void main() {
121
128
},
122
129
),
123
130
].toSet (),
131
+ onPageStarted: (String url) {
132
+ pageStarted.complete (null );
133
+ },
124
134
onPageFinished: (String url) {
125
135
pageLoaded.complete (null );
126
136
},
127
137
),
128
138
),
129
139
);
130
140
final WebViewController controller = await controllerCompleter.future;
141
+ await pageStarted.future;
131
142
await pageLoaded.future;
132
143
133
144
expect (messagesReceived, isEmpty);
@@ -155,6 +166,7 @@ void main() {
155
166
final String resizeTestBase64 =
156
167
base64Encode (const Utf8Encoder ().convert (resizeTest));
157
168
final Completer <void > resizeCompleter = Completer <void >();
169
+ final Completer <void > pageStarted = Completer <void >();
158
170
final Completer <void > pageLoaded = Completer <void >();
159
171
final Completer <WebViewController > controllerCompleter =
160
172
Completer <WebViewController >();
@@ -176,6 +188,9 @@ void main() {
176
188
},
177
189
),
178
190
].toSet (),
191
+ onPageStarted: (String url) {
192
+ pageStarted.complete (null );
193
+ },
179
194
onPageFinished: (String url) {
180
195
pageLoaded.complete (null );
181
196
},
@@ -198,6 +213,7 @@ void main() {
198
213
);
199
214
200
215
await controllerCompleter.future;
216
+ await pageStarted.future;
201
217
await pageLoaded.future;
202
218
203
219
expect (resizeCompleter.isCompleted, false );
@@ -343,6 +359,7 @@ void main() {
343
359
testWidgets ('Auto media playback' , (WidgetTester tester) async {
344
360
Completer <WebViewController > controllerCompleter =
345
361
Completer <WebViewController >();
362
+ Completer <void > pageStarted = Completer <void >();
346
363
Completer <void > pageLoaded = Completer <void >();
347
364
348
365
await tester.pumpWidget (
@@ -355,6 +372,9 @@ void main() {
355
372
controllerCompleter.complete (controller);
356
373
},
357
374
javascriptMode: JavascriptMode .unrestricted,
375
+ onPageStarted: (String url) {
376
+ pageStarted.complete (null );
377
+ },
358
378
onPageFinished: (String url) {
359
379
pageLoaded.complete (null );
360
380
},
@@ -363,12 +383,14 @@ void main() {
363
383
),
364
384
);
365
385
WebViewController controller = await controllerCompleter.future;
386
+ await pageStarted.future;
366
387
await pageLoaded.future;
367
388
368
389
String isPaused = await controller.evaluateJavascript ('isPaused();' );
369
390
expect (isPaused, _webviewBool (false ));
370
391
371
392
controllerCompleter = Completer <WebViewController >();
393
+ pageStarted = Completer <void >();
372
394
pageLoaded = Completer <void >();
373
395
374
396
// We change the key to re-create a new webview as we change the initialMediaPlaybackPolicy
@@ -382,6 +404,9 @@ void main() {
382
404
controllerCompleter.complete (controller);
383
405
},
384
406
javascriptMode: JavascriptMode .unrestricted,
407
+ onPageStarted: (String url) {
408
+ pageStarted.complete (null );
409
+ },
385
410
onPageFinished: (String url) {
386
411
pageLoaded.complete (null );
387
412
},
@@ -392,6 +417,7 @@ void main() {
392
417
);
393
418
394
419
controller = await controllerCompleter.future;
420
+ await pageStarted.future;
395
421
await pageLoaded.future;
396
422
397
423
isPaused = await controller.evaluateJavascript ('isPaused();' );
@@ -402,6 +428,7 @@ void main() {
402
428
(WidgetTester tester) async {
403
429
final Completer <WebViewController > controllerCompleter =
404
430
Completer <WebViewController >();
431
+ Completer <void > pageStarted = Completer <void >();
405
432
Completer <void > pageLoaded = Completer <void >();
406
433
407
434
final GlobalKey key = GlobalKey ();
@@ -415,6 +442,9 @@ void main() {
415
442
controllerCompleter.complete (controller);
416
443
},
417
444
javascriptMode: JavascriptMode .unrestricted,
445
+ onPageStarted: (String url) {
446
+ pageStarted.complete (null );
447
+ },
418
448
onPageFinished: (String url) {
419
449
pageLoaded.complete (null );
420
450
},
@@ -423,11 +453,13 @@ void main() {
423
453
),
424
454
);
425
455
final WebViewController controller = await controllerCompleter.future;
456
+ await pageStarted.future;
426
457
await pageLoaded.future;
427
458
428
459
String isPaused = await controller.evaluateJavascript ('isPaused();' );
429
460
expect (isPaused, _webviewBool (false ));
430
461
462
+ pageStarted = Completer <void >();
431
463
pageLoaded = Completer <void >();
432
464
433
465
await tester.pumpWidget (
@@ -440,6 +472,9 @@ void main() {
440
472
controllerCompleter.complete (controller);
441
473
},
442
474
javascriptMode: JavascriptMode .unrestricted,
475
+ onPageStarted: (String url) {
476
+ pageStarted.complete (null );
477
+ },
443
478
onPageFinished: (String url) {
444
479
pageLoaded.complete (null );
445
480
},
@@ -451,6 +486,7 @@ void main() {
451
486
452
487
await controller.reload ();
453
488
489
+ await pageStarted.future;
454
490
await pageLoaded.future;
455
491
456
492
isPaused = await controller.evaluateJavascript ('isPaused();' );
@@ -469,6 +505,7 @@ void main() {
469
505
''' ;
470
506
final String getTitleTestBase64 =
471
507
base64Encode (const Utf8Encoder ().convert (getTitleTest));
508
+ final Completer <void > pageStarted = Completer <void >();
472
509
final Completer <void > pageLoaded = Completer <void >();
473
510
final Completer <WebViewController > controllerCompleter =
474
511
Completer <WebViewController >();
@@ -481,6 +518,9 @@ void main() {
481
518
onWebViewCreated: (WebViewController controller) {
482
519
controllerCompleter.complete (controller);
483
520
},
521
+ onPageStarted: (String url) {
522
+ pageStarted.complete (null );
523
+ },
484
524
onPageFinished: (String url) {
485
525
pageLoaded.complete (null );
486
526
},
@@ -489,6 +529,7 @@ void main() {
489
529
);
490
530
491
531
final WebViewController controller = await controllerCompleter.future;
532
+ await pageStarted.future;
492
533
await pageLoaded.future;
493
534
494
535
final String title = await controller.getTitle ();
0 commit comments