From ef6e4e394d598862a24cf58c59291f8c5127aa51 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> Date: Wed, 28 Jun 2023 08:41:36 -0700 Subject: [PATCH] Add verbose debugging logging to the `shouldShowScreen` method (#5964) --- .../devtools_app/lib/src/shared/screen.dart | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/devtools_app/lib/src/shared/screen.dart b/packages/devtools_app/lib/src/shared/screen.dart index 8f61f92027c..bf720efbf25 100644 --- a/packages/devtools_app/lib/src/shared/screen.dart +++ b/packages/devtools_app/lib/src/shared/screen.dart @@ -6,12 +6,15 @@ import 'dart:math' as math; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:logging/logging.dart'; import 'globals.dart'; import 'primitives/listenable.dart'; import 'theme.dart'; import 'version.dart'; +final _log = Logger('screen.dart'); + /// Defines a page shown in the DevTools [TabBar]. @immutable abstract class Screen { @@ -207,33 +210,45 @@ abstract class Screen { /// Check whether a screen should be shown in the UI. bool shouldShowScreen(Screen screen) { + _log.finest('shouldShowScreen: ${screen.screenId}'); if (offlineController.offlineMode.value) { + _log.finest('for offline mode: returning ${screen.worksOffline}'); return screen.worksOffline; } // No sense in ever showing screens in non-offline mode unless the service // is available. This also avoids odd edge cases where we could show screens // while the ServiceManager is still initializing. - if (!serviceManager.isServiceAvailable || - !serviceManager.connectedApp!.connectedAppInitialized) return false; + final serviceReady = serviceManager.isServiceAvailable && + serviceManager.connectedApp!.connectedAppInitialized; + if (!serviceReady) { + _log.finest('service not ready: returning false'); + return false; + } if (screen.requiresLibrary != null) { if (serviceManager.isolateManager.mainIsolate.value == null || !serviceManager.libraryUriAvailableNow(screen.requiresLibrary)) { + _log.finest( + 'screen requires library ${screen.requiresLibrary}: returning false', + ); return false; } } if (screen.requiresDartVm) { if (serviceManager.connectedApp!.isRunningOnDartVM != true) { + _log.finest('screen requires Dart VM: returning false'); return false; } } if (screen.requiresDebugBuild) { if (serviceManager.connectedApp!.isProfileBuildNow == true) { + _log.finest('screen requires debug build: returning false'); return false; } } if (screen.requiresVmDeveloperMode) { if (!preferences.vmDeveloperModeEnabled.value) { + _log.finest('screen requires vm developer mode: returning false'); return false; } } @@ -242,9 +257,11 @@ bool shouldShowScreen(Screen screen) { !screen.shouldShowForFlutterVersion!( serviceManager.connectedApp!.flutterVersionNow, )) { + _log.finest('screen has flutter version restraints: returning false'); return false; } } + _log.finest('${screen.screenId} screen supported: returning true'); return true; }