From c42becfedbb672f86c01084ed42b9f9f57ef9bf9 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Tue, 25 Feb 2020 15:35:20 -0800 Subject: [PATCH 1/2] Don't check for debugDidSendFirstFrameEvent when adding service extensions for Dart VM apps. --- .../devtools_app/lib/src/service_manager.dart | 74 +++++++++++-------- 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/packages/devtools_app/lib/src/service_manager.dart b/packages/devtools_app/lib/src/service_manager.dart index f0a515b784c..9ee6a33bd32 100644 --- a/packages/devtools_app/lib/src/service_manager.dart +++ b/packages/devtools_app/lib/src/service_manager.dart @@ -128,6 +128,7 @@ class ServiceConnectionManager { serviceAvailable.complete(); connectedApp = ConnectedApp(); + serviceExtensionManager.connectedApp = connectedApp; unawaited(onClosed.then((_) => vmServiceClosed())); @@ -205,6 +206,7 @@ class ServiceConnectionManager { vm = null; sdkVersion = null; connectedApp = null; + serviceExtensionManager.connectedApp = null; _stateController.add(false); _connectionClosedController.add(null); @@ -446,6 +448,8 @@ class ServiceExtensionManager { var extensionStatesUpdated = Completer(); + ConnectedApp connectedApp; + Future _handleExtensionEvent(Event event) async { switch (event.extensionKind) { case 'Flutter.FirstFrame': @@ -513,42 +517,48 @@ class ServiceExtensionManager { } final Isolate isolate = await _service.getIsolate(isolateRef.id); if (isolate.extensionRPCs != null) { - for (String extension in isolate.extensionRPCs) { - await _maybeAddServiceExtension(extension); - } + if (await connectedApp.isAnyFlutterApp) { + for (String extension in isolate.extensionRPCs) { + await _maybeAddServiceExtension(extension); + } - if (_pendingServiceExtensions.isEmpty) { - extensionStatesUpdated.complete(); - } + if (_pendingServiceExtensions.isEmpty) { + extensionStatesUpdated.complete(); + } - if (!_firstFrameEventReceived) { - bool didSendFirstFrameEvent = false; - if (isServiceExtensionAvailable(extensions.didSendFirstFrameEvent)) { - final value = await _service.callServiceExtension( - extensions.didSendFirstFrameEvent, - isolateId: _isolateManager.selectedIsolate.id, - ); - didSendFirstFrameEvent = - value != null && value.json['enabled'] == 'true'; - } else { - final EvalOnDartLibrary flutterLibrary = EvalOnDartLibrary( - [ - 'package:flutter/src/widgets/binding.dart', - 'package:flutter_web/src/widgets/binding.dart', - ], - _service, - ); - final InstanceRef value = await flutterLibrary.eval( - 'WidgetsBinding.instance.debugDidSendFirstFrameEvent', - isAlive: null, - ); + if (!_firstFrameEventReceived) { + bool didSendFirstFrameEvent = false; + if (isServiceExtensionAvailable(extensions.didSendFirstFrameEvent)) { + final value = await _service.callServiceExtension( + extensions.didSendFirstFrameEvent, + isolateId: _isolateManager.selectedIsolate.id, + ); + didSendFirstFrameEvent = + value != null && value.json['enabled'] == 'true'; + } else { + final EvalOnDartLibrary flutterLibrary = EvalOnDartLibrary( + [ + 'package:flutter/src/widgets/binding.dart', + 'package:flutter_web/src/widgets/binding.dart', + ], + _service, + ); + final InstanceRef value = await flutterLibrary.eval( + 'WidgetsBinding.instance.debugDidSendFirstFrameEvent', + isAlive: null, + ); + + didSendFirstFrameEvent = + value != null && value.valueAsString == 'true'; + } - didSendFirstFrameEvent = - value != null && value.valueAsString == 'true'; + if (didSendFirstFrameEvent) { + await _onFrameEventReceived(); + } } - - if (didSendFirstFrameEvent) { - await _onFrameEventReceived(); + } else { + for (String extension in isolate.extensionRPCs) { + await _addServiceExtension(extension); } } } From b0dcf16c49c86ff33428b6c9d0f2d5f76f15adb5 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Wed, 26 Feb 2020 08:01:36 -0800 Subject: [PATCH 2/2] review comments --- packages/devtools_app/lib/src/service_manager.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/devtools_app/lib/src/service_manager.dart b/packages/devtools_app/lib/src/service_manager.dart index 9ee6a33bd32..8519cad6a23 100644 --- a/packages/devtools_app/lib/src/service_manager.dart +++ b/packages/devtools_app/lib/src/service_manager.dart @@ -533,13 +533,11 @@ class ServiceExtensionManager { extensions.didSendFirstFrameEvent, isolateId: _isolateManager.selectedIsolate.id, ); - didSendFirstFrameEvent = - value != null && value.json['enabled'] == 'true'; + didSendFirstFrameEvent = value?.json['enabled'] == 'true'; } else { final EvalOnDartLibrary flutterLibrary = EvalOnDartLibrary( [ 'package:flutter/src/widgets/binding.dart', - 'package:flutter_web/src/widgets/binding.dart', ], _service, );