Reland "Clean up some flutter_tools tests and roll dependencies" (#33225)
This relands flutter/flutter#33163 with a fix to the integration_ui test.
diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart
index bcc6e59..e15fb5c 100644
--- a/packages/flutter_tools/lib/src/devfs.dart
+++ b/packages/flutter_tools/lib/src/devfs.dart
@@ -7,7 +7,6 @@
import 'package:meta/meta.dart';
import 'asset.dart';
-import 'base/common.dart';
import 'base/context.dart';
import 'base/file_system.dart';
import 'base/io.dart';
@@ -268,7 +267,6 @@
final Uri httpAddress;
static const int kMaxInFlight = 6;
- static const int kMaxRetries = 3;
int _inFlight = 0;
Map<Uri, DevFSContent> _outstanding;
@@ -284,19 +282,17 @@
}
void _scheduleWrites() {
- while (_inFlight < kMaxInFlight) {
- if (_outstanding.isEmpty) {
- // Finished.
- break;
- }
+ while ((_inFlight < kMaxInFlight) && (!_completer.isCompleted) && _outstanding.isNotEmpty) {
final Uri deviceUri = _outstanding.keys.first;
final DevFSContent content = _outstanding.remove(deviceUri);
- _scheduleWrite(deviceUri, content);
- _inFlight++;
+ _startWrite(deviceUri, content);
+ _inFlight += 1;
}
+ if ((_inFlight == 0) && (!_completer.isCompleted) && _outstanding.isEmpty)
+ _completer.complete();
}
- Future<void> _scheduleWrite(
+ Future<void> _startWrite(
Uri deviceUri,
DevFSContent content, [
int retry = 0,
@@ -305,33 +301,19 @@
final HttpClientRequest request = await _client.putUrl(httpAddress);
request.headers.removeAll(HttpHeaders.acceptEncodingHeader);
request.headers.add('dev_fs_name', fsName);
- request.headers.add('dev_fs_uri_b64',
- base64.encode(utf8.encode(deviceUri.toString())));
+ request.headers.add('dev_fs_uri_b64', base64.encode(utf8.encode('$deviceUri')));
final Stream<List<int>> contents = content.contentsAsCompressedStream();
await request.addStream(contents);
final HttpClientResponse response = await request.close();
await response.drain<void>();
- } on SocketException catch (socketException, stackTrace) {
- // We have one completer and can get up to kMaxInFlight errors.
- if (!_completer.isCompleted)
- _completer.completeError(socketException, stackTrace);
- return;
- } catch (e) {
- if (retry < kMaxRetries) {
- printTrace('Retrying writing "$deviceUri" to DevFS due to error: $e');
- // Synchronization is handled by the _completer below.
- unawaited(_scheduleWrite(deviceUri, content, retry + 1));
- return;
- } else {
- printError('Error writing "$deviceUri" to DevFS: $e');
+ } catch (error, trace) {
+ if (!_completer.isCompleted) {
+ printTrace('Error writing "$deviceUri" to DevFS: $error');
+ _completer.completeError(error, trace);
}
}
- _inFlight--;
- if ((_outstanding.isEmpty) && (_inFlight == 0)) {
- _completer.complete();
- } else {
- _scheduleWrites();
- }
+ _inFlight -= 1;
+ _scheduleWrites();
}
}