Unverified Commit 0b68068d authored by Alexander Aprelev's avatar Alexander Aprelev Committed by GitHub

Revert "Run reload asynchronously so that multiple devices can reload in...

Revert "Run reload asynchronously so that multiple devices can reload in parallel. (#22693)" (#23598)

This reverts commit 709f54f4 as it seems to have broken two tests: flutter_gallery__back_button_memory, named_isolates_test.
parent c54cf048
...@@ -79,15 +79,11 @@ class FlutterDevice { ...@@ -79,15 +79,11 @@ class FlutterDevice {
vmServices = localVmServices; vmServices = localVmServices;
} }
Future<void> refreshViews() { Future<void> refreshViews() async {
if (vmServices == null || vmServices.isEmpty) if (vmServices == null || vmServices.isEmpty)
return Future<void>.value(null); return;
final List<Future<void>> futures = <Future<void>>[];
for (VMService service in vmServices) for (VMService service in vmServices)
futures.add(service.vm.refreshViews()); await service.vm.refreshViews();
final Completer<void> completer = Completer<void>();
Future.wait(futures).whenComplete(() => completer.complete(null)); // ignore: unawaited_futures
return completer.future;
} }
List<FlutterView> get views { List<FlutterView> get views {
......
This diff is collapsed.
...@@ -949,19 +949,15 @@ class VM extends ServiceObjectOwner { ...@@ -949,19 +949,15 @@ class VM extends ServiceObjectOwner {
return invokeRpcRaw('_getVMTimeline', timeout: kLongRequestTimeout); return invokeRpcRaw('_getVMTimeline', timeout: kLongRequestTimeout);
} }
Future<void> refreshViews() { Future<void> refreshViews() async {
if (!isFlutterEngine) if (!isFlutterEngine)
return Future<void>.value(null); return;
_viewCache.clear(); _viewCache.clear();
final Completer<void> completer = Completer<void>();
final List<Future<ServiceObject>> futures = <Future<ServiceObject>>[];
for (Isolate isolate in isolates.toList()) { for (Isolate isolate in isolates.toList()) {
futures.add(vmService.vm.invokeRpc<ServiceObject>('_flutter.listViews', await vmService.vm.invokeRpc<ServiceObject>('_flutter.listViews',
timeout: kLongRequestTimeout, timeout: kLongRequestTimeout,
params: <String, dynamic> {'isolateId': isolate.id})); params: <String, dynamic> {'isolateId': isolate.id});
} }
Future.wait(futures).whenComplete(() => completer.complete(null)); // ignore: unawaited_futures
return completer.future;
} }
Iterable<FlutterView> get views => _viewCache.values; Iterable<FlutterView> get views => _viewCache.values;
...@@ -1230,15 +1226,15 @@ class Isolate extends ServiceObjectOwner { ...@@ -1230,15 +1226,15 @@ class Isolate extends ServiceObjectOwner {
Duration timeout, Duration timeout,
bool timeoutFatal = true, bool timeoutFatal = true,
} }
) { ) async {
return invokeRpcRaw(method, params: params, timeout: timeout, try {
timeoutFatal: timeoutFatal).catchError((dynamic error) { return await invokeRpcRaw(method, params: params, timeout: timeout, timeoutFatal: timeoutFatal);
if (error is rpc.RpcException) { } on rpc.RpcException catch (e) {
// If an application is not using the framework // If an application is not using the framework
if (error.code == rpc_error_code.METHOD_NOT_FOUND) if (e.code == rpc_error_code.METHOD_NOT_FOUND)
return null; return null;
throw error; rethrow;
}}); }
} }
// Debug dump extension methods. // Debug dump extension methods.
...@@ -1292,20 +1288,20 @@ class Isolate extends ServiceObjectOwner { ...@@ -1292,20 +1288,20 @@ class Isolate extends ServiceObjectOwner {
} }
// Reload related extension methods. // Reload related extension methods.
Future<Map<String, dynamic>> flutterReassemble() { Future<Map<String, dynamic>> flutterReassemble() async {
return invokeFlutterExtensionRpcRaw( return await invokeFlutterExtensionRpcRaw(
'ext.flutter.reassemble', 'ext.flutter.reassemble',
timeout: kShortRequestTimeout, timeout: kShortRequestTimeout,
timeoutFatal: true, timeoutFatal: true,
); );
} }
Future<Map<String, dynamic>> uiWindowScheduleFrame() { Future<Map<String, dynamic>> uiWindowScheduleFrame() async {
return invokeFlutterExtensionRpcRaw('ext.ui.window.scheduleFrame'); return await invokeFlutterExtensionRpcRaw('ext.ui.window.scheduleFrame');
} }
Future<Map<String, dynamic>> flutterEvictAsset(String assetPath) { Future<Map<String, dynamic>> flutterEvictAsset(String assetPath) async {
return invokeFlutterExtensionRpcRaw('ext.flutter.evict', return await invokeFlutterExtensionRpcRaw('ext.flutter.evict',
params: <String, dynamic>{ params: <String, dynamic>{
'value': assetPath, 'value': assetPath,
} }
...@@ -1313,8 +1309,8 @@ class Isolate extends ServiceObjectOwner { ...@@ -1313,8 +1309,8 @@ class Isolate extends ServiceObjectOwner {
} }
// Application control extension methods. // Application control extension methods.
Future<Map<String, dynamic>> flutterExit() { Future<Map<String, dynamic>> flutterExit() async {
return invokeFlutterExtensionRpcRaw( return await invokeFlutterExtensionRpcRaw(
'ext.flutter.exit', 'ext.flutter.exit',
timeout: const Duration(seconds: 2), timeout: const Duration(seconds: 2),
timeoutFatal: false, timeoutFatal: false,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment