diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart index 39b9766be1..72c036928e 100644 --- a/packages/flutter_tools/lib/src/devfs.dart +++ b/packages/flutter_tools/lib/src/devfs.dart @@ -16,8 +16,6 @@ import 'dart/package_map.dart'; import 'globals.dart'; import 'vmservice.dart'; -typedef void DevFSProgressReporter(int progress, int max); - class DevFSConfig { /// Should DevFS assume that symlink targets are stable? bool cacheSymlinks = false; @@ -240,23 +238,18 @@ class _DevFSHttpWriter { Map _outstanding; Completer _completer; HttpClient _client; - int _done; - int _max; - Future write(Map entries, - {DevFSProgressReporter progressReporter}) async { + Future write(Map entries) async { _client = new HttpClient(); _client.maxConnectionsPerHost = kMaxInFlight; _completer = new Completer(); _outstanding = new Map.from(entries); - _done = 0; - _max = _outstanding.length; - _scheduleWrites(progressReporter); + _scheduleWrites(); await _completer.future; _client.close(); } - void _scheduleWrites(DevFSProgressReporter progressReporter) { + void _scheduleWrites() { while (_inFlight < kMaxInFlight) { if (_outstanding.isEmpty) { // Finished. @@ -264,15 +257,14 @@ class _DevFSHttpWriter { } final Uri deviceUri = _outstanding.keys.first; final DevFSContent content = _outstanding.remove(deviceUri); - _scheduleWrite(deviceUri, content, progressReporter); + _scheduleWrite(deviceUri, content); _inFlight++; } } Future _scheduleWrite( Uri deviceUri, - DevFSContent content, - DevFSProgressReporter progressReporter, [ + DevFSContent content, [ int retry = 0, ]) async { try { @@ -293,21 +285,17 @@ class _DevFSHttpWriter { } catch (e) { if (retry < kMaxRetries) { printTrace('Retrying writing "$deviceUri" to DevFS due to error: $e'); - _scheduleWrite(deviceUri, content, progressReporter, retry + 1); + _scheduleWrite(deviceUri, content, retry + 1); return; } else { printError('Error writing "$deviceUri" to DevFS: $e'); } } - if (progressReporter != null) { - _done++; - progressReporter(_done, _max); - } _inFlight--; if ((_outstanding.isEmpty) && (_inFlight == 0)) { _completer.complete(null); } else { - _scheduleWrites(progressReporter); + _scheduleWrites(); } } } @@ -372,10 +360,11 @@ class DevFS { } /// Update files on the device and return the number of bytes sync'd - Future update({ DevFSProgressReporter progressReporter, - AssetBundle bundle, - bool bundleDirty: false, - Set fileFilter}) async { + Future update({ + AssetBundle bundle, + bool bundleDirty: false, + Set fileFilter, + }) async { // Mark all entries as possibly deleted. for (DevFSContent content in _entries.values) { content._exists = false; @@ -440,8 +429,7 @@ class DevFS { printTrace('Updating files'); if (_httpWriter != null) { try { - await _httpWriter.write(dirtyEntries, - progressReporter: progressReporter); + await _httpWriter.write(dirtyEntries); } on SocketException catch (socketException, stackTrace) { printTrace("DevFS sync failed. Lost connection to device: $socketException"); throw new DevFSException('Lost connection to device.', socketException, stackTrace); @@ -457,17 +445,6 @@ class DevFS { if (operation != null) _pendingOperations.add(operation); }); - if (progressReporter != null) { - final int max = _pendingOperations.length; - int complete = 0; - _pendingOperations.forEach((Future f) => f.whenComplete(() { - // TODO(ianh): If one of the pending operations fail, we'll keep - // calling progressReporter long after update() has completed its - // future, assuming that doesn't crash the app. - complete += 1; - progressReporter(complete, max); - })); - } await Future.wait(_pendingOperations, eagerError: true); _pendingOperations.clear(); } diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index 291398da9e..b4c4ba49d3 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart @@ -314,7 +314,6 @@ class FlutterDevice { } Future updateDevFS({ - DevFSProgressReporter progressReporter, AssetBundle bundle, bool bundleDirty: false, Set fileFilter @@ -326,7 +325,6 @@ class FlutterDevice { int bytes = 0; try { bytes = await devFS.update( - progressReporter: progressReporter, bundle: bundle, bundleDirty: bundleDirty, fileFilter: fileFilter diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index 150355f6ee..e7eeb335ec 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart @@ -12,7 +12,6 @@ import 'base/logger.dart'; import 'base/utils.dart'; import 'build_info.dart'; import 'dart/dependencies.dart'; -import 'devfs.dart'; import 'device.dart'; import 'globals.dart'; import 'resident_runner.dart'; @@ -223,7 +222,7 @@ class HotRunner extends ResidentRunner { return devFSUris; } - Future _updateDevFS({ DevFSProgressReporter progressReporter }) async { + Future _updateDevFS() async { if (!_refreshDartDependencies()) { // Did not update DevFS because of a Dart source error. return false; @@ -238,7 +237,6 @@ class HotRunner extends ResidentRunner { for (FlutterDevice device in flutterDevices) { final bool result = await device.updateDevFS( - progressReporter: progressReporter, bundle: assetBundle, bundleDirty: rebuildBundle, fileFilter: _dartDependencies,