From 44fb121faca3b86b9f38c074f181c7ce8709a612 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Thu, 16 Apr 2026 13:05:49 -0700 Subject: [PATCH 1/4] Initial deletion of legacy inspector --- .../test/live_connection/eval_utils.dart | 2 +- packages/devtools_app/lib/devtools_app.dart | 8 +- .../inspector/inspector_breadcrumbs.dart | 201 --- .../inspector/inspector_controller.dart | 950 ------------ .../inspector/inspector_data_models.dart | 887 ----------- .../inspector/inspector_screen_body.dart | 458 ------ .../inspector_screen_details_tab.dart | 143 -- .../inspector/inspector_tree_controller.dart | 1331 ----------------- .../inspector/layout_explorer/box/box.dart | 446 ------ .../inspector/layout_explorer/flex/flex.dart | 777 ---------- .../inspector/layout_explorer/flex/utils.dart | 198 --- .../layout_explorer/layout_explorer.dart | 71 - .../inspector/layout_explorer/ui/arrow.dart | 280 ---- .../layout_explorer/ui/dimension.dart | 37 - .../layout_explorer/ui/free_space.dart | 156 -- .../ui/layout_explorer_widget.dart | 296 ---- .../ui/overflow_indicator_painter.dart | 63 - .../inspector/layout_explorer/ui/theme.dart | 139 -- .../inspector/layout_explorer/ui/utils.dart | 439 ------ .../ui/widget_constraints.dart | 177 --- .../layout_explorer/ui/widgets_theme.dart | 250 ---- .../inspector_shared/inspector_screen.dart | 61 +- .../inspector_screen_controller.dart | 41 +- .../inspector_settings_dialog.dart | 192 +-- .../inspector_v2/inspector_data_models.dart | 2 +- .../layout_explorer/ui/utils.dart | 2 +- .../screens/logging/logging_controller.dart | 2 +- .../lib/src/shared/analytics/constants.dart | 4 +- .../lib/src/shared/analytics/metrics.dart | 8 +- .../shared/console/eval/inspector_tree.dart | 301 ---- .../shared/console/widgets/description.dart | 4 +- .../preferences/_inspector_preferences.dart | 80 - .../devtools_app/lib/src/shared/ui/icons.dart | 2 +- .../macos/Runner.xcodeproj/project.pbxproj | 86 ++ .../screens/inspector/diagnostics_test.dart | 301 ---- .../inspector_error_navigator_test.dart | 131 -- .../inspector/inspector_integration_test.dart | 483 ------ .../inspector/inspector_screen_test.dart | 374 ----- .../inspector/inspector_tree_test.dart | 175 --- .../layout_explorer/flex/arrow_test.dart | 109 -- .../layout_explorer/flex/flex_test.dart | 292 ---- .../inspector_data_models_test.dart | 442 ------ ...ayout_explorer_serialization_delegate.dart | 64 - .../layout_explorer_test_utils.dart | 28 - .../layout_explorer/widget_theme_test.dart | 22 - .../inspector/utils/inspector_tree.dart | 59 - .../inspector_error_navigator_test.dart | 1 + .../inspector_integration_test.dart | 98 +- .../inspector_v2/inspector_screen_test.dart | 14 +- .../inspector_v2/inspector_tree_test.dart | 10 +- .../layout_explorer/flex/flex_test.dart | 4 +- .../inspector_v2/utils/inspector_tree.dart | 5 +- .../devtools_test/lib/src/mocks/mocks.dart | 21 +- 53 files changed, 176 insertions(+), 10551 deletions(-) delete mode 100644 packages/devtools_app/lib/src/screens/inspector/inspector_breadcrumbs.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/inspector_controller.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/inspector_data_models.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/inspector_screen_body.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/inspector_screen_details_tab.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/inspector_tree_controller.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/box/box.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/flex.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/utils.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/layout_explorer.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/arrow.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/dimension.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/free_space.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/layout_explorer_widget.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/overflow_indicator_painter.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/theme.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/utils.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widget_constraints.dart delete mode 100644 packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widgets_theme.dart delete mode 100644 packages/devtools_app/lib/src/shared/console/eval/inspector_tree.dart delete mode 100644 packages/devtools_app/test/screens/inspector/diagnostics_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/inspector_error_navigator_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/inspector_integration_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/inspector_screen_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/inspector_tree_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/layout_explorer/flex/arrow_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/layout_explorer/flex/flex_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/layout_explorer/inspector_data_models_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_serialization_delegate.dart delete mode 100644 packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_test_utils.dart delete mode 100644 packages/devtools_app/test/screens/inspector/layout_explorer/widget_theme_test.dart delete mode 100644 packages/devtools_app/test/screens/inspector/utils/inspector_tree.dart diff --git a/packages/devtools_app/integration_test/test/live_connection/eval_utils.dart b/packages/devtools_app/integration_test/test/live_connection/eval_utils.dart index 83043cdb869..7e554e86bea 100644 --- a/packages/devtools_app/integration_test/test/live_connection/eval_utils.dart +++ b/packages/devtools_app/integration_test/test/live_connection/eval_utils.dart @@ -73,7 +73,7 @@ class EvalTester { Future selectWidgetTreeNode(Finder finder) async { await tapAndPump( find.descendant( - of: find.byKey(InspectorScreenBodyState.summaryTreeKey), + of: find.byKey(InspectorScreenBodyState.inspectorTreeKey), matching: finder, ), ); diff --git a/packages/devtools_app/lib/devtools_app.dart b/packages/devtools_app/lib/devtools_app.dart index 5917216e754..c219f4721c9 100644 --- a/packages/devtools_app/lib/devtools_app.dart +++ b/packages/devtools_app/lib/devtools_app.dart @@ -24,11 +24,11 @@ export 'src/screens/deep_link_validation/deep_links_controller.dart'; export 'src/screens/deep_link_validation/deep_links_screen.dart'; export 'src/screens/dtd/dtd_tools_controller.dart'; export 'src/screens/dtd/dtd_tools_screen.dart'; -export 'src/screens/inspector/inspector_controller.dart'; -export 'src/screens/inspector/inspector_screen_body.dart'; -export 'src/screens/inspector/inspector_tree_controller.dart'; export 'src/screens/inspector_shared/inspector_screen.dart'; export 'src/screens/inspector_shared/inspector_screen_controller.dart'; +export 'src/screens/inspector_v2/inspector_controller.dart'; +export 'src/screens/inspector_v2/inspector_screen_body.dart'; +export 'src/screens/inspector_v2/inspector_tree_controller.dart'; export 'src/screens/logging/log_details_controller.dart'; export 'src/screens/logging/logging_controller.dart'; export 'src/screens/logging/logging_screen.dart'; @@ -76,7 +76,7 @@ export 'src/shared/analytics/analytics_controller.dart'; export 'src/shared/charts/treemap.dart'; export 'src/shared/console/console_service.dart'; export 'src/shared/console/eval/eval_service.dart'; -export 'src/shared/console/eval/inspector_tree.dart'; +export 'src/shared/console/eval/inspector_tree_v2.dart'; export 'src/shared/console/primitives/simple_items.dart'; export 'src/shared/console/widgets/description.dart'; export 'src/shared/diagnostics/diagnostics_node.dart'; diff --git a/packages/devtools_app/lib/src/screens/inspector/inspector_breadcrumbs.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_breadcrumbs.dart deleted file mode 100644 index f5db041746e..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/inspector_breadcrumbs.dart +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -import '../../shared/console/eval/inspector_tree.dart'; -import '../../shared/primitives/diagnostics_text_styles.dart'; -import '../../shared/primitives/utils.dart'; -import '../../shared/ui/common_widgets.dart'; - -class InspectorBreadcrumbNavigator extends StatelessWidget { - const InspectorBreadcrumbNavigator({ - super.key, - required this.items, - required this.onTap, - }); - - /// Max number of visible breadcrumbs including root item but not 'more' item. - /// E.g. value 5 means root and 4 breadcrumbs can be displayed, other - /// breadcrumbs (if any) will be replaced by '...' item. - static const _maxNumberOfBreadcrumbs = 5; - - final List items; - final void Function(InspectorTreeNode?) onTap; - - @override - Widget build(BuildContext context) { - if (items.isEmpty) { - return const SizedBox(); - } - - final breadcrumbs = _generateBreadcrumbs(items); - return SizedBox( - height: Breadcrumb.height, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 6), - child: Row( - children: breadcrumbs.map((item) { - if (item.isChevron) { - return const Icon(Icons.chevron_right, size: defaultIconSize); - } - - return Flexible( - child: _InspectorBreadcrumb( - data: item, - onTap: () => onTap(item.node), - ), - ); - }).toList(), - ), - ), - ); - } - - List<_InspectorBreadcrumbData> _generateBreadcrumbs( - List nodes, - ) { - final lastNode = nodes.safeLast; - final items = nodes.map((node) { - return _InspectorBreadcrumbData.wrap( - node: node, - isSelected: node == lastNode, - ); - }).toList(); - List<_InspectorBreadcrumbData> breadcrumbs; - breadcrumbs = items.length > _maxNumberOfBreadcrumbs - ? [ - items[0], - _InspectorBreadcrumbData.more(), - ...items.sublist( - items.length - _maxNumberOfBreadcrumbs + 1, - items.length, - ), - ] - : items; - - return breadcrumbs.joinWith(_InspectorBreadcrumbData.chevron()); - } -} - -class _InspectorBreadcrumb extends StatelessWidget { - const _InspectorBreadcrumb({required this.data, required this.onTap}); - - static const _iconScale = 0.75; - - final _InspectorBreadcrumbData data; - final VoidCallback onTap; - - @override - Widget build(BuildContext context) { - final text = Text( - data.text, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: DiagnosticsTextStyles.regular( - Theme.of(context).colorScheme, - ).copyWith(fontSize: 11), - ); - - final icon = data.icon == null - ? null - : Transform.scale( - scale: _iconScale, - child: Padding( - padding: const EdgeInsets.only(right: iconPadding), - child: data.icon, - ), - ); - - return InkWell( - onTap: data.isClickable ? onTap : null, - borderRadius: defaultBorderRadius, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: densePadding, - vertical: borderPadding, - ), - decoration: BoxDecoration( - borderRadius: defaultBorderRadius, - color: data.isSelected - ? Theme.of(context).colorScheme.selectedRowBackgroundColor - : Colors.transparent, - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - if (icon != null) icon, - Flexible(child: text), - ], - ), - ), - ); - } -} - -class _InspectorBreadcrumbData { - const _InspectorBreadcrumbData._({ - required this.node, - required this.isSelected, - required this.alternativeText, - required this.alternativeIcon, - }); - - factory _InspectorBreadcrumbData.wrap({ - required InspectorTreeNode node, - required bool isSelected, - }) { - return _InspectorBreadcrumbData._( - node: node, - isSelected: isSelected, - alternativeText: null, - alternativeIcon: null, - ); - } - - /// Construct a special item for showing '…' symbol between other items - factory _InspectorBreadcrumbData.more() { - return const _InspectorBreadcrumbData._( - node: null, - isSelected: false, - alternativeText: _ellipsisValue, - alternativeIcon: null, - ); - } - - factory _InspectorBreadcrumbData.chevron() { - return const _InspectorBreadcrumbData._( - node: null, - isSelected: false, - alternativeText: null, - alternativeIcon: _breadcrumbSeparatorIcon, - ); - } - - static const _ellipsisValue = '…'; - static const _breadcrumbSeparatorIcon = Icons.chevron_right; - - final InspectorTreeNode? node; - final IconData? alternativeIcon; - final String? alternativeText; - final bool isSelected; - - String get text => alternativeText ?? node?.diagnostic?.description ?? ''; - - Widget? get icon { - if (alternativeIcon != null) { - return const Icon(_breadcrumbSeparatorIcon, size: defaultIconSize); - } - - return node?.diagnostic?.icon; - } - - bool get isChevron => - node == null && alternativeIcon == _breadcrumbSeparatorIcon; - - bool get isEllipsis => node == null && alternativeText == _ellipsisValue; - - bool get isClickable => !isSelected && !isEllipsis; -} diff --git a/packages/devtools_app/lib/src/screens/inspector/inspector_controller.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_controller.dart deleted file mode 100644 index 9ddc8196e90..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/inspector_controller.dart +++ /dev/null @@ -1,950 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -/// This library must not have direct dependencies on dart:html. -/// -/// This allows tests of the complicated logic in this class to run on the VM -/// and will help simplify porting this code to work with Hummingbird. -/// -/// This code is directly based on -/// src/io/flutter/view/InspectorPanel.java -/// with some refactors to make the code more of a controller than a combination -/// of view and controller. View specific portions of InspectorPanel.java have -/// been moved to inspector.dart. -library; - -import 'dart:async'; - -import 'package:devtools_app_shared/utils.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:logging/logging.dart'; -import 'package:vm_service/vm_service.dart'; - -import '../../service/service_extensions.dart' as extensions; -import '../../shared/analytics/analytics.dart' as ga; -import '../../shared/analytics/constants.dart' as gac; -import '../../shared/analytics/metrics.dart'; -import '../../shared/console/eval/inspector_tree.dart'; -import '../../shared/console/primitives/simple_items.dart'; -import '../../shared/diagnostics/diagnostics_node.dart'; -import '../../shared/diagnostics/inspector_service.dart'; -import '../../shared/diagnostics/primitives/instance_ref.dart'; -import '../../shared/globals.dart'; -import '../../shared/primitives/query_parameters.dart'; -import '../../shared/primitives/utils.dart'; -import '../../shared/utils/utils.dart'; -import '../inspector_shared/inspector_screen.dart'; -import 'inspector_tree_controller.dart'; - -final _log = Logger('inspector_controller'); - -/// This class is based on the InspectorPanel class from the Flutter IntelliJ -/// plugin with some refactors to make it more of a true controller than a view. -class InspectorController extends DisposableController - with AutoDisposeControllerMixin - implements InspectorServiceClient { - InspectorController({ - required this.inspectorTree, - InspectorTreeController? detailsTree, - required this.treeType, - this.parent, - this.isSummaryTree = true, - }) : assert((detailsTree != null) == isSummaryTree) { - unawaited(_init(detailsTree: detailsTree)); - } - - Future _init({InspectorTreeController? detailsTree}) async { - _refreshRateLimiter = RateLimiter(refreshFramesPerSecond, refresh); - - inspectorTree.config = InspectorTreeConfig( - onNodeAdded: _onNodeAdded, - onSelectionChange: selectionChanged, - onExpand: _onExpand, - onClientActiveChange: _onClientChange, - ); - details = isSummaryTree - ? InspectorController( - inspectorTree: detailsTree!, - treeType: treeType, - parent: this, - isSummaryTree: false, - ) - : null; - - await serviceConnection.serviceManager.onServiceAvailable; - - if (inspectorService is InspectorService) { - _treeGroups = InspectorObjectGroupManager( - serviceConnection.inspectorService as InspectorService, - 'tree', - ); - _selectionGroups = InspectorObjectGroupManager( - serviceConnection.inspectorService as InspectorService, - 'selection', - ); - } - - addAutoDisposeListener( - serviceConnection.serviceManager.isolateManager.mainIsolate, - () { - final isolate = - serviceConnection.serviceManager.isolateManager.mainIsolate.value; - if (isolate != _mainIsolate) { - onIsolateStopped(); - } - _mainIsolate = isolate; - }, - ); - - // This logic only needs to be run once so run it in the outermost - // controller. - if (parent == null) { - // If select mode is available, enable the on device inspector as it - // won't interfere with users. - addAutoDisposeListener(_supportsToggleSelectWidgetMode, () { - if (_supportsToggleSelectWidgetMode.value) { - safeUnawaited( - serviceConnection.serviceManager.serviceExtensionManager - .setServiceExtensionState( - extensions.enableOnDeviceInspector.extension, - enabled: true, - value: true, - ), - ); - } - }); - } - - addAutoDisposeListener(serviceConnection.serviceManager.connectedState, () { - if (serviceConnection.serviceManager.connectedState.value.connected) { - _handleConnectionStart(); - } else { - _handleConnectionStop(); - } - }); - - if (serviceConnection.serviceManager.connectedAppInitialized) { - _handleConnectionStart(); - } - - serviceConnection.consoleService.ensureServiceInitialized(); - } - - void _handleConnectionStart() { - // Clear any existing badge/errors for older errors that were collected. - // Do this in a post frame callback so that we are not trying to clear the - // error notifiers for this screen while the framework is already in the - // process of building widgets. - // TODO(kenz): When this method is called outside createState(), this post - // frame callback can be removed. - WidgetsBinding.instance.addPostFrameCallback((_) { - serviceConnection.errorBadgeManager.clearErrorCount(InspectorScreen.id); - }); - filterErrors(); - } - - void _handleConnectionStop() { - setActivate(false); - if (isSummaryTree) { - dispose(); - } - } - - IsolateRef? _mainIsolate; - - ValueListenable get _supportsToggleSelectWidgetMode => serviceConnection - .serviceManager - .serviceExtensionManager - .hasServiceExtension(extensions.toggleSelectWidgetMode.extension); - - void _onClientChange(bool added) { - if (!added && _clientCount == 0) { - // Don't try to remove clients if there are none - return; - } - - _clientCount += added ? 1 : -1; - assert(_clientCount >= 0); - if (_clientCount == 1) { - setVisibleToUser(true); - setActivate(true); - } else if (_clientCount == 0) { - setVisibleToUser(false); - } - } - - int _clientCount = 0; - - /// Maximum frame rate to refresh the inspector at to avoid taxing the - /// physical device with too many requests to recompute properties and trees. - /// - /// A value up to around 30 frames per second could be reasonable for - /// debugging highly interactive cases particularly when the user is on a - /// simulator or high powered native device. The frame rate is set low - /// for now mainly to minimize risk. - static const refreshFramesPerSecond = 5.0; - - final bool isSummaryTree; - - /// Parent InspectorController if this is a details subtree. - InspectorController? parent; - - InspectorController? details; - - InspectorTreeController inspectorTree; - final FlutterTreeType treeType; - - late RateLimiter _refreshRateLimiter; - - InspectorServiceBase get inspectorService => - serviceConnection.inspectorService as InspectorServiceBase; - - /// Groups used to manage and cancel requests to load data to display directly - /// in the tree. - InspectorObjectGroupManager? _treeGroups; - - /// Groups used to manage and cancel requests to determine what the current - /// selection is. - /// - /// This group needs to be kept separate from treeGroups as the selection is - /// shared more with the details subtree. - /// TODO(jacobr): is there a way we can unify the selection and tree groups? - InspectorObjectGroupManager? _selectionGroups; - - /// Node being highlighted due to the current hover. - InspectorTreeNode? get currentShowNode => inspectorTree.hover; - - set currentShowNode(InspectorTreeNode? node) => inspectorTree.hover = node; - - bool flutterAppFrameReady = false; - - bool treeLoadStarted = false; - - RemoteDiagnosticsNode? subtreeRoot; - - bool programmaticSelectionChangeInProgress = false; - - ValueListenable get selectedNode => _selectedNode; - final _selectedNode = ValueNotifier(null); - - InspectorTreeNode? lastExpanded; - - bool isActive = false; - - final valueToInspectorTreeNode = {}; - - /// When visibleToUser is false we should dispose all allocated objects and - /// not perform any actions. - bool visibleToUser = false; - - bool highlightNodesShownInBothTrees = false; - - bool get detailsSubtree => parent != null; - - RemoteDiagnosticsNode? get selectedDiagnostic => - selectedNode.value?.diagnostic; - - ValueListenable get selectedErrorIndex => _selectedErrorIndex; - final _selectedErrorIndex = ValueNotifier(null); - - /// Tracks whether the first load of the inspector tree has been completed. - /// - /// This field is used to prevent sending multiple analytics events for - /// inspector tree load timing. - bool firstInspectorTreeLoadCompleted = false; - - FlutterTreeType getTreeType() { - return treeType; - } - - void setVisibleToUser(bool visible) { - if (visibleToUser == visible) { - return; - } - visibleToUser = visible; - - if (visibleToUser) { - if (parent == null) { - unawaited(maybeLoadUI()); - } - } else { - shutdownTree(false); - } - } - - bool hasDiagnosticsValue(InspectorInstanceRef ref) { - return valueToInspectorTreeNode.containsKey(ref); - } - - RemoteDiagnosticsNode? findDiagnosticsValue(InspectorInstanceRef ref) { - return valueToInspectorTreeNode[ref]?.diagnostic; - } - - void endShowNode() { - highlightShowNode(null); - } - - bool highlightShowFromNodeInstanceRef(InspectorInstanceRef ref) { - return highlightShowNode(valueToInspectorTreeNode[ref]); - } - - bool highlightShowNode(InspectorTreeNode? node) { - if (node == null && parent != null) { - // If nothing is highlighted, highlight the node selected in the parent - // tree so user has context of where the node selected in the parent is - // in the details tree. - node = findMatchingInspectorTreeNode(parent?.selectedDiagnostic); - } - - currentShowNode = node; - return true; - } - - InspectorTreeNode? findMatchingInspectorTreeNode( - RemoteDiagnosticsNode? node, - ) { - final valueRef = node?.valueRef; - if (valueRef == null) { - return null; - } - return valueToInspectorTreeNode[valueRef]; - } - - Future _waitForPendingUpdateDone() async { - // Wait for the selection to be resolved followed by waiting for the tree to be computed. - await _selectionGroups?.pendingUpdateDone; - await _treeGroups?.pendingUpdateDone; - // TODO(jacobr): are there race conditions we need to think more carefully about here? - } - - Future refresh() { - if (!visibleToUser) { - // We will refresh again once we are visible. - // There is a risk a refresh got triggered before the view was visble. - return Future.value(); - } - - // TODO(jacobr): refresh the tree as well as just the properties. - final detailsLocal = details; - if (detailsLocal == null) return _waitForPendingUpdateDone(); - - return [ - _waitForPendingUpdateDone(), - detailsLocal._waitForPendingUpdateDone(), - ].wait; - } - - // Note that this may be called after the controller is disposed. We need to handle nulls in the fields. - void shutdownTree(bool isolateStopped) { - // It is critical we clear all data that is kept alive by inspector object - // references in this method as that stale data will trigger inspector - // exceptions. - programmaticSelectionChangeInProgress = true; - _treeGroups?.clear(isolateStopped); - _selectionGroups?.clear(isolateStopped); - - currentShowNode = null; - _selectedNode.value = null; - lastExpanded = null; - - subtreeRoot = null; - - inspectorTree.root = inspectorTree.createNode(); - programmaticSelectionChangeInProgress = false; - valueToInspectorTreeNode.clear(); - } - - void onIsolateStopped() { - flutterAppFrameReady = false; - treeLoadStarted = false; - shutdownTree(true); - } - - @override - Future onForceRefresh() async { - assert(!disposed); - if (!visibleToUser || disposed) { - return; - } - await _recomputeTreeRoot(null, null, false); - if (disposed) { - return; - } - - filterErrors(); - - return _waitForPendingUpdateDone(); - } - - void filterErrors() { - if (isSummaryTree) { - serviceConnection.errorBadgeManager.filterErrors( - InspectorScreen.id, - (id) => hasDiagnosticsValue(InspectorInstanceRef(id)), - ); - } - } - - void setActivate(bool enabled) { - if (!enabled) { - onIsolateStopped(); - isActive = false; - return; - } - if (isActive) { - // Already activated. - return; - } - - isActive = true; - inspectorService.addClient(this); - unawaited(maybeLoadUI()); - } - - Future maybeLoadUI() async { - if (parent != null) { - // The parent controller will drive loading the UI. - return; - } - if (!visibleToUser || !isActive) { - return; - } - - if (flutterAppFrameReady) { - if (disposed) return; - // We need to start by querying the inspector service to find out the - // current state of the UI. - final inspectorRef = DevToolsQueryParams.load().inspectorRef; - await updateSelectionFromService( - firstFrame: true, - inspectorRef: inspectorRef, - ); - } else { - if (disposed) return; - if (inspectorService is InspectorService) { - final widgetTreeReady = await (inspectorService as InspectorService) - .isWidgetTreeReady(); - flutterAppFrameReady = widgetTreeReady; - } - if (isActive && flutterAppFrameReady) { - await maybeLoadUI(); - } - } - } - - Future _recomputeTreeRoot( - RemoteDiagnosticsNode? newSelection, - RemoteDiagnosticsNode? detailsSelection, - bool setSubtreeRoot, { - int subtreeDepth = 2, - }) async { - assert(!disposed); - final treeGroups = _treeGroups; - if (disposed || treeGroups == null) { - return; - } - - treeGroups.cancelNext(); - try { - final group = treeGroups.next; - final node = await (detailsSubtree - ? group.getDetailsSubtree(subtreeRoot, subtreeDepth: subtreeDepth) - : group.getRoot(treeType, isSummaryTree: true)); - if (node == null || group.disposed || disposed) { - return; - } - // TODO(jacobr): as a performance optimization we should check if the - // new tree is identical to the existing tree in which case we should - // dispose the new tree and keep the old tree. - treeGroups.promoteNext(); - _clearValueToInspectorTreeNodeMapping(); - - final rootNode = inspectorTree.setupInspectorTreeNode( - inspectorTree.createNode(), - node, - expandChildren: true, - expandProperties: false, - ); - inspectorTree.root = rootNode; - - refreshSelection(newSelection, detailsSelection, setSubtreeRoot); - } catch (error, st) { - _log.shout(error, error, st); - treeGroups.cancelNext(); - return; - } - } - - void _clearValueToInspectorTreeNodeMapping() { - valueToInspectorTreeNode.clear(); - } - - /// Show the details subtree starting with node subtreeRoot highlighting - /// node subtreeSelection. - void _showDetailSubtrees( - RemoteDiagnosticsNode? subtreeRoot, - RemoteDiagnosticsNode? subtreeSelection, - ) { - this.subtreeRoot = subtreeRoot; - details?.setSubtreeRoot(subtreeRoot, subtreeSelection); - } - - void setSubtreeRoot( - RemoteDiagnosticsNode? node, - RemoteDiagnosticsNode? selection, - ) { - assert(detailsSubtree); - selection ??= node; - if (node != null && node == subtreeRoot) { - // Select the new node in the existing subtree. - applyNewSelection(selection, null, false); - return; - } - subtreeRoot = node; - if (node == null) { - // Passing in a null node indicates we should clear the subtree and free any memory allocated. - shutdownTree(false); - return; - } - - // Clear now to eliminate frame of highlighted nodes flicker. - _clearValueToInspectorTreeNodeMapping(); - unawaited(_recomputeTreeRoot(selection, null, false)); - } - - InspectorTreeNode? getSubtreeRootNode() { - if (subtreeRoot == null) { - return null; - } - return valueToInspectorTreeNode[subtreeRoot!.valueRef]; - } - - void refreshSelection( - RemoteDiagnosticsNode? newSelection, - RemoteDiagnosticsNode? detailsSelection, - bool setSubtreeRoot, - ) { - newSelection ??= selectedDiagnostic; - setSelectedNode(findMatchingInspectorTreeNode(newSelection)); - syncSelectionHelper( - maybeRerootDetailsTree: setSubtreeRoot, - selection: newSelection, - detailsSelection: detailsSelection, - ); - - final detailsLocal = details; - if (detailsLocal != null) { - if (subtreeRoot != null && getSubtreeRootNode() == null) { - subtreeRoot = newSelection; - detailsLocal.setSubtreeRoot(newSelection, detailsSelection); - } - } - syncTreeSelection(); - } - - void syncTreeSelection() { - programmaticSelectionChangeInProgress = true; - inspectorTree.selection = selectedNode.value; - inspectorTree.expandPath(selectedNode.value); - programmaticSelectionChangeInProgress = false; - animateTo(selectedNode.value); - } - - void selectAndShowNode(RemoteDiagnosticsNode? node) { - if (node == null) { - return; - } - selectAndShowInspectorInstanceRef(node.valueRef); - } - - void selectAndShowInspectorInstanceRef(InspectorInstanceRef ref) { - final node = valueToInspectorTreeNode[ref]; - if (node == null) { - return; - } - setSelectedNode(node); - syncTreeSelection(); - } - - InspectorTreeNode? getTreeNode(RemoteDiagnosticsNode node) { - return valueToInspectorTreeNode[node.valueRef]; - } - - void maybeUpdateValueUI(InspectorInstanceRef valueRef) { - final node = valueToInspectorTreeNode[valueRef]; - if (node == null) { - // The value isn't shown in the parent tree. Nothing to do. - return; - } - inspectorTree.nodeChanged(node); - } - - @override - void onFlutterFrame() { - flutterAppFrameReady = true; - if (!visibleToUser) { - return; - } - - if (!treeLoadStarted) { - treeLoadStarted = true; - // This was the first frame. - unawaited(maybeLoadUI()); - } - _refreshRateLimiter.scheduleRequest(); - } - - @override - void onInspectorSelectionChanged() { - if (!visibleToUser) { - // Don't do anything. We will update the view once it is visible again. - return; - } - if (detailsSubtree) { - // Wait for the master to update. - return; - } - unawaited(updateSelectionFromService(firstFrame: false)); - } - - Future updateSelectionFromService({ - required bool firstFrame, - String? inspectorRef, - }) async { - if (parent != null) { - // If we have a parent controller we should wait for the parent to update - // our selection rather than updating it our self. - return; - } - final selectionGroups = _selectionGroups; - if (selectionGroups == null) { - // Already disposed. Ignore this requested to update selection. - return; - } - treeLoadStarted = true; - - selectionGroups.cancelNext(); - - final group = selectionGroups.next; - - if (inspectorRef != null) { - await group.setSelectionInspector( - InspectorInstanceRef(inspectorRef), - false, - ); - if (disposed) return; - } - final pendingSelectionFuture = group.getSelection( - selectedDiagnostic, - treeType, - restrictToLocalProject: isSummaryTree, - ); - - final pendingDetailsFuture = isSummaryTree - ? group.getSelection(selectedDiagnostic, treeType) - : null; - - try { - final newSelection = await pendingSelectionFuture; - if (disposed || group.disposed) return; - RemoteDiagnosticsNode? detailsSelection; - - if (pendingDetailsFuture != null) { - detailsSelection = await pendingDetailsFuture; - if (disposed || group.disposed) return; - } - - if (!firstFrame && - detailsSelection?.valueRef == details?.selectedDiagnostic?.valueRef && - newSelection?.valueRef == selectedDiagnostic?.valueRef) { - // No need to change the selection as it didn't actually change. - selectionGroups.cancelNext(); - return; - } - selectionGroups.promoteNext(); - - subtreeRoot = newSelection; - - applyNewSelection(newSelection, detailsSelection, true); - - // Send an event that a widget was selected on the device. - ga.select( - gac.inspector, - gac.onDeviceSelection, - screenMetricsProvider: () => InspectorScreenMetrics.legacy(), - ); - } catch (error, st) { - if (selectionGroups.next == group) { - _log.shout(error, error, st); - selectionGroups.cancelNext(); - } - } - } - - void applyNewSelection( - RemoteDiagnosticsNode? newSelection, - RemoteDiagnosticsNode? detailsSelection, - bool setSubtreeRoot, - ) { - final nodeInTree = findMatchingInspectorTreeNode(newSelection); - - if (nodeInTree == null) { - // The tree has probably changed since we last updated. Do a full refresh - // so that the tree includes the new node we care about. - unawaited( - _recomputeTreeRoot(newSelection, detailsSelection, setSubtreeRoot), - ); - } - - refreshSelection(newSelection, detailsSelection, setSubtreeRoot); - } - - void animateTo(InspectorTreeNode? node) { - if (node == null) { - return; - } - - inspectorTree.animateToTargets([node]); - } - - void setSelectedNode(InspectorTreeNode? newSelection) { - if (newSelection == selectedNode.value) { - return; - } - - _selectedNode.value = newSelection; - - lastExpanded = null; // New selected node takes precedence. - endShowNode(); - final detailsLocal = details; - final parantLocal = parent; - if (detailsLocal != null) { - detailsLocal.endShowNode(); - } else if (parantLocal != null) { - parantLocal.endShowNode(); - } - - _updateSelectedErrorFromNode(_selectedNode.value); - animateTo(selectedNode.value); - } - - /// Update the index of the selected error based on a node that has been - /// selected in the tree. - void _updateSelectedErrorFromNode(InspectorTreeNode? node) { - final inspectorRef = node?.diagnostic?.valueRef.id; - - final errors = serviceConnection.errorBadgeManager - .erroredItemsForPage(InspectorScreen.id) - .value; - - // Check whether the node that was just selected has any errors associated - // with it. - var errorIndex = inspectorRef != null - ? errors.keys.toList().indexOf(inspectorRef) - : null; - if (errorIndex == -1) { - errorIndex = null; - } - - _selectedErrorIndex.value = errorIndex; - - if (errorIndex != null) { - // Mark the error as "seen" as this will render slightly differently - // so the user can track which errored nodes they've viewed. - serviceConnection.errorBadgeManager.markErrorAsRead( - InspectorScreen.id, - errors[inspectorRef!]!, - ); - // Also clear the error badge since new errors may have arrived while - // the inspector was visible (normally they're cleared when visiting - // the screen) and visiting an errored node seems an appropriate - // acknowledgement of the errors. - serviceConnection.errorBadgeManager.clearErrorCount(InspectorScreen.id); - } - } - - /// Updates the index of the selected error and selects its node in the tree. - void selectErrorByIndex(int index) { - _selectedErrorIndex.value = index; - - final errors = serviceConnection.errorBadgeManager - .erroredItemsForPage(InspectorScreen.id) - .value; - - unawaited( - updateSelectionFromService( - firstFrame: false, - inspectorRef: errors.keys.elementAt(index), - ), - ); - } - - void _onExpand(InspectorTreeNode node) { - unawaited(inspectorTree.maybePopulateChildren(node)); - } - - Future _addNodeToConsole(InspectorTreeNode node) async { - final valueRef = node.diagnostic!.valueRef; - final isolateRef = inspectorService.isolateRef; - final instanceRef = await node.diagnostic!.objectGroupApi - ?.toObservatoryInstanceRef(valueRef); - if (disposed) return; - - if (instanceRef != null) { - await serviceConnection.consoleService.appendInstanceRef( - value: instanceRef, - diagnostic: node.diagnostic, - isolateRef: isolateRef, - forceScrollIntoView: true, - ); - } - } - - void selectionChanged() { - if (!visibleToUser) { - return; - } - - final node = inspectorTree.selection; - if (node != null) { - unawaited(inspectorTree.maybePopulateChildren(node)); - } - if (programmaticSelectionChangeInProgress) { - return; - } - if (node != null) { - setSelectedNode(node); - unawaited(_addNodeToConsole(node)); - - // Don't reroot if the selected value is already visible in the details tree. - final maybeReroot = - isSummaryTree && - details != null && - selectedDiagnostic != null && - !details!.hasDiagnosticsValue(selectedDiagnostic!.valueRef); - syncSelectionHelper( - maybeRerootDetailsTree: maybeReroot, - selection: selectedDiagnostic, - detailsSelection: selectedDiagnostic, - ); - - if (!maybeReroot) { - final parantLocal = parent; - final detailsLocal = details; - - if (isSummaryTree && detailsLocal != null) { - detailsLocal.selectAndShowNode(selectedDiagnostic); - } else if (parantLocal != null) { - parantLocal.selectAndShowNode( - firstAncestorInParentTree(selectedNode.value), - ); - } - } - } - } - - RemoteDiagnosticsNode? firstAncestorInParentTree(InspectorTreeNode? node) { - final parentLocal = parent; - - if (parentLocal == null) { - return node?.diagnostic; - } - while (node != null) { - final diagnostic = node.diagnostic; - if (diagnostic != null && - parentLocal.hasDiagnosticsValue(diagnostic.valueRef)) { - return parentLocal.findDiagnosticsValue(diagnostic.valueRef); - } - node = node.parent; - } - return null; - } - - void syncSelectionHelper({ - required bool maybeRerootDetailsTree, - required RemoteDiagnosticsNode? selection, - required RemoteDiagnosticsNode? detailsSelection, - }) { - if (selection != null) { - if (selection.isCreatedByLocalProject) { - _navigateTo(selection); - } - } - if (detailsSubtree || details == null) { - if (selection != null) { - var toSelect = selectedNode.value; - - while (toSelect != null && toSelect.diagnostic!.isProperty) { - toSelect = toSelect.parent; - } - - if (toSelect != null) { - final diagnosticToSelect = toSelect.diagnostic!; - unawaited(diagnosticToSelect.setSelectionInspector(true)); - } - } - } - - if (maybeRerootDetailsTree) { - _showDetailSubtrees(selection, detailsSelection); - } else if (selection != null) { - // We can't rely on the details tree to update the selection on the server in this case. - unawaited(selection.setSelectionInspector(true)); - } - } - - // TODO(jacobr): implement this method and use the parameter. - // ignore: avoid-unused-parameters - void _navigateTo(RemoteDiagnosticsNode diagnostic) { - // TODO(jacobr): dispatch an event over the inspectorService requesting a - // navigate operation. - } - - @override - void dispose() { - assert(!disposed); - if (serviceConnection.inspectorService != null) { - shutdownTree(false); - } - _treeGroups?.clear(false); - _treeGroups = null; - _selectionGroups?.clear(false); - _selectionGroups = null; - details?.dispose(); - - _refreshRateLimiter.dispose(); - _selectedNode.dispose(); - _selectedErrorIndex.dispose(); - super.dispose(); - } - - void _onNodeAdded( - InspectorTreeNode node, - RemoteDiagnosticsNode diagnosticsNode, - ) { - final valueRef = diagnosticsNode.valueRef; - // Properties do not have unique values so should not go in the valueToInspectorTreeNode map. - if (valueRef.id != null && !diagnosticsNode.isProperty) { - valueToInspectorTreeNode[valueRef] = node; - } - } - - Future expandAllNodesInDetailsTree() async { - final detailsLocal = details!; - await detailsLocal._recomputeTreeRoot( - inspectorTree.selection?.diagnostic, - detailsLocal.inspectorTree.selection?.diagnostic ?? - detailsLocal.inspectorTree.root?.diagnostic, - false, - subtreeDepth: maxJsInt, - ); - } - - void collapseDetailsToSelected() { - final detailsLocal = details!; - detailsLocal.inspectorTree.collapseToSelected(); - detailsLocal.animateTo(detailsLocal.inspectorTree.selection); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/inspector_data_models.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_data_models.dart deleted file mode 100644 index a12ed91f76e..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/inspector_data_models.dart +++ /dev/null @@ -1,887 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -/// @docImport 'layout_explorer/ui/overflow_indicator_painter.dart'; -library; - -import 'dart:math' as math; - -import 'package:flutter/rendering.dart'; - -import '../../shared/diagnostics/diagnostics_node.dart'; -import '../../shared/primitives/math_utils.dart'; -import '../../shared/primitives/utils.dart'; -import 'layout_explorer/flex/utils.dart'; - -const overflowEpsilon = 0.1; - -/// Compute real widget sizes into rendered sizes to be displayed on the details tab. -/// The sum of the resulting render sizes may or may not be greater than the [maxSizeAvailable] -/// In the case where it is greater, we should render it with scrolling capability. -/// -/// Variables: -/// - [sizes] : real size for widgets that want to be rendered / scaled -/// - [smallestSize] : the smallest element in the array [sizes] -/// - [largestSize] : the largest element in the array [sizes] -/// - [smallestRenderSize] : render size for smallest element -/// - [largestRenderSize] : render size for largest element -/// - [maxSizeAvailable] : maximum size available for rendering the widget -/// - [useMaxSizeAvailable] : flag for forcing the widget dimension to be at least [maxSizeAvailable] -/// -/// if [useMaxSizeAvailable] is set to true, -/// this method will ignore the largestRenderSize -/// and compute its own largestRenderSize to force -/// the sum of the render size to be equals to [maxSizeAvailable] -/// -/// Formula for computing render size: -/// ``` -/// renderSize[i] = (size[i] - smallestSize) -/// * (largestRenderSize - smallestRenderSize) -/// / (largestSize - smallestSize) + smallestRenderSize -/// ``` -/// Explanation: -/// - The computation formula for transforming size to renderSize is based on these two things: -/// - smallest element will be rendered to [smallestRenderSize] -/// - largest element will be rendered to [largestRenderSize] -/// - any other size will be scaled accordingly -/// - The formula above is derived from: -/// ``` -/// (renderSize[i] - smallestRenderSize) / (largestRenderSize - smallestRenderSize) -/// = (size[i] - smallestSize) / (size[i] - smallestSize) -/// ``` -/// -/// Formula for computing forced [largestRenderSize]: -/// ``` -/// largestRenderSize = (maxSizeAvailable - sizes.length * smallestRenderSize) -/// * (largestSize - smallestSize) / sum(s[i] - ss) + smallestRenderSize -/// ``` -/// Explanation: -/// - This formula is derived from the equation: -/// ``` -/// sum(renderSize) = maxSizeAvailable -/// ``` -List computeRenderSizes({ - required Iterable sizes, - required double smallestSize, - required double largestSize, - required double smallestRenderSize, - required double largestRenderSize, - required double maxSizeAvailable, - bool useMaxSizeAvailable = true, -}) { - final n = sizes.length; - - if (smallestSize == largestSize) { - // It means that all widget have the same size - // and we can just divide the size evenly - // but it should be at least as big as [smallestRenderSize] - final renderSize = math.max(smallestRenderSize, maxSizeAvailable / n); - return [for (final _ in sizes) renderSize]; - } - - List transformToRenderSize(double largestRenderSize) => [ - for (final s in sizes) - (s - smallestSize) * - (largestRenderSize - smallestRenderSize) / - (largestSize - smallestSize) + - smallestRenderSize, - ]; - - var renderSizes = transformToRenderSize(largestRenderSize); - - if (useMaxSizeAvailable && sum(renderSizes) < maxSizeAvailable) { - largestRenderSize = - (maxSizeAvailable - n * smallestRenderSize) * - (largestSize - smallestSize) / - sum([for (final s in sizes) s - smallestSize]) + - smallestRenderSize; - renderSizes = transformToRenderSize(largestRenderSize); - } - return renderSizes; -} - -// TODO(albertusangga): Move this to [RemoteDiagnosticsNode] once dart:html app is removed -/// Represents parsed layout information for a specific [RemoteDiagnosticsNode]. -class LayoutProperties { - LayoutProperties(this.node, {int copyLevel = 1}) - : description = node.description, - size = node.size!, - constraints = node.constraints, - isFlex = node.isFlex, - flexFactor = node.flexFactor, - flexFit = node.flexFit, - children = copyLevel == 0 - ? [] - : node.childrenNow - .map( - (child) => LayoutProperties(child, copyLevel: copyLevel - 1), - ) - .toList(growable: false) { - for (final child in children) { - child.parent = this; - } - } - - LayoutProperties.values({ - required this.node, - required this.children, - required this.constraints, - required this.description, - required this.flexFactor, - required this.isFlex, - required this.size, - required this.flexFit, - }) { - for (final child in children) { - child.parent = this; - } - } - - LayoutProperties? parent; - final RemoteDiagnosticsNode node; - final List children; - final BoxConstraints? constraints; - final String? description; - final num? flexFactor; - final FlexFit? flexFit; - final bool isFlex; - final Size size; - - /// Represents the order of [children] to be displayed. - List get displayChildren => children; - - bool get hasFlexFactor { - final flexFactorLocal = flexFactor; - if (flexFactorLocal == null) return false; - return flexFactorLocal > 0; - } - - int get totalChildren => children.length; - - bool get hasChildren => children.isNotEmpty; - - double get width => size.width; - - double get height => size.height; - - double dimension(Axis axis) => axis == Axis.horizontal ? width : height; - - List childrenDimensions(Axis axis) { - return displayChildren.map((child) => child.dimension(axis)).toList(); - } - - List get childrenWidths => childrenDimensions(Axis.horizontal); - - List get childrenHeights => childrenDimensions(Axis.vertical); - - String describeWidthConstraints() { - final constraintsLocal = constraints; - if (constraintsLocal == null) return ''; - return constraintsLocal.hasBoundedWidth - ? describeAxis( - constraintsLocal.minWidth, - constraintsLocal.maxWidth, - 'w', - ) - : 'width is unconstrained'; - } - - String describeHeightConstraints() { - final constraintsLocal = constraints; - if (constraintsLocal == null) return ''; - return constraintsLocal.hasBoundedHeight - ? describeAxis( - constraintsLocal.minHeight, - constraintsLocal.maxHeight, - 'h', - ) - : 'height is unconstrained'; - } - - String describeWidth() => 'w=${toStringAsFixed(size.width)}'; - - String describeHeight() => 'h=${toStringAsFixed(size.height)}'; - - bool get isOverflowWidth { - final parentWidth = parent?.width; - if (parentWidth == null) return false; - final parentData = node.parentData; - double widthUsed = width; - - widthUsed += parentData.offset.dx; - - // TODO(jacobr): certain widgets may allow overflow so this may false - // positive a bit for cases like Stack. - return widthUsed > parentWidth + overflowEpsilon; - } - - bool get isOverflowHeight { - final parentHeight = parent?.height; - if (parentHeight == null) return false; - final parentData = node.parentData; - double heightUsed = height; - - heightUsed += parentData.offset.dy; - - return heightUsed > parentHeight + overflowEpsilon; - } - - static String describeAxis(double min, double max, String axis) { - if (min == max) return '$axis=${min.toStringAsFixed(1)}'; - return '${min.toStringAsFixed(1)}<=$axis<=${max.toStringAsFixed(1)}'; - } - - LayoutProperties copyWith({ - List? children, - BoxConstraints? constraints, - String? description, - int? flexFactor, - FlexFit? flexFit, - bool? isFlex, - Size? size, - }) { - return LayoutProperties.values( - node: node, - children: children ?? this.children, - constraints: constraints ?? this.constraints, - description: description ?? this.description, - flexFactor: flexFactor ?? this.flexFactor, - isFlex: isFlex ?? this.isFlex, - size: size ?? this.size, - flexFit: flexFit ?? this.flexFit, - ); - } -} - -/// Enum object to represent which side of the widget is overflowing. -/// -/// See also: -/// * [OverflowIndicatorPainter] -enum OverflowSide { right, bottom } - -// TODO(jacobr): is it possible to overflow on multiple sides? -// TODO(jacobr): do we need to worry about overflowing on the left side in RTL -// layouts? We need to audit the Flutter semantics for determining overflow to -// make sure we are consistent. -extension LayoutPropertiesExtension on LayoutProperties { - OverflowSide? get overflowSide { - if (isOverflowWidth) return OverflowSide.right; - if (isOverflowHeight) return OverflowSide.bottom; - return null; - } -} - -final _flexLayoutExpando = Expando(); - -extension MainAxisAlignmentExtension on MainAxisAlignment { - MainAxisAlignment get reversed { - switch (this) { - case MainAxisAlignment.start: - return MainAxisAlignment.end; - case MainAxisAlignment.end: - return MainAxisAlignment.start; - default: - return this; - } - } -} - -/// TODO(albertusangga): Move this to [RemoteDiagnosticsNode] once dart:html app is removed. -class FlexLayoutProperties extends LayoutProperties { - FlexLayoutProperties({ - required super.size, - required super.children, - required super.node, - super.constraints, - super.isFlex = false, - super.description, - super.flexFactor, - super.flexFit, - this.direction = Axis.vertical, - this.mainAxisAlignment, - this.crossAxisAlignment, - this.mainAxisSize, - required this.textDirection, - required this.verticalDirection, - this.textBaseline, - }) : super.values(); - - FlexLayoutProperties._fromNode( - super.node, { - this.direction = Axis.vertical, - this.mainAxisAlignment, - this.mainAxisSize, - this.crossAxisAlignment, - required this.textDirection, - required this.verticalDirection, - this.textBaseline, - }); - - factory FlexLayoutProperties.fromDiagnostics(RemoteDiagnosticsNode node) { - // Cache the properties on an expando so that local tweaks to - // FlexLayoutProperties persist across multiple lookups from an - // RemoteDiagnosticsNode. - return _flexLayoutExpando[node] ??= _buildNode(node); - } - - @override - FlexLayoutProperties copyWith({ - Size? size, - List? children, - BoxConstraints? constraints, - bool? isFlex, - String? description, - num? flexFactor, - FlexFit? flexFit, - Axis? direction, - MainAxisAlignment? mainAxisAlignment, - MainAxisSize? mainAxisSize, - CrossAxisAlignment? crossAxisAlignment, - TextDirection? textDirection, - VerticalDirection? verticalDirection, - TextBaseline? textBaseline, - }) { - return FlexLayoutProperties( - size: size ?? this.size, - children: children ?? this.children, - node: node, - constraints: constraints ?? this.constraints, - isFlex: isFlex ?? this.isFlex, - description: description ?? this.description, - flexFactor: flexFactor ?? this.flexFactor, - flexFit: flexFit ?? this.flexFit, - direction: direction ?? this.direction, - mainAxisAlignment: mainAxisAlignment ?? this.mainAxisAlignment, - mainAxisSize: mainAxisSize ?? this.mainAxisSize, - crossAxisAlignment: crossAxisAlignment ?? this.crossAxisAlignment, - textDirection: textDirection ?? this.textDirection, - verticalDirection: verticalDirection ?? this.verticalDirection, - textBaseline: textBaseline ?? this.textBaseline, - ); - } - - static FlexLayoutProperties _buildNode(RemoteDiagnosticsNode node) { - final renderObjectJson = node.renderObject!.json; - final properties = (renderObjectJson['properties'] as List) - .cast>(); - - final data = { - for (final property in properties) - property['name']: property['description'] as String?, - }; - - return FlexLayoutProperties._fromNode( - node, - direction: _directionNamesToValues[data['direction']] ?? Axis.vertical, - mainAxisAlignment: - _mainAxisAlignmentNamesToValues[data['mainAxisAlignment']], - mainAxisSize: _mainAxisSizeNamesToValues[data['mainAxisSize']], - crossAxisAlignment: - _crossAxisAlignmentNamesToValues[data['crossAxisAlignment']], - textDirection: - _textDirectionNamesToValues[data['textDirection']] ?? - TextDirection.ltr, - verticalDirection: - _verticalDirectionNamesToValues[data['verticalDirection']] ?? - VerticalDirection.down, - textBaseline: _textBaselineNamesToValues[data['textBaseline']], - ); - } - - final Axis direction; - final MainAxisAlignment? mainAxisAlignment; - final CrossAxisAlignment? crossAxisAlignment; - final MainAxisSize? mainAxisSize; - final TextDirection textDirection; - final VerticalDirection verticalDirection; - final TextBaseline? textBaseline; - - List? _displayChildren; - - @override - List get displayChildren { - final displayChildren = _displayChildren; - if (displayChildren != null) return displayChildren; - return _displayChildren = startIsTopLeft - ? children - : children.reversed.toList(); - } - - int? _totalFlex; - - bool get isMainAxisHorizontal => direction == Axis.horizontal; - - bool get isMainAxisVertical => direction == Axis.vertical; - - String get horizontalDirectionDescription { - return direction == Axis.horizontal ? 'Main Axis' : 'Cross Axis'; - } - - String get verticalDirectionDescription { - return direction == Axis.vertical ? 'Main Axis' : 'Cross Axis'; - } - - String get type => direction.flexType; - - num get totalFlex { - if (children.isEmpty) return 0; - _totalFlex ??= children - .map((child) => child.flexFactor ?? 0) - .reduce((value, element) => value + element) - .toInt(); - return _totalFlex!; - } - - Axis get crossAxisDirection { - return direction == Axis.horizontal ? Axis.vertical : Axis.horizontal; - } - - double get mainAxisDimension => dimension(direction); - - double get crossAxisDimension => dimension(crossAxisDirection); - - @override - bool get isOverflowWidth { - if (direction == Axis.horizontal) { - return width + overflowEpsilon < sum(childrenWidths); - } - return width + overflowEpsilon < max(childrenWidths); - } - - @override - bool get isOverflowHeight { - if (direction == Axis.vertical) { - return height + overflowEpsilon < sum(childrenHeights); - } - return height + overflowEpsilon < max(childrenHeights); - } - - bool get startIsTopLeft { - switch (direction) { - case Axis.horizontal: - switch (textDirection) { - case TextDirection.ltr: - return true; - case TextDirection.rtl: - return false; - } - case Axis.vertical: - switch (verticalDirection) { - case VerticalDirection.down: - return true; - case VerticalDirection.up: - return false; - } - } - } - - /// render properties for laying out rendered Flex & Flex children widgets - /// the computation is similar to [RenderFlex].performLayout() method - List childrenRenderProperties({ - required double smallestRenderWidth, - required double largestRenderWidth, - required double smallestRenderHeight, - required double largestRenderHeight, - required double Function(Axis) maxSizeAvailable, - }) { - /// calculate the render empty spaces - final freeSpace = dimension(direction) - sum(childrenDimensions(direction)); - final displayMainAxisAlignment = startIsTopLeft - ? mainAxisAlignment - : mainAxisAlignment?.reversed; - - double leadingSpace(double freeSpace) { - if (children.isEmpty) return 0.0; - switch (displayMainAxisAlignment) { - case MainAxisAlignment.start: - case MainAxisAlignment.end: - return freeSpace; - case MainAxisAlignment.center: - return freeSpace * 0.5; - case MainAxisAlignment.spaceBetween: - return 0.0; - case MainAxisAlignment.spaceAround: - final spaceBetweenChildren = freeSpace / children.length; - return spaceBetweenChildren * 0.5; - case MainAxisAlignment.spaceEvenly: - return freeSpace / (children.length + 1); - default: - return 0.0; - } - } - - double betweenSpace(double freeSpace) { - if (children.isEmpty) return 0.0; - switch (displayMainAxisAlignment) { - case MainAxisAlignment.start: - case MainAxisAlignment.end: - case MainAxisAlignment.center: - return 0.0; - case MainAxisAlignment.spaceBetween: - if (children.length == 1) return freeSpace; - return freeSpace / (children.length - 1); - case MainAxisAlignment.spaceAround: - return freeSpace / children.length; - case MainAxisAlignment.spaceEvenly: - return freeSpace / (children.length + 1); - default: - return 0.0; - } - } - - double smallestRenderSize(Axis axis) { - return axis == Axis.horizontal - ? smallestRenderWidth - : smallestRenderHeight; - } - - double largestRenderSize(Axis axis) { - final lrs = axis == Axis.horizontal - ? largestRenderWidth - : largestRenderHeight; - // use all the space when visualizing cross axis - return (axis == direction) ? lrs : maxSizeAvailable(axis); - } - - List renderSizes(Axis axis) { - final sizes = childrenDimensions(axis); - if (freeSpace > 0.0 && axis == direction) { - /// include free space in the computation - sizes.add(freeSpace); - } - final smallestSize = min(sizes); - final largestSize = max(sizes); - if (axis == direction || - (crossAxisAlignment != CrossAxisAlignment.stretch && - smallestSize != largestSize)) { - return computeRenderSizes( - sizes: sizes, - smallestSize: smallestSize, - largestSize: largestSize, - smallestRenderSize: smallestRenderSize(axis), - largestRenderSize: largestRenderSize(axis), - maxSizeAvailable: maxSizeAvailable(axis), - ); - } else { - // uniform cross axis sizes. - double size = crossAxisAlignment == CrossAxisAlignment.stretch - ? maxSizeAvailable(axis) - : largestSize / - math.max(dimension(axis), 1.0) * - maxSizeAvailable(axis); - size = math.max(size, smallestRenderSize(axis)); - return sizes.map((_) => size).toList(); - } - } - - final widths = renderSizes(Axis.horizontal); - final heights = renderSizes(Axis.vertical); - - final renderFreeSpace = freeSpace > 0.0 - ? (isMainAxisHorizontal ? widths.last : heights.last) - : 0.0; - - final renderLeadingSpace = leadingSpace(renderFreeSpace); - final renderBetweenSpace = betweenSpace(renderFreeSpace); - - final childrenRenderProps = []; - - double lastMainAxisOffset() { - if (childrenRenderProps.isEmpty) return 0.0; - return childrenRenderProps.last.mainAxisOffset; - } - - double lastMainAxisDimension() { - if (childrenRenderProps.isEmpty) return 0.0; - return childrenRenderProps.last.mainAxisDimension; - } - - double space(int index) { - if (index == 0) { - if (displayMainAxisAlignment == MainAxisAlignment.start) return 0.0; - return renderLeadingSpace; - } - return renderBetweenSpace; - } - - double calculateMainAxisOffset(int i) { - return lastMainAxisOffset() + lastMainAxisDimension() + space(i); - } - - double calculateCrossAxisOffset(int i) { - final maxDimension = maxSizeAvailable(crossAxisDirection); - final usedDimension = crossAxisDirection == Axis.horizontal - ? widths[i] - : heights[i]; - - if (crossAxisAlignment == CrossAxisAlignment.start || - crossAxisAlignment == CrossAxisAlignment.stretch || - maxDimension == usedDimension) { - return 0.0; - } - final emptySpace = math.max(0.0, maxDimension - usedDimension); - if (crossAxisAlignment == CrossAxisAlignment.end) return emptySpace; - return emptySpace * 0.5; - } - - for (var i = 0; i < children.length; ++i) { - childrenRenderProps.add( - RenderProperties( - axis: direction, - size: Size(widths[i], heights[i]), - offset: Offset.zero, - realSize: displayChildren[i].size, - layoutProperties: displayChildren[i], - ) - ..mainAxisOffset = calculateMainAxisOffset(i) - ..crossAxisOffset = calculateCrossAxisOffset(i), - ); - } - - final spaces = []; - final actualLeadingSpace = leadingSpace(freeSpace); - final actualBetweenSpace = betweenSpace(freeSpace); - final renderPropsWithFullCrossAxisDimension = - RenderProperties( - axis: direction, - isFreeSpace: true, - layoutProperties: this, - ) - ..crossAxisDimension = maxSizeAvailable(crossAxisDirection) - ..crossAxisRealDimension = dimension(crossAxisDirection) - ..crossAxisOffset = 0.0; - if (actualLeadingSpace > 0.0 && - displayMainAxisAlignment != MainAxisAlignment.start) { - spaces.add( - renderPropsWithFullCrossAxisDimension.copyWith() - ..mainAxisOffset = 0.0 - ..mainAxisDimension = renderLeadingSpace - ..mainAxisRealDimension = actualLeadingSpace, - ); - } - if (actualBetweenSpace > 0.0) { - for (var i = 0; i < childrenRenderProps.length - 1; ++i) { - final child = childrenRenderProps[i]; - spaces.add( - renderPropsWithFullCrossAxisDimension.copyWith() - ..mainAxisDimension = renderBetweenSpace - ..mainAxisRealDimension = actualBetweenSpace - ..mainAxisOffset = child.mainAxisOffset + child.mainAxisDimension, - ); - } - } - if (actualLeadingSpace > 0.0 && - displayMainAxisAlignment != MainAxisAlignment.end) { - spaces.add( - renderPropsWithFullCrossAxisDimension.copyWith() - ..mainAxisOffset = - childrenRenderProps.last.mainAxisDimension + - childrenRenderProps.last.mainAxisOffset - ..mainAxisDimension = renderLeadingSpace - ..mainAxisRealDimension = actualLeadingSpace, - ); - } - return [...childrenRenderProps, ...spaces]; - } - - List crossAxisSpaces({ - required List childrenRenderProperties, - required double Function(Axis) maxSizeAvailable, - }) { - if (crossAxisAlignment == CrossAxisAlignment.stretch) return []; - final spaces = []; - for (var i = 0; i < children.length; ++i) { - if (dimension(crossAxisDirection) == - displayChildren[i].dimension(crossAxisDirection) || - childrenRenderProperties[i].crossAxisDimension == - maxSizeAvailable(crossAxisDirection)) { - continue; - } - - final renderProperties = childrenRenderProperties[i]; - final space = renderProperties.copyWith(isFreeSpace: true); - - space.crossAxisRealDimension = - crossAxisDimension - space.crossAxisRealDimension; - space.crossAxisDimension = - maxSizeAvailable(crossAxisDirection) - space.crossAxisDimension; - if (space.crossAxisDimension <= 0.0) continue; - if (crossAxisAlignment == CrossAxisAlignment.center) { - space.crossAxisDimension *= 0.5; - final crossAxisRealDimension = space.crossAxisRealDimension; - space.crossAxisRealDimension = crossAxisRealDimension * 0.5; - spaces.add(space.copyWith()..crossAxisOffset = 0.0); - spaces.add( - space.copyWith() - ..crossAxisOffset = - renderProperties.crossAxisDimension + - renderProperties.crossAxisOffset, - ); - } else { - space.crossAxisOffset = crossAxisAlignment == CrossAxisAlignment.end - ? 0 - : renderProperties.crossAxisDimension; - spaces.add(space); - } - } - return spaces; - } - - static final _directionNamesToValues = Axis.values.asNameMap(); - static final _mainAxisAlignmentNamesToValues = MainAxisAlignment.values - .asNameMap(); - static final _mainAxisSizeNamesToValues = MainAxisSize.values.asNameMap(); - static final _crossAxisAlignmentNamesToValues = CrossAxisAlignment.values - .asNameMap(); - static final _textDirectionNamesToValues = TextDirection.values.asNameMap(); - static final _verticalDirectionNamesToValues = VerticalDirection.values - .asNameMap(); - static final _textBaselineNamesToValues = TextBaseline.values.asNameMap(); -} - -/// Information for rendering a [LayoutProperties] node. -class RenderProperties { - RenderProperties({ - required this.axis, - required this.layoutProperties, - this.isFreeSpace = false, - Size? size, - Offset? offset, - Size? realSize, - }) : width = size?.width ?? 0.0, - height = size?.height ?? 0.0, - realWidth = realSize?.width ?? 0.0, - realHeight = realSize?.height ?? 0.0, - dx = offset?.dx ?? 0.0, - dy = offset?.dy ?? 0.0; - - final Axis axis; - - /// Represents which node is rendered for this object. - final LayoutProperties layoutProperties; - - final bool isFreeSpace; - - double dx, dy; - double width, height; - double realWidth, realHeight; - - Size get size => Size(width, height); - - Size get realSize => Size(realWidth, realHeight); - - Offset get offset => Offset(dx, dy); - - double get mainAxisDimension => axis == Axis.horizontal ? width : height; - - set mainAxisDimension(double dim) { - if (axis == Axis.horizontal) { - width = dim; - } else { - height = dim; - } - } - - double get crossAxisDimension => axis == Axis.horizontal ? height : width; - - set crossAxisDimension(double dim) { - if (axis == Axis.horizontal) { - height = dim; - } else { - width = dim; - } - } - - double get mainAxisOffset => axis == Axis.horizontal ? dx : dy; - - set mainAxisOffset(double offset) { - if (axis == Axis.horizontal) { - dx = offset; - } else { - dy = offset; - } - } - - double get crossAxisOffset => axis == Axis.horizontal ? dy : dx; - - set crossAxisOffset(double offset) { - if (axis == Axis.horizontal) { - dy = offset; - } else { - dx = offset; - } - } - - double get mainAxisRealDimension => - axis == Axis.horizontal ? realWidth : realHeight; - - set mainAxisRealDimension(double newVal) { - if (axis == Axis.horizontal) { - realWidth = newVal; - } else { - realHeight = newVal; - } - } - - double get crossAxisRealDimension => - axis == Axis.horizontal ? realHeight : realWidth; - - set crossAxisRealDimension(double newVal) { - if (axis == Axis.horizontal) { - realHeight = newVal; - } else { - realWidth = newVal; - } - } - - RenderProperties copyWith({bool? isFreeSpace}) { - return RenderProperties( - axis: axis, - size: size, - offset: offset, - realSize: realSize, - layoutProperties: layoutProperties, - isFreeSpace: isFreeSpace ?? this.isFreeSpace, - ); - } - - @override - int get hashCode => - axis.hashCode ^ - size.hashCode ^ - offset.hashCode ^ - realSize.hashCode ^ - isFreeSpace.hashCode; - - @override - bool operator ==(Object other) { - return other is RenderProperties && - axis == other.axis && - size.closeTo(other.size) && - offset.closeTo(other.offset) && - realSize.closeTo(other.realSize) && - isFreeSpace == other.isFreeSpace; - } - - @override - String toString() { - return '{ axis: $axis, size: $size, offset: $offset, realSize: $realSize, isFreeSpace: $isFreeSpace }'; - } -} - -bool _closeTo(double a, double b, {int precision = 1}) { - return a.toStringAsPrecision(precision) == b.toStringAsPrecision(precision); -} - -extension on Size { - bool closeTo(Size other) { - return _closeTo(width, other.width) && _closeTo(height, other.height); - } -} - -extension on Offset { - bool closeTo(Offset other) { - return _closeTo(dx, other.dx) && _closeTo(dy, other.dy); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/inspector_screen_body.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_screen_body.dart deleted file mode 100644 index 5ab577d564d..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/inspector_screen_body.dart +++ /dev/null @@ -1,458 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:async'; -import 'dart:collection'; - -import 'package:devtools_app_shared/ui.dart'; -import 'package:devtools_app_shared/utils.dart'; -import 'package:flutter/material.dart'; - -import '../../service/service_extension_widgets.dart'; -import '../../service/service_extensions.dart' as extensions; -import '../../shared/analytics/analytics.dart' as ga; -import '../../shared/analytics/constants.dart' as gac; -import '../../shared/analytics/metrics.dart'; -import '../../shared/console/eval/inspector_tree.dart'; -import '../../shared/globals.dart'; -import '../../shared/managers/banner_messages.dart'; -import '../../shared/managers/error_badge_manager.dart'; -import '../../shared/primitives/blocking_action_mixin.dart'; -import '../../shared/ui/common_widgets.dart'; -import '../../shared/ui/search.dart'; -import '../inspector_shared/inspector_controls.dart'; -import '../inspector_shared/inspector_screen.dart'; -import '../inspector_shared/inspector_settings_dialog.dart'; -import 'inspector_controller.dart'; -import 'inspector_screen_details_tab.dart'; -import 'inspector_tree_controller.dart'; - -class InspectorScreenBody extends StatefulWidget { - const InspectorScreenBody({super.key, required this.controller}); - - final InspectorController controller; - - @override - InspectorScreenBodyState createState() => InspectorScreenBodyState(); -} - -class InspectorScreenBodyState extends State - with BlockingActionMixin, AutoDisposeMixin { - InspectorController get controller => widget.controller; - - InspectorTreeController get _summaryTreeController => - controller.inspectorTree; - - InspectorTreeController get _detailsTreeController => - controller.details!.inspectorTree; - - bool searchVisible = false; - - SearchControllerMixin get searchController => _summaryTreeController; - - /// Indicates whether search can be closed. The value is set to true when - /// search target type dropdown is displayed - /// TODO(https://github.com/flutter/devtools/issues/3489) use this variable when adding the scope dropdown - bool searchPreventClose = false; - - SearchTargetType searchTarget = SearchTargetType.widget; - - static const summaryTreeKey = Key('Summary Tree'); - static const detailsTreeKey = Key('Details Tree'); - static const minScreenWidthForText = 900.0; - static const serviceExtensionButtonsIncludeTextWidth = 1200.0; - - @override - void initState() { - super.initState(); - ga.screen(InspectorScreen.id); - } - - @override - void didChangeDependencies() { - super.didChangeDependencies(); - - if (serviceConnection.inspectorService == null) { - // The app must not be a Flutter app. - return; - } - - cancelListeners(); - searchVisible = searchController.search.isNotEmpty; - addAutoDisposeListener(searchController.searchFieldFocusNode, () { - final searchFieldFocusNode = searchController.searchFieldFocusNode; - if (searchFieldFocusNode == null) return; - // Close the search once focus is lost and following conditions are met: - // 1. Search string is empty. - // 2. [searchPreventClose] == false (this is set true when searchTargetType Dropdown is opened). - if (!searchFieldFocusNode.hasFocus && - searchController.search.isEmpty && - !searchPreventClose) { - setState(() { - searchVisible = false; - }); - } - - // Reset [searchPreventClose] state to false after the search field gains focus. - // Focus is returned automatically once the Dropdown menu is closed. - if (searchFieldFocusNode.hasFocus) { - searchPreventClose = false; - } - }); - addAutoDisposeListener(preferences.inspector.pubRootDirectories, () { - if (serviceConnection.serviceManager.connectedState.value.connected && - controller.firstInspectorTreeLoadCompleted) { - _refreshInspector(); - } - }); - - if (!controller.firstInspectorTreeLoadCompleted) { - ga.timeStart(InspectorScreen.id, gac.pageReady); - } - - _summaryTreeController.setSearchTarget(searchTarget); - - _showLegacyInspectorWarning(context); - } - - @override - Widget build(BuildContext context) { - final summaryTree = _buildSummaryTreeColumn(); - - final detailsTree = InspectorTree( - key: detailsTreeKey, - controller: controller, - treeController: _detailsTreeController, - summaryTreeController: _summaryTreeController, - screenId: InspectorScreen.id, - ); - - final splitAxis = SplitPane.axisFor(context, 0.85); - final widgetTrees = SplitPane( - axis: splitAxis, - initialFractions: const [0.33, 0.67], - children: [ - summaryTree, - InspectorDetails(detailsTree: detailsTree, controller: controller), - ], - ); - return Column( - children: [ - const InspectorControls(), - const SizedBox(height: intermediateSpacing), - Expanded(child: widgetTrees), - ], - ); - } - - Widget _buildSummaryTreeColumn() { - return LayoutBuilder( - builder: (context, constraints) { - return RoundedOutlinedBorder( - child: Column( - children: [ - InspectorSummaryTreeControls( - isSearchVisible: searchVisible, - constraints: constraints, - onRefreshInspectorPressed: _refreshInspector, - onSearchVisibleToggle: _onSearchVisibleToggle, - searchFieldBuilder: () => - StatelessSearchField( - controller: _summaryTreeController, - searchFieldEnabled: true, - shouldRequestFocus: searchVisible, - supportsNavigation: true, - onClose: _onSearchVisibleToggle, - ), - ), - Expanded( - child: ValueListenableBuilder( - valueListenable: serviceConnection.errorBadgeManager - .erroredItemsForPage(InspectorScreen.id), - builder: (_, LinkedHashMap errors, _) { - final inspectableErrors = - errors.map( - (key, value) => MapEntry( - key, - value as InspectableWidgetError, - ), - ) - as LinkedHashMap; - return Stack( - children: [ - InspectorTree( - key: summaryTreeKey, - controller: controller, - treeController: _summaryTreeController, - isSummaryTree: true, - widgetErrors: inspectableErrors, - screenId: InspectorScreen.id, - ), - if (errors.isNotEmpty) - ValueListenableBuilder( - valueListenable: controller.selectedErrorIndex, - builder: (_, selectedErrorIndex, _) => Positioned( - top: 0, - right: 0, - child: ErrorNavigator( - errors: inspectableErrors, - errorIndex: selectedErrorIndex, - onSelectError: controller.selectErrorByIndex, - ), - ), - ), - ], - ); - }, - ), - ), - ], - ), - ); - }, - ); - } - - void _onSearchVisibleToggle() { - setState(() { - searchVisible = !searchVisible; - }); - _summaryTreeController.resetSearch(); - } - - void _showLegacyInspectorWarning(BuildContext context) { - if (context.mounted) { - pushLegacyInspectorWarning(InspectorScreen.id); - } - } - - List getServiceExtensionWidgets() { - return [ - ServiceExtensionButtonGroup( - minScreenWidthForText: serviceExtensionButtonsIncludeTextWidth, - extensions: [ - extensions.slowAnimations, - extensions.debugPaint, - extensions.debugPaintBaselines, - extensions.repaintRainbow, - extensions.invertOversizedImages, - ], - ), - const SizedBox(width: defaultSpacing), - SettingsOutlinedButton( - gaScreen: gac.inspector, - gaSelection: gac.inspectorSettings, - tooltip: 'Flutter Inspector Settings', - onPressed: () { - unawaited( - showDialog( - context: context, - builder: (context) => const FlutterInspectorSettingsDialog(), - ), - ); - }, - ), - // TODO(jacobr): implement TogglePlatformSelector. - // TogglePlatformSelector().selector - ]; - } - - void _refreshInspector() { - ga.select( - gac.inspector, - gac.refresh, - screenMetricsProvider: () => InspectorScreenMetrics.legacy(), - ); - unawaited( - blockWhileInProgress(() async { - // If the user is force refreshing the inspector before the first load has - // completed, this could indicate a slow load time or that the inspector - // failed to load the tree once available. - if (!controller.firstInspectorTreeLoadCompleted) { - // We do not want to complete this timing operation because the force - // refresh will skew the results. - ga.cancelTimingOperation(InspectorScreen.id, gac.pageReady); - ga.select( - gac.inspector, - gac.refreshEmptyTree, - screenMetricsProvider: () => InspectorScreenMetrics.legacy(), - ); - controller.firstInspectorTreeLoadCompleted = true; - } - await controller.onForceRefresh(); - }), - ); - } -} - -class InspectorSummaryTreeControls extends StatelessWidget { - const InspectorSummaryTreeControls({ - super.key, - required this.constraints, - required this.isSearchVisible, - required this.onRefreshInspectorPressed, - required this.onSearchVisibleToggle, - required this.searchFieldBuilder, - }); - - static const _searchBreakpoint = 375.0; - - final bool isSearchVisible; - final BoxConstraints constraints; - final VoidCallback onRefreshInspectorPressed; - final VoidCallback onSearchVisibleToggle; - final Widget Function() searchFieldBuilder; - - @override - Widget build(BuildContext context) { - return Column( - children: [ - _controlsContainer( - context, - Row( - children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: denseSpacing), - child: Text( - 'Widget Tree', - style: Theme.of(context).textTheme.titleMedium, - ), - ), - ...!isSearchVisible - ? [ - const Spacer(), - ToolbarAction( - icon: Icons.search, - onPressed: onSearchVisibleToggle, - tooltip: 'Search Tree', - ), - ] - : [ - constraints.maxWidth >= _searchBreakpoint - ? _buildSearchControls() - : const Spacer(), - ], - ToolbarAction( - icon: Icons.refresh, - onPressed: onRefreshInspectorPressed, - tooltip: 'Refresh Tree', - ), - ], - ), - ), - if (isSearchVisible && constraints.maxWidth < _searchBreakpoint) - _controlsContainer(context, Row(children: [_buildSearchControls()])), - ], - ); - } - - Container _controlsContainer(BuildContext context, Widget child) { - return Container( - height: defaultHeaderHeight, - decoration: BoxDecoration( - border: Border(bottom: defaultBorderSide(Theme.of(context))), - ), - child: child, - ); - } - - Widget _buildSearchControls() { - return Expanded( - child: SizedBox( - height: defaultTextFieldHeight, - child: searchFieldBuilder(), - ), - ); - } -} - -class ErrorNavigator extends StatelessWidget { - const ErrorNavigator({ - super.key, - required this.errors, - required this.errorIndex, - required this.onSelectError, - }); - - final LinkedHashMap errors; - - final int? errorIndex; - - final void Function(int) onSelectError; - - @override - Widget build(BuildContext context) { - final colorScheme = Theme.of(context).colorScheme; - final label = errorIndex != null - ? 'Error ${errorIndex! + 1}/${errors.length}' - : 'Errors: ${errors.length}'; - return Container( - color: colorScheme.errorContainer, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: defaultSpacing, - vertical: denseSpacing, - ), - child: Row( - children: [ - Padding( - padding: const EdgeInsets.only(right: denseSpacing), - child: Text( - label, - style: TextStyle(color: colorScheme.onErrorContainer), - ), - ), - _ErrorNavigatorButton( - icon: Icons.keyboard_arrow_up, - onPressed: _previousError, - ), - _ErrorNavigatorButton( - icon: Icons.keyboard_arrow_down, - onPressed: _nextError, - ), - ], - ), - ), - ); - } - - void _previousError() { - var newIndex = errorIndex == null ? errors.length - 1 : errorIndex! - 1; - while (newIndex < 0) { - newIndex += errors.length; - } - - onSelectError(newIndex); - } - - void _nextError() { - final newIndex = errorIndex == null ? 0 : (errorIndex! + 1) % errors.length; - - onSelectError(newIndex); - } -} - -class _ErrorNavigatorButton extends StatelessWidget { - const _ErrorNavigatorButton({required this.icon, required this.onPressed}); - - final IconData icon; - final VoidCallback onPressed; - - @override - Widget build(BuildContext context) { - return SizedBox( - // This is required to force the button size. - height: defaultButtonHeight, - width: defaultButtonHeight, - child: IconButton( - padding: EdgeInsets.zero, - constraints: const BoxConstraints(), - splashRadius: defaultIconSize, - icon: Icon(icon), - color: Theme.of(context).colorScheme.onErrorContainer, - onPressed: onPressed, - ), - ); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/inspector_screen_details_tab.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_screen_details_tab.dart deleted file mode 100644 index ae8cc53e551..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/inspector_screen_details_tab.dart +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:async'; - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -import '../../shared/analytics/analytics.dart' as ga; -import '../../shared/analytics/constants.dart' as gac; -import '../../shared/globals.dart'; -import '../../shared/preferences/preferences.dart'; -import '../../shared/primitives/blocking_action_mixin.dart'; -import '../../shared/ui/common_widgets.dart'; -import '../../shared/ui/tab.dart'; -import 'inspector_controller.dart'; -import 'inspector_screen_body.dart'; -import 'layout_explorer/layout_explorer.dart'; - -class InspectorDetails extends StatelessWidget { - const InspectorDetails({ - required this.detailsTree, - required this.controller, - super.key, - }); - - final Widget detailsTree; - final InspectorController controller; - - @override - Widget build(BuildContext context) { - final tabs = [ - ( - tab: _buildTab(tabName: InspectorDetailsViewType.layoutExplorer.key), - tabView: LayoutExplorerTab(controller: controller), - ), - ( - tab: _buildTab( - tabName: InspectorDetailsViewType.widgetDetailsTree.key, - trailing: InspectorExpandCollapseButtons(controller: controller), - ), - tabView: detailsTree, - ), - ]; - return ValueListenableBuilder( - valueListenable: preferences.inspector.defaultDetailsView, - builder: (BuildContext context, value, Widget? child) { - int defaultInspectorViewIndex = 0; - - if (preferences.inspector.defaultDetailsView.value == - InspectorDetailsViewType.widgetDetailsTree) { - defaultInspectorViewIndex = 1; - } - - return AnalyticsTabbedView( - tabs: tabs, - gaScreen: gac.inspector, - initialSelectedIndex: defaultInspectorViewIndex, - ); - }, - ); - } - - DevToolsTab _buildTab({required String tabName, Widget? trailing}) { - return DevToolsTab.create( - tabName: tabName, - gaPrefix: 'inspectorDetailsTab', - trailing: trailing, - ); - } -} - -class InspectorExpandCollapseButtons extends StatefulWidget { - const InspectorExpandCollapseButtons({super.key, required this.controller}); - - final InspectorController controller; - - @override - State createState() => - _InspectorExpandCollapseButtonsState(); -} - -class _InspectorExpandCollapseButtonsState - extends State - with BlockingActionMixin { - bool get enableButtons => !actionInProgress; - - @override - Widget build(BuildContext context) { - return Container( - alignment: Alignment.centerRight, - decoration: BoxDecoration( - border: Border(left: defaultBorderSide(Theme.of(context))), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.min, - children: [ - SizedBox( - child: GaDevToolsButton( - icon: Icons.unfold_more, - onPressed: enableButtons ? _onExpandClick : null, - label: 'Expand all', - minScreenWidthForText: - InspectorScreenBodyState.minScreenWidthForText, - gaScreen: gac.inspector, - gaSelection: gac.expandAll, - outlined: false, - ), - ), - const SizedBox(width: denseSpacing), - SizedBox( - child: GaDevToolsButton( - icon: Icons.unfold_less, - onPressed: enableButtons ? _onCollapseClick : null, - label: 'Collapse to selected', - minScreenWidthForText: - InspectorScreenBodyState.minScreenWidthForText, - gaScreen: gac.inspector, - gaSelection: gac.collapseAll, - outlined: false, - ), - ), - ], - ), - ); - } - - void _onExpandClick() { - unawaited( - blockWhileInProgress(() async { - ga.select(gac.inspector, gac.expandAll); - await widget.controller.expandAllNodesInDetailsTree(); - }), - ); - } - - void _onCollapseClick() { - ga.select(gac.inspector, gac.collapseAll); - widget.controller.collapseDetailsToSelected(); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/inspector_tree_controller.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_tree_controller.dart deleted file mode 100644 index 35b5d9b66cd..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/inspector_tree_controller.dart +++ /dev/null @@ -1,1331 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:async'; -import 'dart:collection'; -import 'dart:math'; - -import 'package:devtools_app_shared/ui.dart'; -import 'package:devtools_app_shared/utils.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:logging/logging.dart'; - -import '../../shared/analytics/analytics.dart' as ga; -import '../../shared/analytics/constants.dart' as gac; -import '../../shared/analytics/metrics.dart'; -import '../../shared/console/eval/inspector_tree.dart'; -import '../../shared/console/widgets/description.dart'; -import '../../shared/diagnostics/diagnostics_node.dart'; -import '../../shared/globals.dart'; -import '../../shared/managers/error_badge_manager.dart'; -import '../../shared/primitives/collapsible_mixin.dart'; -import '../../shared/primitives/diagnostics_text_styles.dart'; -import '../../shared/primitives/utils.dart'; -import '../../shared/ui/colors.dart'; -import '../../shared/ui/common_widgets.dart'; -import '../../shared/ui/search.dart'; -import '../../shared/ui/utils.dart'; -import '../../shared/utils/utils.dart'; -import 'inspector_breadcrumbs.dart'; -import 'inspector_controller.dart'; - -final _log = Logger('inspector_tree_controller'); - -/// Presents a [InspectorTreeNode]. -class _InspectorTreeRowWidget extends StatefulWidget { - /// Constructs a [_InspectorTreeRowWidget] that presents a line in the - /// Inspector tree. - const _InspectorTreeRowWidget({ - required super.key, - required this.row, - required this.inspectorTreeState, - this.error, - required this.scrollControllerX, - required this.viewportWidth, - }); - - final _InspectorTreeState inspectorTreeState; - - InspectorTreeNode get node => row.node; - final InspectorTreeRow row; - final ScrollController scrollControllerX; - final double viewportWidth; - - /// A [DevToolsError] that applies to the widget in this row. - /// - /// This will be null if there is no error for this row. - final DevToolsError? error; - - @override - _InspectorTreeRowState createState() => _InspectorTreeRowState(); -} - -class _InspectorTreeRowState extends State<_InspectorTreeRowWidget> - with TickerProviderStateMixin, CollapsibleAnimationMixin { - @override - Widget build(BuildContext context) { - return SizedBox( - height: inspectorRowHeight, - child: InspectorRowContent( - row: widget.row, - error: widget.error, - expandArrowAnimation: expandArrowAnimation, - controller: widget.inspectorTreeState.treeController!, - scrollControllerX: widget.scrollControllerX, - viewportWidth: widget.viewportWidth, - onToggle: () { - setExpanded(!isExpanded); - }, - ), - ); - } - - @override - bool get isExpanded => widget.node.isExpanded; - - @override - void onExpandChanged(bool expanded) { - setState(() { - final row = widget.row; - if (expanded) { - widget.inspectorTreeState.treeController!.onExpandRow(row); - } else { - widget.inspectorTreeState.treeController!.onCollapseRow(row); - } - }); - } - - @override - bool shouldShow() => widget.node.shouldShow; -} - -class InspectorTreeController extends DisposableController - with SearchControllerMixin { - InspectorTreeController({this.gaId}) { - init(); - } - - /// Clients the controller notifies to trigger changes to the UI. - final _clients = {}; - - /// Identifier used when sending Google Analytics about events in this - /// [InspectorTreeController]. - final int? gaId; - - InspectorTreeNode createNode() => InspectorTreeNode(); - - SearchTargetType _searchTarget = SearchTargetType.widget; - int _rootSetCount = 0; - - @override - void init() { - super.init(); - ga.select( - gac.inspector, - gac.inspectorTreeControllerInitialized, - nonInteraction: true, - screenMetricsProvider: () => InspectorScreenMetrics.legacy( - inspectorTreeControllerId: gaId, - rootSetCount: _rootSetCount, - rowCount: _root?.subtreeSize, - ), - ); - } - - void addClient(InspectorControllerClient value) { - final firstClient = _clients.isEmpty; - _clients.add(value); - if (firstClient) { - config.onClientActiveChange?.call(true); - } - } - - void removeClient(InspectorControllerClient value) { - _clients.remove(value); - if (_clients.isEmpty) { - config.onClientActiveChange?.call(false); - } - } - - // Method defined to avoid a direct Flutter dependency. - void setState(VoidCallback fn) { - fn(); - for (final client in _clients) { - client.onChanged(); - } - } - - void requestFocus() { - for (final client in _clients) { - client.requestFocus(); - } - } - - InspectorTreeNode? get root => _root; - InspectorTreeNode? _root; - - set root(InspectorTreeNode? node) { - if (disposed) return; - - setState(() { - _root = node; - _populateSearchableCachedRows(); - - ga.select( - gac.inspector, - gac.inspectorTreeControllerRootChange, - nonInteraction: true, - screenMetricsProvider: () => InspectorScreenMetrics.legacy( - inspectorTreeControllerId: gaId, - rootSetCount: ++_rootSetCount, - rowCount: _root?.subtreeSize, - ), - ); - }); - } - - InspectorTreeNode? get selection => _selection; - InspectorTreeNode? _selection; - - late final InspectorTreeConfig config; - - set selection(InspectorTreeNode? node) { - if (node == _selection) return; - - setState(() { - _selection?.selected = false; - _selection = node; - _selection?.selected = true; - final configLocal = config; - if (configLocal.onSelectionChange != null) { - configLocal.onSelectionChange!(); - } - }); - } - - InspectorTreeNode? get hover => _hover; - InspectorTreeNode? _hover; - - double? lastContentWidth; - - final cachedRows = []; - InspectorTreeRow? _cachedSelectedRow; - - /// All cached rows of the tree. - /// - /// Similar to [cachedRows] but: - /// * contains every row in the tree (including collapsed rows) - /// * items don't change when nodes are expanded or collapsed - /// * items are populated only when root is changed - final _searchableCachedRows = []; - - void setSearchTarget(SearchTargetType searchTarget) { - _searchTarget = searchTarget; - refreshSearchMatches(); - } - - // TODO: we should add a listener instead that clears the cache when the - // root is marked as dirty. - void _maybeClearCache() { - final rootLocal = root; - if (rootLocal != null && rootLocal.isDirty) { - cachedRows.clear(); - _cachedSelectedRow = null; - rootLocal.isDirty = false; - lastContentWidth = null; - } - } - - void _populateSearchableCachedRows() { - _searchableCachedRows.clear(); - for (int i = 0; i < numRows; i++) { - _searchableCachedRows.add(getCachedRow(i)); - } - } - - InspectorTreeRow? getCachedRow(int index) { - if (index < 0) return null; - - _maybeClearCache(); - while (cachedRows.length <= index) { - cachedRows.add(null); - } - cachedRows[index] ??= root?.getRow(index); - - final cachedRow = cachedRows[index]; - cachedRow?.isSearchMatch = - _searchableCachedRows.safeGet(index)?.isSearchMatch ?? false; - - if (cachedRow?.isSelected == true) { - _cachedSelectedRow = cachedRow; - } - return cachedRow; - } - - double getRowOffset(int index) { - return (getCachedRow(index)?.depth ?? 0) * inspectorColumnWidth; - } - - List getPathFromSelectedRowToRoot() { - final selectedItem = _cachedSelectedRow?.node; - if (selectedItem == null) return []; - - final pathToRoot = [selectedItem]; - InspectorTreeNode? nextParentNode = selectedItem.parent; - while (nextParentNode != null) { - pathToRoot.add(nextParentNode); - nextParentNode = nextParentNode.parent; - } - return pathToRoot.reversed.toList(); - } - - set hover(InspectorTreeNode? node) { - if (node == _hover) { - return; - } - setState(() { - _hover = node; - // TODO(jacobr): we could choose to repaint only a portion of the UI - }); - } - - void navigateUp() { - _navigateHelper(-1); - } - - void navigateDown() { - _navigateHelper(1); - } - - void navigateLeft() { - final selectionLocal = selection; - - // This logic is consistent with how IntelliJ handles tree navigation on - // on left arrow key press. - if (selectionLocal == null) { - _navigateHelper(-1); - return; - } - - if (selectionLocal.isExpanded) { - setState(() { - selectionLocal.isExpanded = false; - }); - return; - } - if (selectionLocal.parent != null) { - selection = selectionLocal.parent; - } - } - - void navigateRight() { - // This logic is consistent with how IntelliJ handles tree navigation on - // on right arrow key press. - - final selectionLocal = selection; - - if (selectionLocal == null || selectionLocal.isExpanded) { - _navigateHelper(1); - return; - } - - setState(() { - selectionLocal.isExpanded = true; - }); - } - - void _navigateHelper(int indexOffset) { - if (numRows == 0) return; - - if (selection == null) { - selection = root; - return; - } - - final rootLocal = root!; - - selection = rootLocal - .getRow( - (rootLocal.getRowIndex(selection!) + indexOffset).clamp( - 0, - numRows - 1, - ), - ) - ?.node; - } - - static const horizontalPadding = 10.0; - - double getDepthIndent(int depth) { - return (depth + 1) * inspectorColumnWidth + horizontalPadding; - } - - double rowYTop(int index) { - return inspectorRowHeight * index; - } - - void nodeChanged(InspectorTreeNode node) { - setState(() { - node.isDirty = true; - }); - } - - void removeNodeFromParent(InspectorTreeNode node) { - setState(() { - node.parent?.removeChild(node); - }); - } - - void appendChild(InspectorTreeNode node, InspectorTreeNode child) { - setState(() { - node.appendChild(child); - }); - } - - void expandPath(InspectorTreeNode? node) { - setState(() { - _expandPath(node); - }); - } - - void _expandPath(InspectorTreeNode? node) { - while (node != null) { - if (!node.isExpanded) { - node.isExpanded = true; - } - node = node.parent; - } - } - - void collapseToSelected() { - setState(() { - _collapseAllNodes(root!); - if (selection == null) return; - _expandPath(selection); - }); - } - - void _collapseAllNodes(InspectorTreeNode root) { - root.isExpanded = false; - root.children.forEach(_collapseAllNodes); - } - - int get numRows => root?.subtreeSize ?? 0; - - int getRowIndex(double y) => max(0, y ~/ inspectorRowHeight); - - InspectorTreeRow? getRowForNode(InspectorTreeNode node) { - final rootLocal = root; - if (rootLocal == null) return null; - return getCachedRow(rootLocal.getRowIndex(node)); - } - - InspectorTreeRow? getRow(Offset offset) { - final rootLocal = root; - if (rootLocal == null) return null; - final row = getRowIndex(offset.dy); - return row < rootLocal.subtreeSize ? getCachedRow(row) : null; - } - - void onExpandRow(InspectorTreeRow row) { - setState(() { - final onExpand = config.onExpand; - row.node.isExpanded = true; - if (onExpand != null) { - onExpand(row.node); - } - }); - } - - void onCollapseRow(InspectorTreeRow row) { - setState(() { - row.node.isExpanded = false; - }); - } - - void onSelectRow(InspectorTreeRow row) { - onSelectNode(row.node); - } - - void onSelectNode(InspectorTreeNode? node) { - selection = node; - ga.select( - gac.inspector, - gac.treeNodeSelection, - screenMetricsProvider: () => InspectorScreenMetrics.legacy(), - ); - expandPath(node); - } - - Rect getBoundingBox(InspectorTreeRow row) { - // For future reference: the bounding box likely needs to be in terms of - // positions after the current animations are complete so that computations - // to start animations to show specific widget scroll to where the target - // nodes will be displayed rather than where they are currently displayed. - final diagnostic = row.node.diagnostic; - // The node width is approximated since the widgets are not available at the - // time of calculating the bounding box. - final approximateNodeWidth = - DiagnosticsNodeDescription.approximateNodeWidth(diagnostic); - return Rect.fromLTWH( - getDepthIndent(row.depth), - rowYTop(row.index), - approximateNodeWidth, - inspectorRowHeight, - ); - } - - void scrollToRect(Rect targetRect) { - for (final client in _clients) { - client.scrollToRect(targetRect); - } - } - - /// Width each row in the tree should have ignoring its indent. - /// - /// Content in rows should wrap if it exceeds this width. - final rowWidth = 1200; - - /// Maximum indent of the tree in pixels. - double? _maxIndent; - - double get maxRowIndent { - if (lastContentWidth == null) { - double maxIndent = 0; - for (int i = 0; i < numRows; i++) { - final row = getCachedRow(i); - if (row != null) { - maxIndent = max(maxIndent, getDepthIndent(row.depth)); - } - } - lastContentWidth = maxIndent + maxIndent; - _maxIndent = maxIndent; - } - return _maxIndent!; - } - - void animateToTargets(List targets) { - Rect? targetRect; - - for (final target in targets) { - final row = getRowForNode(target); - if (row != null) { - final rowRect = getBoundingBox(row); - targetRect = targetRect == null - ? rowRect - : targetRect.expandToInclude(rowRect); - } - } - - if (targetRect == null || targetRect.isEmpty) return; - - scrollToRect(targetRect); - } - - bool expandPropertiesByDefault(DiagnosticsTreeStyle style) { - // This code matches the text style defaults for which styles are - // by default and which aren't. - switch (style) { - case DiagnosticsTreeStyle.none: - case DiagnosticsTreeStyle.singleLine: - case DiagnosticsTreeStyle.errorProperty: - return false; - - case DiagnosticsTreeStyle.sparse: - case DiagnosticsTreeStyle.offstage: - case DiagnosticsTreeStyle.dense: - case DiagnosticsTreeStyle.transition: - case DiagnosticsTreeStyle.error: - case DiagnosticsTreeStyle.whitespace: - case DiagnosticsTreeStyle.flat: - case DiagnosticsTreeStyle.shallow: - case DiagnosticsTreeStyle.truncateChildren: - return true; - } - } - - InspectorTreeNode setupInspectorTreeNode( - InspectorTreeNode node, - RemoteDiagnosticsNode diagnosticsNode, { - required bool expandChildren, - required bool expandProperties, - }) { - node.diagnostic = diagnosticsNode; - final configLocal = config; - if (configLocal.onNodeAdded != null) { - configLocal.onNodeAdded!(node, diagnosticsNode); - } - - if (diagnosticsNode.hasChildren || - diagnosticsNode.inlineProperties.isNotEmpty) { - if (diagnosticsNode.childrenReady || !diagnosticsNode.hasChildren) { - final styleIsMultiline = expandPropertiesByDefault( - diagnosticsNode.style, - ); - setupChildren( - diagnosticsNode, - node, - node.diagnostic!.childrenNow, - expandChildren: expandChildren && styleIsMultiline, - expandProperties: expandProperties && styleIsMultiline, - ); - } else { - node.clearChildren(); - node.appendChild(createNode()); - } - } - return node; - } - - void setupChildren( - RemoteDiagnosticsNode parent, - InspectorTreeNode treeNode, - List? children, { - required bool expandChildren, - required bool expandProperties, - }) { - treeNode.isExpanded = expandChildren; - if (treeNode.children.isNotEmpty) { - // Only case supported is this is the loading node. - assert(treeNode.children.length == 1); - removeNodeFromParent(treeNode.children.first); - } - final inlineProperties = parent.inlineProperties; - - for (final property in inlineProperties) { - appendChild( - treeNode, - setupInspectorTreeNode( - createNode(), - property, - // We are inside a property so only expand children if - // expandProperties is true. - expandChildren: expandProperties, - expandProperties: expandProperties, - ), - ); - } - if (children != null) { - for (final child in children) { - appendChild( - treeNode, - setupInspectorTreeNode( - createNode(), - child, - expandChildren: expandChildren, - expandProperties: expandProperties, - ), - ); - } - } - } - - Future maybePopulateChildren(InspectorTreeNode treeNode) async { - final diagnostic = treeNode.diagnostic; - if (diagnostic != null && - diagnostic.hasChildren && - (treeNode.hasPlaceholderChildren || treeNode.children.isEmpty)) { - try { - final children = await diagnostic.children; - if (treeNode.hasPlaceholderChildren || treeNode.children.isEmpty) { - setupChildren( - diagnostic, - treeNode, - children, - expandChildren: true, - expandProperties: false, - ); - nodeChanged(treeNode); - if (treeNode == selection) { - expandPath(treeNode); - } - } - } catch (e, st) { - _log.shout(e, e, st); - } - } - } - - /* Search support */ - @override - void onMatchChanged(int index) { - onSelectRow(searchMatches.value[index]); - } - - @override - Duration get debounceDelay => const Duration(milliseconds: 300); - - @override - List matchesForSearch( - String search, { - bool searchPreviousMatches = false, - }) { - final matches = []; - - if (searchPreviousMatches) { - final previousMatches = searchMatches.value; - for (final previousMatch in previousMatches) { - if (previousMatch.node.diagnostic!.searchValue.caseInsensitiveContains( - search, - )) { - matches.add(previousMatch); - } - } - - if (matches.isNotEmpty) return matches; - } - - int debugStatsSearchOps = 0; - final debugStatsWidgets = _searchableCachedRows.length; - - final inspectorService = serviceConnection.inspectorService; - if (search.isEmpty || - inspectorService == null || - inspectorService.isDisposed) { - assert(() { - debugPrint('Search completed, no search'); - return true; - }()); - return matches; - } - - assert(() { - debugPrint('Search started: $_searchTarget'); - return true; - }()); - - for (final row in _searchableCachedRows) { - final diagnostic = row!.node.diagnostic; - if (diagnostic == null) continue; - - // Widget search begin - if (_searchTarget == SearchTargetType.widget) { - debugStatsSearchOps++; - if (diagnostic.searchValue.caseInsensitiveContains(search)) { - matches.add(row); - continue; - } - } - // Widget search end - } - - assert(() { - debugPrint( - 'Search completed with $debugStatsWidgets widgets, $debugStatsSearchOps ops', - ); - return true; - }()); - - return matches; - } -} - -extension RemoteDiagnosticsNodeExtension on RemoteDiagnosticsNode { - String get searchValue { - final description = toStringShort(); - final textPreview = json['textPreview']; - return textPreview is String - ? '$description ${textPreview.replaceAll('\n', ' ')}' - : description; - } -} - -abstract class InspectorControllerClient { - void onChanged(); - - void scrollToRect(Rect rect); - - void requestFocus(); -} - -class InspectorTree extends StatefulWidget { - const InspectorTree({ - super.key, - required this.controller, - required this.treeController, - this.summaryTreeController, - this.isSummaryTree = false, - this.widgetErrors, - this.screenId, - }) : assert(isSummaryTree == (summaryTreeController == null)); - - final InspectorController controller; - - final InspectorTreeController? treeController; - - /// Stores the summary tree controller when this instance of [InspectorTree] - /// is for the details tree (i.e. when [isSummaryTree] is false). - /// - /// This value should be null when this instance of [InspectorTree] is for the - /// summary tree itself. - final InspectorTreeController? summaryTreeController; - - final bool isSummaryTree; - final LinkedHashMap? widgetErrors; - final String? screenId; - - @override - State createState() => _InspectorTreeState(); -} - -// AutomaticKeepAlive is necessary so that the tree does not get recreated when we switch tabs. -class _InspectorTreeState extends State - with - SingleTickerProviderStateMixin, - AutomaticKeepAliveClientMixin, - AutoDisposeMixin - implements InspectorControllerClient { - InspectorController get controller => widget.controller; - InspectorTreeController? get treeController => widget.treeController; - - late ScrollController _scrollControllerY; - late ScrollController _scrollControllerX; - Future? _currentAnimateY; - Rect? _currentAnimateTarget; - - AnimationController? _constraintDisplayController; - late FocusNode _focusNode; - - /// When autoscrolling, the number of rows to pad the target location with. - static const _scrollPadCount = 3; - - @override - void initState() { - super.initState(); - _scrollControllerX = ScrollController(); - _scrollControllerY = ScrollController(); - // TODO(devoncarew): Commented out as per flutter/devtools/pull/2001. - //_scrollControllerY.addListener(_onScrollYChange); - if (widget.isSummaryTree) { - _constraintDisplayController = longAnimationController(this); - } - _focusNode = FocusNode(debugLabel: 'inspector-tree'); - autoDisposeFocusNode(_focusNode); - final mainIsolateState = - serviceConnection.serviceManager.isolateManager.mainIsolateState; - if (mainIsolateState != null) { - callOnceWhenReady( - trigger: mainIsolateState.isPaused, - callback: _bindToController, - readyWhen: (triggerValue) => !triggerValue, - ); - } - } - - @override - void didUpdateWidget(InspectorTree oldWidget) { - final oldTreeController = oldWidget.treeController; - if (oldTreeController != widget.treeController) { - oldTreeController?.removeClient(this); - - // TODO(elliette): Figure out if we can remove this. See explanation: - // https://github.com/flutter/devtools/pull/1290/files#r342399899. - cancelListeners(); - - _bindToController(); - } - super.didUpdateWidget(oldWidget); - } - - @override - void dispose() { - treeController?.removeClient(this); - _scrollControllerX.dispose(); - _scrollControllerY.dispose(); - _constraintDisplayController?.dispose(); - super.dispose(); - } - - @override - void requestFocus() { - _focusNode.requestFocus(); - } - - // TODO(devoncarew): Commented out as per flutter/devtools/pull/2001. - // void _onScrollYChange() { - // if (controller == null) return; - // - // // If the vertical position is already being animated we should not trigger - // // a new animation of the horizontal position as a more direct animation of - // // the horizontal position has already been triggered. - // if (currentAnimateY != null) return; - // - // final x = _computeTargetX(_scrollControllerY.offset); - // _scrollControllerX.animateTo( - // x, - // duration: defaultDuration, - // curve: defaultCurve, - // ); - // } - - @override - Future scrollToRect(Rect rect) async { - if (rect == _currentAnimateTarget) { - // We are in the middle of an animation to this exact rectangle. - return; - } - - final initialX = rect.left; - final initialY = rect.top; - final yOffsetAtViewportTop = _scrollControllerY.hasClients - ? _scrollControllerY.offset - : _scrollControllerY.initialScrollOffset; - final xOffsetAtViewportLeft = _scrollControllerX.hasClients - ? _scrollControllerX.offset - : _scrollControllerX.initialScrollOffset; - - final viewPortInScrollControllerSpace = Rect.fromLTWH( - xOffsetAtViewportLeft, - yOffsetAtViewportTop, - safeViewportWidth, - safeViewportHeight, - ); - - final isRectInViewPort = - viewPortInScrollControllerSpace.contains(rect.topLeft) && - viewPortInScrollControllerSpace.contains(rect.bottomRight); - if (isRectInViewPort) { - // The rect is already in view, don't scroll - return; - } - - _currentAnimateTarget = rect; - - final targetY = _padTargetY(initialY: initialY); - if (_scrollControllerY.hasClients) { - _currentAnimateY = _scrollControllerY.animateTo( - targetY, - duration: longDuration, - curve: defaultCurve, - ); - } else { - _currentAnimateY = null; - _scrollControllerY = ScrollController(initialScrollOffset: targetY); - } - - final targetX = _padTargetX(initialX: initialX); - if (_scrollControllerX.hasClients) { - unawaited( - _scrollControllerX.animateTo( - targetX, - duration: longDuration, - curve: defaultCurve, - ), - ); - } else { - _scrollControllerX = ScrollController(initialScrollOffset: targetX); - } - - try { - await _currentAnimateY; - } catch (e) { - // Doesn't matter if the animation was cancelled. - } - _currentAnimateY = null; - _currentAnimateTarget = null; - } - - // TODO(jacobr): resolve cases where we need to know the viewport height - // before it is available so we don't need this approximation. - /// Placeholder viewport height to use if we don't yet know the real - /// viewport height. - static const _placeholderViewportSize = Size(1000.0, 1000.0); - - double get safeViewportHeight { - return _scrollControllerY.hasClients - ? _scrollControllerY.position.viewportDimension - : _placeholderViewportSize.height; - } - - double get safeViewportWidth { - return _scrollControllerX.hasClients - ? _scrollControllerX.position.viewportDimension - : _placeholderViewportSize.width; - } - - /// Pad [initialX] with the horizontal indentation of [padCount] rows. - double _padTargetX({ - required double initialX, - int padCount = _scrollPadCount, - }) { - return initialX - inspectorColumnWidth * padCount; - } - - /// Pad [initialY] so that a row would be placed in the vertical center of - /// the screen. - double _padTargetY({required double initialY}) { - return initialY - (safeViewportHeight / 2) + inspectorRowHeight / 2; - } - - /// Handle arrow keys for the InspectorTree. Ignore other key events so that - /// other widgets have a chance to respond to them. - KeyEventResult _handleKeyEvent(FocusNode _, KeyEvent event) { - if (!event.isKeyDownOrRepeat) return KeyEventResult.ignored; - - final treeControllerLocal = treeController!; - - if (event.logicalKey == LogicalKeyboardKey.arrowDown) { - treeControllerLocal.navigateDown(); - return KeyEventResult.handled; - } else if (event.logicalKey == LogicalKeyboardKey.arrowUp) { - treeControllerLocal.navigateUp(); - return KeyEventResult.handled; - } else if (event.logicalKey == LogicalKeyboardKey.arrowLeft) { - treeControllerLocal.navigateLeft(); - return KeyEventResult.handled; - } else if (event.logicalKey == LogicalKeyboardKey.arrowRight) { - treeControllerLocal.navigateRight(); - return KeyEventResult.handled; - } - - return KeyEventResult.ignored; - } - - void _bindToController() { - treeController?.addClient(this); - } - - @override - void onChanged() { - setState(() {}); - } - - @override - Widget build(BuildContext context) { - super.build(context); - final treeControllerLocal = treeController; - if (treeControllerLocal == null) { - // Indicate the tree is loading. - return const CenteredCircularProgressIndicator(); - } - if (treeControllerLocal.numRows == 0) { - // This works around a bug when Scrollbars are present on a short lived - // widget. - return const SizedBox(); - } - - if (!controller.firstInspectorTreeLoadCompleted && widget.isSummaryTree) { - final screenId = widget.screenId; - if (screenId != null) { - ga.timeEnd( - screenId, - gac.pageReady, - screenMetricsProvider: () => InspectorScreenMetrics.legacy( - rowCount: treeControllerLocal.numRows, - ), - ); - unawaited( - serviceConnection.sendDwdsEvent( - screen: screenId, - action: gac.pageReady, - ), - ); - } - controller.firstInspectorTreeLoadCompleted = true; - } - return LayoutBuilder( - builder: (context, constraints) { - final viewportWidth = constraints.maxWidth; - final tree = Scrollbar( - thumbVisibility: true, - controller: _scrollControllerX, - child: SingleChildScrollView( - scrollDirection: Axis.horizontal, - controller: _scrollControllerX, - child: ConstrainedBox( - constraints: BoxConstraints( - maxWidth: - treeControllerLocal.rowWidth + - treeControllerLocal.maxRowIndent, - ), - // TODO(kenz): this scrollbar needs to be sticky to the right side of - // the visible container - right now it is lined up to the right of - // the widest row (which is likely not visible). This may require some - // refactoring. - child: GestureDetector( - onTap: _focusNode.requestFocus, - child: Focus( - onKeyEvent: _handleKeyEvent, - autofocus: widget.isSummaryTree, - focusNode: _focusNode, - child: OffsetScrollbar( - isAlwaysShown: true, - axis: Axis.vertical, - controller: _scrollControllerY, - offsetController: _scrollControllerX, - offsetControllerViewportDimension: viewportWidth, - child: ListView.custom( - itemExtent: inspectorRowHeight, - childrenDelegate: SliverChildBuilderDelegate(( - context, - index, - ) { - if (index == treeControllerLocal.numRows) { - return const SizedBox(height: inspectorRowHeight); - } - final row = treeControllerLocal.getCachedRow(index)!; - final inspectorRef = row.node.diagnostic?.valueRef.id; - return _InspectorTreeRowWidget( - key: PageStorageKey(row.node), - inspectorTreeState: this, - row: row, - scrollControllerX: _scrollControllerX, - viewportWidth: viewportWidth, - error: - widget.widgetErrors != null && - inspectorRef != null - ? widget.widgetErrors![inspectorRef] - : null, - ); - }, childCount: treeControllerLocal.numRows + 1), - controller: _scrollControllerY, - ), - ), - ), - ), - ), - ), - ); - - final shouldShowBreadcrumbs = !widget.isSummaryTree; - if (shouldShowBreadcrumbs) { - final inspectorTreeController = widget.summaryTreeController!; - - final parents = inspectorTreeController - .getPathFromSelectedRowToRoot(); - return Column( - children: [ - InspectorBreadcrumbNavigator( - items: parents, - onTap: (node) => inspectorTreeController.onSelectNode(node), - ), - Expanded(child: tree), - ], - ); - } - - return tree; - }, - ); - } - - @override - bool get wantKeepAlive => true; -} - -Paint _defaultPaint(ColorScheme colorScheme) => Paint() - ..color = colorScheme.treeGuidelineColor - ..strokeWidth = chartLineStrokeWidth; - -/// Custom painter that draws lines indicating how parent and child rows are -/// connected to each other. -/// -/// Each rows object contains a list of ticks that indicate the x coordinates of -/// vertical lines connecting other rows need to be drawn within the vertical -/// area of the current row. This approach has the advantage that a row contains -/// all information required to render all content within it but has the -/// disadvantage that the x coordinates of each line connecting rows must be -/// computed in advance. -class _RowPainter extends CustomPainter { - _RowPainter(this.row, this._controller, this.colorScheme); - - final InspectorTreeController _controller; - final InspectorTreeRow row; - final ColorScheme colorScheme; - - @override - void paint(Canvas canvas, Size size) { - double currentX = 0; - final paint = _defaultPaint(colorScheme); - - final node = row.node; - final showExpandCollapse = node.showExpandCollapse; - for (final tick in row.ticks) { - currentX = _controller.getDepthIndent(tick) - inspectorColumnWidth * 0.5; - // Draw a vertical line for each tick identifying a connection between - // an ancestor of this node and some other node in the tree. - canvas.drawLine( - Offset(currentX, 0.0), - Offset(currentX, inspectorRowHeight), - paint, - ); - } - // If this row is itself connected to a parent then draw the L shaped line - // to make that connection. - if (row.lineToParent) { - currentX = - _controller.getDepthIndent(row.depth - 1) - - inspectorColumnWidth * 0.5; - final width = showExpandCollapse - ? inspectorColumnWidth * 0.5 - : inspectorColumnWidth; - canvas.drawLine( - Offset(currentX, 0.0), - Offset(currentX, inspectorRowHeight * 0.5), - paint, - ); - canvas.drawLine( - Offset(currentX, inspectorRowHeight * 0.5), - Offset(currentX + width, inspectorRowHeight * 0.5), - paint, - ); - } - } - - @override - bool shouldRepaint(CustomPainter oldDelegate) { - if (oldDelegate is _RowPainter) { - // TODO(jacobr): check whether the row has different ticks. - return oldDelegate.colorScheme.isLight != colorScheme.isLight; - } - return true; - } -} - -/// Widget defining the contents of a single row in the InspectorTree. -/// -/// This class defines the scaffolding around the rendering of the actual -/// content of a [RemoteDiagnosticsNode] provided by -/// [DiagnosticsNodeDescription] to provide a tree implementation with lines -/// drawn between parent and child nodes when nodes have multiple children. -/// -/// Changes to how the actual content of the node within the row should -/// be implemented by changing [DiagnosticsNodeDescription] instead. -class InspectorRowContent extends StatelessWidget { - const InspectorRowContent({ - super.key, - required this.row, - required this.controller, - required this.onToggle, - required this.expandArrowAnimation, - this.error, - required this.scrollControllerX, - required this.viewportWidth, - }); - - final InspectorTreeRow row; - final InspectorTreeController controller; - final VoidCallback onToggle; - final Animation expandArrowAnimation; - final ScrollController scrollControllerX; - final double viewportWidth; - - /// A [DevToolsError] that applies to the widget in this row. - /// - /// This will be null if there is no error for this row. - final DevToolsError? error; - - /// Whether this row has any error. - bool get hasError => error != null; - - @override - Widget build(BuildContext context) { - final currentX = - controller.getDepthIndent(row.depth) - inspectorColumnWidth; - final theme = Theme.of(context); - final colorScheme = theme.colorScheme; - - Color? backgroundColor; - if (row.isSelected) { - backgroundColor = hasError - ? colorScheme.errorContainer - : colorScheme.selectedRowBackgroundColor; - } - - final node = row.node; - - Widget rowWidget = Padding( - padding: EdgeInsets.only(left: currentX), - child: ValueListenableBuilder( - valueListenable: controller.searchNotifier, - builder: (context, searchValue, _) { - return Opacity( - opacity: searchValue.isEmpty || row.isSearchMatch ? 1 : 0.2, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - node.showExpandCollapse - ? InkWell( - onTap: onToggle, - child: RotationTransition( - turns: expandArrowAnimation, - child: const Icon( - Icons.expand_more, - size: defaultIconSize, - ), - ), - ) - : const SizedBox( - width: defaultSpacing, - height: defaultSpacing, - ), - Expanded( - child: Container( - color: backgroundColor, - child: InkWell( - onTap: () { - controller.onSelectRow(row); - // TODO(gmoothart): It may be possible to capture the tap - // and request focus directly from the InspectorTree. Then - // we wouldn't need this. - controller.requestFocus(); - }, - child: SizedBox( - height: inspectorRowHeight, - child: DiagnosticsNodeDescription( - node.diagnostic, - isSelected: row.isSelected, - searchValue: searchValue, - errorText: error?.errorMessage, - nodeDescriptionHighlightStyle: - searchValue.isEmpty || !row.isSearchMatch - ? DiagnosticsTextStyles.regular( - Theme.of(context).colorScheme, - ) - : row.isSelected - ? theme.searchMatchHighlightStyleFocused - : theme.searchMatchHighlightStyle, - ), - ), - ), - ), - ), - ], - ), - ); - }, - ), - ); - - // Wrap with tooltip if there is an error for this node's widget. - if (hasError) { - rowWidget = DevToolsTooltip( - message: error!.errorMessage, - child: rowWidget, - ); - } - - return CustomPaint( - painter: _RowPainter(row, controller, colorScheme), - size: Size(currentX, inspectorRowHeight), - child: Align( - alignment: Alignment.topLeft, - child: AnimatedBuilder( - animation: scrollControllerX, - builder: (context, child) { - final rowWidth = - scrollControllerX.offset + viewportWidth - defaultSpacing; - return SizedBox( - width: max(rowWidth, currentX + 100), - child: rowWidth > currentX ? child : const SizedBox(), - ); - }, - child: rowWidget, - ), - ), - ); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/box/box.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/box/box.dart deleted file mode 100644 index ff579921994..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/box/box.dart +++ /dev/null @@ -1,446 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:async'; -import 'dart:math' as math; - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -import '../../../../shared/diagnostics/diagnostics_node.dart'; -import '../../../../shared/primitives/math_utils.dart'; -import '../../../../shared/primitives/utils.dart'; -import '../../inspector_data_models.dart'; -import '../ui/free_space.dart'; -import '../ui/layout_explorer_widget.dart'; -import '../ui/theme.dart'; -import '../ui/utils.dart'; -import '../ui/widget_constraints.dart'; -import '../ui/widgets_theme.dart'; - -/// Layout visualizer for a widget with a box-layout. -class BoxLayoutExplorerWidget extends LayoutExplorerWidget { - const BoxLayoutExplorerWidget(super.inspectorController, {super.key}); - - static bool shouldDisplay(RemoteDiagnosticsNode _) { - // Pretend this layout explorer is always available. This layout explorer - // will gracefully fall back to an error message if the required properties - // are not needed. - // TODO(jacobr) pass a RemoteDiagnosticsNode to this method that contains - // the layout explorer related supplemental properties so that we can - // accurately determine whether the widget uses box layout. - return true; - } - - @override - State createState() => - BoxLayoutExplorerWidgetState(); -} - -class BoxLayoutExplorerWidgetState - extends - LayoutExplorerWidgetState { - @override - RemoteDiagnosticsNode? getRoot(RemoteDiagnosticsNode? node) { - final nodeLocal = node; - if (nodeLocal == null) return null; - if (!shouldDisplay(nodeLocal)) return null; - return node; - } - - @override - bool shouldDisplay(RemoteDiagnosticsNode node) { - final selectedNodeLocal = selectedNode; - if (selectedNodeLocal == null) return false; - return BoxLayoutExplorerWidget.shouldDisplay(selectedNodeLocal); - } - - @override - AnimatedLayoutProperties computeAnimatedProperties( - LayoutProperties nextProperties, - ) { - return AnimatedLayoutProperties( - // If an animation is in progress, freeze it and start animating from there, else start a fresh animation from widget.properties. - animatedProperties?.copyWith() ?? properties!, - nextProperties, - changeAnimation, - ); - } - - @override - LayoutProperties computeLayoutProperties(RemoteDiagnosticsNode node) => - LayoutProperties(node); - - @override - void updateHighlighted(LayoutProperties? newProperties) { - setState(() { - // This implementation will need to change if we support showing more than - // a single widget in the box visualization for the layout explorer. - highlighted = newProperties != null && selectedNode == newProperties.node - ? newProperties - : null; - }); - } - - @override - Widget build(BuildContext context) { - if (properties == null) { - final selectedNodeLocal = selectedNode; - return Center( - child: Text( - '${selectedNodeLocal?.description ?? 'Widget'} has no layout properties to display.', - textAlign: TextAlign.center, - overflow: TextOverflow.clip, - ), - ); - } - return Container( - margin: const EdgeInsets.all(denseSpacing), - child: AnimatedBuilder( - animation: changeController, - builder: (context, _) { - return LayoutBuilder(builder: _buildLayout); - }, - ), - ); - } - - /// Simplistic layout algorithm to roughly match minFraction restrictions for - /// each sizes attempting to render a stylized version of the original layout. - /// TODO(jacobr): see if we can unify with the stylized version of the overall - /// layout used for Flex. Our constraints are quite different as we can - /// guarantee that the entire layout fits without scrolling while in the Flex - /// case that would be difficult. - /// - /// The overall layout will expand to use the full availableSize treating null - /// values in [sizes] as an indication that the items should have zero size. - /// On the other hand, a non-null size indicates that the minFractions - /// constraints should be obeyed. This is needed to ensure that negative sizes - /// are visualized reasonably. - /// The minFractions aren't exactly obeyed but they are approximated in a way - /// that keeps this algorithm simple and has the nice property that an initial - /// value much smaller than the minSize results in a slightly smaller value - /// than a value that is almost minSize. - /// In the most extreme case an item will get not minFraction but will instead - /// get the slightly smaller value of minFraction / (1 + minFraction) - /// which is close enough for the simple values we need this for. - static List minFractionLayout({ - required double availableSize, - required List sizes, - required List minFractions, - }) { - assert(sizes.length == minFractions.length); - final length = sizes.length; - double total = 1.0; // This isn't set to zero to avoid divide by zero bugs. - final fractions = minFractions.toList(); - for (final size in sizes) { - if (size != null) { - total += math.max(0, size); - } - } - - double totalFraction = 0.0; - for (int i = 0; i < length; i++) { - final size = sizes[i]; - if (size != null) { - fractions[i] = math.max(size / total, minFractions[i]); - totalFraction += fractions[i]; - } else { - fractions[i] = 0.0; - } - } - if (totalFraction != 1.0) { - for (int i = 0; i < length; i++) { - fractions[i] = fractions[i] / totalFraction; - } - } - final output = []; - for (final fraction in fractions) { - output.add(fraction * availableSize); - } - return output; - } - - Widget _buildChild(BuildContext context) { - final propertiesLocal = properties!; - - final theme = Theme.of(context); - final colorScheme = theme.colorScheme; - final parentProperties = - this.parentProperties ?? - propertiesLocal; // Fall back to this node's properties if there is no parent. - - final parentSize = parentProperties.size; - final offset = propertiesLocal.node.parentData; - - return LayoutBuilder( - builder: (BuildContext context, BoxConstraints constraints) { - // Subtract out one pixel border on each side. - final availableHeight = constraints.maxHeight - 2; - final availableWidth = constraints.maxWidth - 2; - - final minFractions = [0.2, 0.5, 0.2]; - // TODO(polinach, jacobr): consider using zeros for zero values, - // without replacing them with nulls. - // See https://github.com/flutter/devtools/issues/3931. - double? nullOutZero(double value) => value != 0.0 ? value : null; - final widths = [ - nullOutZero(offset.offset.dx), - propertiesLocal.size.width, - nullOutZero( - parentSize.width - (propertiesLocal.size.width + offset.offset.dx), - ), - ]; - final heights = [ - nullOutZero(offset.offset.dy), - propertiesLocal.size.height, - nullOutZero( - parentSize.height - - (propertiesLocal.size.height + offset.offset.dy), - ), - ]; - // 3 element array with [left padding, widget width, right padding]. - final displayWidths = minFractionLayout( - availableSize: availableWidth, - sizes: widths, - minFractions: minFractions, - ); - // 3 element array with [top padding, widget height, bottom padding]. - final displayHeights = minFractionLayout( - availableSize: availableHeight, - sizes: heights, - minFractions: minFractions, - ); - final widgetWidth = displayWidths[1]; - final widgetHeight = displayHeights[1]; - final safeParentSize = parentSize; - final width0 = widths[0]; - final width2 = widths[2]; - final height0 = heights[0]; - final height2 = heights[2]; - return Container( - width: constraints.maxWidth, - height: constraints.maxHeight, - decoration: BoxDecoration( - border: Border.all( - color: WidgetTheme.fromName( - propertiesLocal.node.description, - ).color, - ), - ), - child: Stack( - children: [ - LayoutExplorerBackground(colorScheme: colorScheme), - // Left padding. - if (width0 != null) - PaddingVisualizerWidget( - RenderProperties( - axis: Axis.horizontal, - size: Size(displayWidths[0], widgetHeight), - offset: Offset(0, displayHeights[0]), - realSize: Size(width0, safeParentSize.height), - layoutProperties: propertiesLocal, - isFreeSpace: true, - ), - horizontal: true, - ), - // Top padding. - if (height0 != null) - PaddingVisualizerWidget( - RenderProperties( - axis: Axis.horizontal, - size: Size(widgetWidth, displayHeights[0]), - offset: Offset(displayWidths[0], 0), - realSize: Size(safeParentSize.width, height0), - layoutProperties: propertiesLocal, - isFreeSpace: true, - ), - horizontal: false, - ), - // Right padding. - if (width2 != null) - PaddingVisualizerWidget( - RenderProperties( - axis: Axis.horizontal, - size: Size(displayWidths[2], widgetHeight), - offset: Offset( - displayWidths[0] + displayWidths[1], - displayHeights[0], - ), - realSize: Size(width2, safeParentSize.height), - layoutProperties: propertiesLocal, - isFreeSpace: true, - ), - horizontal: true, - ), - // Bottom padding. - if (height2 != null) - PaddingVisualizerWidget( - RenderProperties( - axis: Axis.horizontal, - size: Size(widgetWidth, displayHeights[2]), - offset: Offset( - displayWidths[0], - displayHeights[0] + displayHeights[1], - ), - realSize: Size(safeParentSize.width, height2), - layoutProperties: propertiesLocal, - isFreeSpace: true, - ), - horizontal: false, - ), - BoxChildVisualizer( - isSelected: true, - state: this, - layoutProperties: propertiesLocal, - renderProperties: RenderProperties( - axis: Axis.horizontal, - size: Size(widgetWidth, widgetHeight), - offset: Offset(displayWidths[0], displayHeights[0]), - realSize: propertiesLocal.size, - layoutProperties: propertiesLocal, - ), - ), - ], - ), - ); - }, - ); - } - - LayoutProperties? get parentProperties { - final parentElement = properties?.node.parentRenderElement; - if (parentElement == null) return null; - return computeLayoutProperties(parentElement); - } - - Widget _buildLayout(BuildContext context, BoxConstraints constraints) { - final maxHeight = constraints.maxHeight; - final maxWidth = constraints.maxWidth; - - Widget widget = _buildChild(context); - final parentProperties = this.parentProperties; - if (parentProperties != null) { - // Wrap with a widget visualizer for the parent if there is a valid parent. - widget = WidgetVisualizer( - // TODO(jacobr): this node's name can be misleading more often than - // in the flex case the widget doesn't have its own RenderObject. - // Consider showing the true ancestor for the summary tree that first - // has a different render object. - title: describeBoxName(parentProperties), - largeTitle: true, - layoutProperties: parentProperties, - isSelected: false, - child: VisualizeWidthAndHeightWithConstraints( - properties: parentProperties, - warnIfUnconstrained: false, - child: Padding( - padding: const EdgeInsets.all(denseSpacing), - child: widget, - ), - ), - ); - } - return Container( - constraints: BoxConstraints(maxWidth: maxWidth, maxHeight: maxHeight), - child: widget, - ); - } -} - -String describeBoxName(LayoutProperties properties) { - // Displaying a high quality name is more ambiguous for the Box case than the - // Flex case because the RenderObject for each widget is often quite - // different than the user expected as not all widgets have RenderObjects. - // As a compromise we currently show 'WidgetName - RenderObjectName'. - // This is clearer but risks more confusion - - // Widget name. - var title = properties.node.description ?? ''; - final renderDescription = properties.node.renderObject?.description; - // TODO(jacobr): consider de-emphasizing the render object name by putting it - // in more transparent text or just calling the widget Parent instead of - // surfacing a widget name. - if (renderDescription != null) { - // Name of the associated RenderObject if one is available. - title += ' - $renderDescription'; - } - return title; -} - -/// Widget that represents and visualize a direct child of Flex widget. -class BoxChildVisualizer extends StatelessWidget { - const BoxChildVisualizer({ - super.key, - required this.state, - required this.layoutProperties, - required this.renderProperties, - required this.isSelected, - }); - - final BoxLayoutExplorerWidgetState state; - - final bool isSelected; - final LayoutProperties layoutProperties; - final RenderProperties renderProperties; - - LayoutProperties? get properties => renderProperties.layoutProperties; - - @override - Widget build(BuildContext context) { - final renderSize = renderProperties.size; - final renderOffset = renderProperties.offset; - - Widget buildEntranceAnimation(BuildContext _, Widget? child) { - final size = renderSize; - // TODO(jacobr): does this entrance animation really add value. - return Opacity( - opacity: min([state.entranceCurve.value * 5, 1.0]), - child: Padding( - padding: EdgeInsets.symmetric( - horizontal: math.max(0.0, (renderSize.width - size.width) / 2), - vertical: math.max(0.0, (renderSize.height - size.height) / 2), - ), - child: child, - ), - ); - } - - final propertiesLocal = properties!; - - return Positioned( - top: renderOffset.dy, - left: renderOffset.dx, - child: InkWell( - onTap: () => unawaited(state.onTap(propertiesLocal)), - onDoubleTap: () => state.onDoubleTap(propertiesLocal), - child: SizedBox( - width: safePositiveDouble(renderSize.width), - height: safePositiveDouble(renderSize.height), - child: AnimatedBuilder( - animation: state.entranceController, - builder: buildEntranceAnimation, - child: WidgetVisualizer( - isSelected: isSelected, - layoutProperties: layoutProperties, - title: describeBoxName(propertiesLocal), - // TODO(jacobr): consider surfacing the overflow size information - // if we determine - // overflowSide: properties.overflowSide, - - // We only show one child at a time so a large title is safe. - largeTitle: true, - child: VisualizeWidthAndHeightWithConstraints( - arrowHeadSize: arrowHeadSize, - properties: propertiesLocal, - warnIfUnconstrained: false, - child: const SizedBox.shrink(), - ), - ), - ), - ), - ), - ); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/flex.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/flex.dart deleted file mode 100644 index c00d352397b..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/flex.dart +++ /dev/null @@ -1,777 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:async'; -import 'dart:math' as math; - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -import '../../../../shared/diagnostics/diagnostics_node.dart'; -import '../../../../shared/diagnostics/inspector_service.dart'; -import '../../../../shared/primitives/math_utils.dart'; -import '../../../../shared/ui/common_widgets.dart'; -import '../../inspector_data_models.dart'; -import '../ui/arrow.dart'; -import '../ui/free_space.dart'; -import '../ui/layout_explorer_widget.dart'; -import '../ui/theme.dart'; -import '../ui/utils.dart'; -import '../ui/widget_constraints.dart'; -import 'utils.dart'; - -// TODO(kenz): clean up this file so that we use helper widgets instead of -// methods that pass around build context. - -// TODO(kenz): densify the layout explorer visualization for flex widgets. - -const alignmentDropdownMaxSize = 140.0; - -class FlexLayoutExplorerWidget extends LayoutExplorerWidget { - const FlexLayoutExplorerWidget(super.inspectorController, {super.key}); - - static bool shouldDisplay(RemoteDiagnosticsNode node) { - return (node.isFlex) || (node.parent?.isFlex ?? false); - } - - @override - State createState() => - FlexLayoutExplorerWidgetState(); -} - -class FlexLayoutExplorerWidgetState - extends - LayoutExplorerWidgetState< - FlexLayoutExplorerWidget, - FlexLayoutProperties - > { - final scrollController = ScrollController(); - - Axis get direction => properties!.direction; - - ObjectGroup? get objectGroup => - properties!.node.objectGroupApi as ObjectGroup?; - - Color horizontalColor(ColorScheme colorScheme) => - properties!.isMainAxisHorizontal - ? colorScheme.mainAxisColor - : colorScheme.crossAxisColor; - - Color verticalColor(ColorScheme colorScheme) => properties!.isMainAxisVertical - ? colorScheme.mainAxisColor - : colorScheme.crossAxisColor; - - Color horizontalTextColor(ColorScheme colorScheme) => - properties!.isMainAxisHorizontal - ? colorScheme.mainAxisTextColor - : colorScheme.crossAxisTextColor; - - Color verticalTextColor(ColorScheme colorScheme) => - properties!.isMainAxisVertical - ? colorScheme.mainAxisTextColor - : colorScheme.crossAxisTextColor; - - String get flexType => properties!.type; - - @override - RemoteDiagnosticsNode? getRoot(RemoteDiagnosticsNode? node) { - if (node == null) return null; - if (!shouldDisplay(node)) return null; - if (node.isFlex) return node; - return node.parent; - } - - @override - bool shouldDisplay(RemoteDiagnosticsNode node) { - final selectedNodeLocal = selectedNode; - if (selectedNodeLocal == null) return false; - return FlexLayoutExplorerWidget.shouldDisplay(selectedNodeLocal); - } - - @override - AnimatedFlexLayoutProperties computeAnimatedProperties( - FlexLayoutProperties nextProperties, - ) { - return AnimatedFlexLayoutProperties( - // If an animation is in progress, freeze it and start animating from there, else start a fresh animation from widget.properties. - animatedProperties?.copyWith() as FlexLayoutProperties? ?? properties!, - nextProperties, - changeAnimation, - ); - } - - @override - FlexLayoutProperties computeLayoutProperties(RemoteDiagnosticsNode node) => - FlexLayoutProperties.fromDiagnostics(node); - - @override - void updateHighlighted(FlexLayoutProperties? newProperties) { - setState(() { - if (selectedNode!.isFlex) { - highlighted = newProperties; - } else { - final idx = - selectedNode?.parent?.childrenNow.indexOf(selectedNode!) ?? -1; - if (newProperties == null) return; - if (idx != -1) highlighted = newProperties.children[idx]; - } - }); - } - - Widget _buildAxisAlignmentDropdown(Axis axis, ThemeData theme) { - final colorScheme = theme.colorScheme; - final color = axis == direction - ? colorScheme.mainAxisTextColor - : colorScheme.crossAxisTextColor; - List alignmentEnumEntries; - Object? selected; - final propertiesLocal = properties!; - if (axis == direction) { - alignmentEnumEntries = MainAxisAlignment.values; - selected = propertiesLocal.mainAxisAlignment; - } else { - alignmentEnumEntries = CrossAxisAlignment.values.toList(growable: true); - if (propertiesLocal.textBaseline == null) { - // TODO(albertusangga): Look for ways to visualize baseline when it is null - alignmentEnumEntries.remove(CrossAxisAlignment.baseline); - } - selected = propertiesLocal.crossAxisAlignment; - } - return RotatedBox( - quarterTurns: axis == Axis.vertical ? 3 : 0, - child: Container( - constraints: const BoxConstraints( - maxWidth: alignmentDropdownMaxSize, - maxHeight: defaultButtonHeight, - ), - child: DropdownButton( - value: selected, - isDense: true, - isExpanded: true, - // Avoid showing an underline for the main axis and cross-axis drop downs. - underline: const SizedBox(), - iconEnabledColor: axis == propertiesLocal.direction - ? colorScheme.mainAxisColor - : colorScheme.crossAxisColor, - selectedItemBuilder: (context) { - return [ - for (final alignment in alignmentEnumEntries) - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: Text( - alignment.name, - style: theme.regularTextStyleWithColor(color), - textAlign: TextAlign.center, - overflow: TextOverflow.ellipsis, - ), - ), - SizedBox( - height: actionsIconSize, - width: actionsIconSize, - child: Image.asset( - (axis == direction) - ? mainAxisAssetImageUrl( - direction, - alignment as MainAxisAlignment, - ) - : crossAxisAssetImageUrl( - direction, - alignment as CrossAxisAlignment, - ), - height: axisAlignmentAssetImageHeight, - fit: BoxFit.fitHeight, - color: color, - ), - ), - ], - ), - ]; - }, - items: [ - for (final alignment in alignmentEnumEntries) - DropdownMenuItem( - value: alignment, - child: Container( - padding: const EdgeInsets.symmetric(vertical: margin), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Expanded( - child: Text( - alignment.name, - style: theme.regularTextStyleWithColor(color), - textAlign: TextAlign.center, - overflow: TextOverflow.ellipsis, - ), - ), - SizedBox( - height: actionsIconSize, - width: actionsIconSize, - child: Image.asset( - (axis == direction) - ? mainAxisAssetImageUrl( - direction, - alignment as MainAxisAlignment, - ) - : crossAxisAssetImageUrl( - direction, - alignment as CrossAxisAlignment, - ), - fit: BoxFit.fitHeight, - color: color, - ), - ), - ], - ), - ), - ), - ], - onChanged: (Object? newSelection) async { - // newSelection is an object instead of type here because - // the type is dependent on the `axis` parameter - // if the axis is the main axis the type should be [MainAxisAlignment] - // if the axis is the cross axis the type should be [CrossAxisAlignment] - FlexLayoutProperties changedProperties; - changedProperties = axis == direction - ? propertiesLocal.copyWith( - mainAxisAlignment: newSelection as MainAxisAlignment?, - ) - : propertiesLocal.copyWith( - crossAxisAlignment: newSelection as CrossAxisAlignment?, - ); - final valueRef = propertiesLocal.node.valueRef; - markAsDirty(); - await objectGroup!.invokeSetFlexProperties( - valueRef, - changedProperties.mainAxisAlignment, - changedProperties.crossAxisAlignment, - ); - }, - ), - ), - ); - } - - @override - Widget build(BuildContext context) { - if (properties == null) return const SizedBox(); - return Container( - margin: const EdgeInsets.all(margin), - padding: const EdgeInsets.only(bottom: margin, right: margin), - child: AnimatedBuilder( - animation: changeController, - builder: (context, _) { - return LayoutBuilder(builder: _buildLayout); - }, - ), - ); - } - - Widget _buildLayout(BuildContext context, BoxConstraints constraints) { - final theme = Theme.of(context); - final colorScheme = theme.colorScheme; - final maxHeight = constraints.maxHeight; - final maxWidth = constraints.maxWidth; - final propertiesLocal = properties!; - final flexDescription = Align( - alignment: Alignment.centerLeft, - child: Container( - margin: const EdgeInsets.only( - top: mainAxisArrowIndicatorSize, - left: crossAxisArrowIndicatorSize + margin, - ), - child: InkWell( - onTap: () => unawaited(onTap(propertiesLocal)), - child: WidgetVisualizer( - title: flexType, - layoutProperties: propertiesLocal, - isSelected: highlighted == properties, - overflowSide: propertiesLocal.overflowSide, - hint: Container( - padding: const EdgeInsets.all(4.0), - child: Text( - 'Total Flex Factor: ${propertiesLocal.totalFlex.toInt()}', - style: theme.regularTextStyleWithColor(emphasizedTextColor), - overflow: TextOverflow.ellipsis, - ), - ), - child: VisualizeFlexChildren( - state: this, - properties: propertiesLocal, - children: children, - highlighted: highlighted, - scrollController: scrollController, - direction: direction, - ), - ), - ), - ), - ); - - final verticalAxisDescription = Align( - alignment: Alignment.bottomLeft, - child: Container( - margin: const EdgeInsets.only(top: mainAxisArrowIndicatorSize + margin), - width: crossAxisArrowIndicatorSize, - child: Column( - children: [ - Expanded( - child: ArrowWrapper.unidirectional( - arrowColor: verticalColor(colorScheme), - type: ArrowType.down, - child: Truncateable( - truncate: maxHeight <= minHeightToAllowTruncating, - child: RotatedBox( - quarterTurns: 3, - child: Text( - propertiesLocal.verticalDirectionDescription, - overflow: TextOverflow.ellipsis, - textAlign: TextAlign.center, - style: theme.regularTextStyleWithColor( - verticalTextColor(colorScheme), - ), - ), - ), - ), - ), - ), - Truncateable( - truncate: maxHeight <= minHeightToAllowTruncating, - child: _buildAxisAlignmentDropdown(Axis.vertical, theme), - ), - ], - ), - ), - ); - - final horizontalAxisDescription = Align( - alignment: Alignment.topRight, - child: Container( - margin: const EdgeInsets.only( - left: crossAxisArrowIndicatorSize + margin, - ), - height: mainAxisArrowIndicatorSize, - child: Row( - children: [ - Expanded( - child: ArrowWrapper.unidirectional( - arrowColor: horizontalColor(colorScheme), - type: ArrowType.right, - child: Truncateable( - truncate: maxWidth <= minWidthToAllowTruncating, - child: Text( - propertiesLocal.horizontalDirectionDescription, - overflow: TextOverflow.ellipsis, - textAlign: TextAlign.center, - style: theme.regularTextStyleWithColor( - horizontalTextColor(colorScheme), - ), - ), - ), - ), - ), - Truncateable( - truncate: maxWidth <= minWidthToAllowTruncating, - child: _buildAxisAlignmentDropdown(Axis.horizontal, theme), - ), - ], - ), - ), - ); - - return Container( - constraints: BoxConstraints(maxWidth: maxWidth, maxHeight: maxHeight), - child: Stack( - children: [ - flexDescription, - verticalAxisDescription, - horizontalAxisDescription, - ], - ), - ); - } -} - -class VisualizeFlexChildren extends StatefulWidget { - const VisualizeFlexChildren({ - super.key, - required this.state, - required this.properties, - required this.children, - required this.highlighted, - required this.scrollController, - required this.direction, - }); - - final FlexLayoutProperties properties; - final List children; - final LayoutProperties? highlighted; - final ScrollController scrollController; - final Axis direction; - final FlexLayoutExplorerWidgetState state; - - @override - State createState() => _VisualizeFlexChildrenState(); -} - -class _VisualizeFlexChildrenState extends State { - LayoutProperties? lastHighlighted; - static final selectedChildKey = GlobalKey(debugLabel: 'selectedChild'); - - @override - Widget build(BuildContext context) { - if (lastHighlighted != widget.highlighted) { - lastHighlighted = widget.highlighted; - if (widget.highlighted != null) { - WidgetsBinding.instance.addPostFrameCallback((_) { - final selectedRenderObject = selectedChildKey.currentContext - ?.findRenderObject(); - if (selectedRenderObject != null && - widget.scrollController.hasClients) { - unawaited( - widget.scrollController.position.ensureVisible( - selectedRenderObject, - alignment: 0.5, - duration: defaultDuration, - ), - ); - } - }); - } - } - - if (!widget.properties.hasChildren) { - return const CenteredMessage(message: 'No Children'); - } - - final theme = Theme.of(context); - final colorScheme = theme.colorScheme; - - final contents = Container( - decoration: BoxDecoration( - border: Border.all(color: theme.primaryColorLight), - ), - margin: const EdgeInsets.only(top: margin, left: margin), - child: LayoutBuilder( - builder: (context, constraints) { - final maxWidth = constraints.maxWidth; - final maxHeight = constraints.maxHeight; - - double maxSizeAvailable(Axis axis) { - return axis == Axis.horizontal ? maxWidth : maxHeight; - } - - final childrenAndMainAxisSpacesRenderProps = widget.properties - .childrenRenderProperties( - smallestRenderWidth: minRenderWidth, - largestRenderWidth: defaultMaxRenderWidth, - smallestRenderHeight: minRenderHeight, - largestRenderHeight: defaultMaxRenderHeight, - maxSizeAvailable: maxSizeAvailable, - ); - - final renderProperties = childrenAndMainAxisSpacesRenderProps - .where((renderProps) => !renderProps.isFreeSpace) - .toList(); - final mainAxisSpaces = childrenAndMainAxisSpacesRenderProps - .where((renderProps) => renderProps.isFreeSpace) - .toList(); - final crossAxisSpaces = widget.properties.crossAxisSpaces( - childrenRenderProperties: renderProperties, - maxSizeAvailable: maxSizeAvailable, - ); - - final childrenRenderWidgets = []; - Widget? selectedWidget; - for (var i = 0; i < widget.children.length; i++) { - final child = widget.children[i]; - final isSelected = widget.highlighted == child; - - final visualizer = FlexChildVisualizer( - key: isSelected ? selectedChildKey : null, - state: widget.state, - layoutProperties: child, - isSelected: isSelected, - renderProperties: renderProperties[i], - ); - - if (isSelected) { - selectedWidget = visualizer; - } else { - childrenRenderWidgets.add(visualizer); - } - } - - // Selected widget needs to be last to draw its border over other children - if (selectedWidget != null) { - childrenRenderWidgets.add(selectedWidget); - } - - final freeSpacesWidgets = [ - for (final renderProperties in [ - ...mainAxisSpaces, - ...crossAxisSpaces, - ]) - FreeSpaceVisualizerWidget(renderProperties), - ]; - return Scrollbar( - thumbVisibility: true, - controller: widget.scrollController, - child: SingleChildScrollView( - scrollDirection: widget.properties.direction, - controller: widget.scrollController, - child: ConstrainedBox( - constraints: BoxConstraints( - minWidth: maxWidth, - minHeight: maxHeight, - maxWidth: widget.direction == Axis.horizontal - ? sum( - childrenAndMainAxisSpacesRenderProps.map( - (renderSize) => renderSize.width, - ), - ) - : maxWidth, - maxHeight: widget.direction == Axis.vertical - ? sum( - childrenAndMainAxisSpacesRenderProps.map( - (renderSize) => renderSize.height, - ), - ) - : maxHeight, - ).normalize(), - child: Stack( - children: [ - LayoutExplorerBackground(colorScheme: colorScheme), - ...freeSpacesWidgets, - ...childrenRenderWidgets, - ], - ), - ), - ), - ); - }, - ), - ); - return VisualizeWidthAndHeightWithConstraints( - properties: widget.properties, - child: contents, - ); - } -} - -/// Widget that represents and visualize a direct child of Flex widget. -class FlexChildVisualizer extends StatelessWidget { - const FlexChildVisualizer({ - super.key, - required this.state, - required this.layoutProperties, - required this.renderProperties, - required this.isSelected, - }); - - final FlexLayoutExplorerWidgetState state; - - final bool isSelected; - - final LayoutProperties layoutProperties; - - final RenderProperties renderProperties; - - // TODO(polina-c, jacob314): consider refactoring to remove `!`. - FlexLayoutProperties get root => state.properties!; - - LayoutProperties get properties => renderProperties.layoutProperties; - - ObjectGroup? get objectGroup => - properties.node.objectGroupApi as ObjectGroup?; - - void onChangeFlexFactor(int? newFlexFactor) async { - state.markAsDirty(); - await objectGroup!.invokeSetFlexFactor( - properties.node.valueRef, - newFlexFactor, - ); - } - - void onChangeFlexFit(FlexFit? newFlexFit) async { - state.markAsDirty(); - await objectGroup!.invokeSetFlexFit(properties.node.valueRef, newFlexFit!); - } - - Widget _buildFlexFactorChangerDropdown( - int maximumFlexFactor, - ThemeData theme, - ) { - final propertiesLocal = properties; - - Widget buildMenuitemChild(int? flexFactor) { - return Text( - 'flex: $flexFactor', - style: flexFactor == propertiesLocal.flexFactor - ? theme.boldTextStyle.copyWith(color: emphasizedTextColor) - : theme.regularTextStyleWithColor(emphasizedTextColor), - ); - } - - DropdownMenuItem buildMenuItem(int? flexFactor) { - return DropdownMenuItem( - value: flexFactor, - child: buildMenuitemChild(flexFactor), - ); - } - - return DropdownButton( - value: propertiesLocal.flexFactor?.toInt().clamp(0, maximumFlexFactor), - onChanged: onChangeFlexFactor, - iconEnabledColor: textColor, - underline: buildUnderline(), - items: >[ - buildMenuItem(null), - for (var i = 0; i <= maximumFlexFactor; ++i) buildMenuItem(i), - ], - ); - } - - Widget _buildFlexFitChangerDropdown(ThemeData theme) { - Widget flexFitDescription(FlexFit flexFit) => Text( - 'fit: ${flexFit.name}', - style: theme.regularTextStyleWithColor(emphasizedTextColor), - ); - - final propertiesLocal = properties; - - // Disable FlexFit changer if widget is Expanded. - if (propertiesLocal.description == 'Expanded') { - return flexFitDescription(FlexFit.tight); - } - - DropdownMenuItem buildMenuItem(FlexFit flexFit) { - return DropdownMenuItem( - value: flexFit, - child: flexFitDescription(flexFit), - ); - } - - return DropdownButton( - value: propertiesLocal.flexFit, - onChanged: onChangeFlexFit, - underline: buildUnderline(), - iconEnabledColor: emphasizedTextColor, - items: >[ - buildMenuItem(FlexFit.loose), - if (propertiesLocal.description != 'Expanded') - buildMenuItem(FlexFit.tight), - ], - ); - } - - Widget _buildContent(ThemeData theme) { - // TODO(https://github.com/flutter/devtools/issues/4058) allow more dynamic - // flex factor input - final currentFlexFactor = properties.flexFactor?.toInt() ?? 0; - final currentMaxFlexFactor = math.max( - currentFlexFactor, - maximumFlexFactorOptions, - ); - - return Container( - margin: const EdgeInsets.only(top: margin, left: margin), - child: Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Flexible( - child: _buildFlexFactorChangerDropdown(currentMaxFlexFactor, theme), - ), - if (!properties.hasFlexFactor) - Text( - 'unconstrained ${root.isMainAxisHorizontal ? 'horizontal' : 'vertical'}', - style: theme.regularTextStyle.copyWith( - color: theme.colorScheme.unconstrainedColor, - fontStyle: FontStyle.italic, - ), - maxLines: 2, - softWrap: true, - overflow: TextOverflow.ellipsis, - textScaler: const TextScaler.linear(smallTextScaleFactor), - textAlign: TextAlign.center, - ), - _buildFlexFitChangerDropdown(theme), - ], - ), - ); - } - - @override - Widget build(BuildContext context) { - final renderSize = renderProperties.size; - final renderOffset = renderProperties.offset; - final propertiesLocal = properties; - final rootLocal = root; - - Widget buildEntranceAnimation(BuildContext _, Widget? child) { - final vertical = rootLocal.isMainAxisVertical; - final horizontal = rootLocal.isMainAxisHorizontal; - - late Size size; - size = propertiesLocal.hasFlexFactor - ? SizeTween( - begin: Size( - horizontal ? minRenderWidth - entranceMargin : renderSize.width, - vertical ? minRenderHeight - entranceMargin : renderSize.height, - ), - end: renderSize, - ).evaluate(state.entranceCurve)! - : renderSize; - // Not-expanded widgets enter much faster. - return Opacity( - opacity: min([state.entranceCurve.value * 5, 1.0]), - child: Padding( - padding: EdgeInsets.symmetric( - horizontal: math.max(0.0, (renderSize.width - size.width) / 2), - vertical: math.max(0.0, (renderSize.height - size.height) / 2), - ), - child: child, - ), - ); - } - - return Positioned( - top: renderOffset.dy, - left: renderOffset.dx, - child: GestureDetector( - onTap: () => unawaited(state.onTap(propertiesLocal)), - onDoubleTap: () => state.onDoubleTap(propertiesLocal), - onLongPress: () => state.onDoubleTap(propertiesLocal), - child: SizedBox( - width: renderSize.width, - height: renderSize.height, - child: AnimatedBuilder( - animation: state.entranceController, - builder: buildEntranceAnimation, - child: WidgetVisualizer( - isSelected: isSelected, - layoutProperties: layoutProperties, - title: propertiesLocal.description ?? '', - overflowSide: propertiesLocal.overflowSide, - child: VisualizeWidthAndHeightWithConstraints( - arrowHeadSize: arrowHeadSize, - properties: propertiesLocal, - child: Align( - alignment: Alignment.topRight, - child: _buildContent(Theme.of(context)), - ), - ), - ), - ), - ), - ), - ); - } - - /// define the number of flex factor to be shown in the flex dropdown button - /// for example if it's set to 5 the dropdown will consist of 6 items (null and 0..5) - static const maximumFlexFactorOptions = 5; -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/utils.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/utils.dart deleted file mode 100644 index cc3b2019ca3..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/utils.dart +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:ui'; - -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; - -import '../../inspector_data_models.dart'; -import '../ui/utils.dart'; - -String crossAxisAssetImageUrl(Axis direction, CrossAxisAlignment alignment) { - return 'assets/img/layout_explorer/cross_axis_alignment/' - '${direction.flexType.toLowerCase()}_${alignment.name}.png'; -} - -String mainAxisAssetImageUrl(Axis direction, MainAxisAlignment alignment) { - return 'assets/img/layout_explorer/main_axis_alignment/' - '${direction.flexType.toLowerCase()}_${alignment.name}.png'; -} - -class AnimatedFlexLayoutProperties - extends AnimatedLayoutProperties - implements FlexLayoutProperties { - AnimatedFlexLayoutProperties(super.begin, super.end, super.animation); - - @override - CrossAxisAlignment? get crossAxisAlignment => end.crossAxisAlignment; - - @override - MainAxisAlignment? get mainAxisAlignment => end.mainAxisAlignment; - - @override - List childrenRenderProperties({ - required double smallestRenderWidth, - required double largestRenderWidth, - required double smallestRenderHeight, - required double largestRenderHeight, - required double Function(Axis) maxSizeAvailable, - }) { - final beginRenderProperties = begin.childrenRenderProperties( - smallestRenderHeight: smallestRenderHeight, - smallestRenderWidth: smallestRenderWidth, - largestRenderHeight: largestRenderHeight, - largestRenderWidth: largestRenderWidth, - maxSizeAvailable: maxSizeAvailable, - ); - final endRenderProperties = end.childrenRenderProperties( - smallestRenderHeight: smallestRenderHeight, - smallestRenderWidth: smallestRenderWidth, - largestRenderHeight: largestRenderHeight, - largestRenderWidth: largestRenderWidth, - maxSizeAvailable: maxSizeAvailable, - ); - final result = []; - for (var i = 0; i < children.length; i++) { - final beginProps = beginRenderProperties[i]; - final endProps = endRenderProperties[i]; - final t = animation.value; - result.add( - RenderProperties( - axis: endProps.axis, - offset: Offset.lerp(beginProps.offset, endProps.offset, t), - size: Size.lerp(beginProps.size, endProps.size, t), - realSize: Size.lerp(beginProps.realSize, endProps.realSize, t), - layoutProperties: AnimatedLayoutProperties( - beginProps.layoutProperties, - endProps.layoutProperties, - animation, - ), - ), - ); - } - // Add in the free space from the end. - // TODO(djshuckerow): We should make free space a part of - // RenderProperties so that we can animate between those. - result.addAll(endRenderProperties.where((prop) => prop.isFreeSpace)); - return result; - } - - @override - double get crossAxisDimension => lerpDouble( - begin.crossAxisDimension, - end.crossAxisDimension, - animation.value, - )!; - - @override - Axis get crossAxisDirection => end.crossAxisDirection; - - @override - List crossAxisSpaces({ - required List childrenRenderProperties, - required double Function(Axis) maxSizeAvailable, - }) { - return end.crossAxisSpaces( - childrenRenderProperties: childrenRenderProperties, - maxSizeAvailable: maxSizeAvailable, - ); - } - - @override - Axis get direction => end.direction; - - @override - String get horizontalDirectionDescription => - end.horizontalDirectionDescription; - - @override - bool get isMainAxisHorizontal => end.isMainAxisHorizontal; - - @override - bool get isMainAxisVertical => end.isMainAxisVertical; - - @override - double get mainAxisDimension => lerpDouble( - begin.mainAxisDimension, - end.mainAxisDimension, - animation.value, - )!; - - @override - MainAxisSize? get mainAxisSize => end.mainAxisSize; - - @override - TextBaseline? get textBaseline => end.textBaseline; - - @override - TextDirection get textDirection => end.textDirection; - - @override - double get totalFlex => - lerpDouble(begin.totalFlex, end.totalFlex, animation.value)!; - - @override - String get type => end.type; - - @override - VerticalDirection get verticalDirection => end.verticalDirection; - - @override - String get verticalDirectionDescription => end.verticalDirectionDescription; - - /// Returns a frozen copy of these FlexLayoutProperties that does not animate. - /// - /// Useful for interrupting an animation with a transition to another [FlexLayoutProperties]. - @override - FlexLayoutProperties copyWith({ - Size? size, - List? children, - BoxConstraints? constraints, - bool? isFlex, - String? description, - num? flexFactor, - FlexFit? flexFit, - Axis? direction, - MainAxisAlignment? mainAxisAlignment, - MainAxisSize? mainAxisSize, - CrossAxisAlignment? crossAxisAlignment, - TextDirection? textDirection, - VerticalDirection? verticalDirection, - TextBaseline? textBaseline, - }) { - return FlexLayoutProperties( - size: size ?? this.size, - children: children ?? this.children, - node: node, - constraints: constraints ?? this.constraints, - isFlex: isFlex ?? this.isFlex, - description: description ?? this.description, - flexFactor: flexFactor ?? this.flexFactor, - direction: direction ?? this.direction, - mainAxisAlignment: mainAxisAlignment ?? this.mainAxisAlignment, - mainAxisSize: mainAxisSize ?? this.mainAxisSize, - crossAxisAlignment: crossAxisAlignment ?? this.crossAxisAlignment, - textDirection: textDirection ?? this.textDirection, - verticalDirection: verticalDirection ?? this.verticalDirection, - textBaseline: textBaseline ?? this.textBaseline, - ); - } - - @override - bool get startIsTopLeft => end.startIsTopLeft; -} - -/// LayoutProperties extension to be reused on LayoutProperties and AnimatedLayoutProperties - -extension AxisExtension on Axis { - String get flexType { - switch (this) { - case Axis.horizontal: - return 'Row'; - case Axis.vertical: - return 'Column'; - } - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/layout_explorer.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/layout_explorer.dart deleted file mode 100644 index 116a3c6c849..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/layout_explorer.dart +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app_shared/utils.dart'; -import 'package:flutter/widgets.dart'; - -import '../../../shared/diagnostics/diagnostics_node.dart'; -import '../inspector_controller.dart'; -import '../layout_explorer/box/box.dart'; -import '../layout_explorer/flex/flex.dart'; - -/// Tab that acts as a proxy to decide which widget to be displayed -class LayoutExplorerTab extends StatefulWidget { - const LayoutExplorerTab({super.key, required this.controller}); - - final InspectorController controller; - - @override - State createState() => _LayoutExplorerTabState(); -} - -class _LayoutExplorerTabState extends State - with AutomaticKeepAliveClientMixin, AutoDisposeMixin { - InspectorController get controller => widget.controller; - - RemoteDiagnosticsNode? get selected => - controller.selectedNode.value?.diagnostic; - - RemoteDiagnosticsNode? previousSelection; - - Widget rootWidget(RemoteDiagnosticsNode? node) { - if (node != null && FlexLayoutExplorerWidget.shouldDisplay(node)) { - return FlexLayoutExplorerWidget(controller); - } - if (node != null && BoxLayoutExplorerWidget.shouldDisplay(node)) { - return BoxLayoutExplorerWidget(controller); - } - return Center( - child: Text( - node != null - ? 'Currently, Layout Explorer only supports Box and Flex-based widgets.' - : 'Select a widget to view its layout.', - textAlign: TextAlign.center, - overflow: TextOverflow.clip, - ), - ); - } - - void onSelectionChanged() { - if (rootWidget(previousSelection).runtimeType != - rootWidget(selected).runtimeType) { - setState(() => previousSelection = selected); - } - } - - @override - void initState() { - super.initState(); - addAutoDisposeListener(controller.selectedNode, onSelectionChanged); - } - - @override - Widget build(BuildContext context) { - super.build(context); - return rootWidget(selected); - } - - @override - bool get wantKeepAlive => true; -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/arrow.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/arrow.dart deleted file mode 100644 index 7fcf002900a..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/arrow.dart +++ /dev/null @@ -1,280 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:math'; - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -const defaultArrowColor = Colors.white; -const defaultArrowStrokeWidth = 2.0; -const defaultDistanceToArrow = 4.0; - -enum ArrowType { up, left, right, down } - -Axis axis(ArrowType type) => (type == ArrowType.up || type == ArrowType.down) - ? Axis.vertical - : Axis.horizontal; - -/// Widget that draws a bidirectional arrow around another widget. -/// -/// This widget is typically used to help draw diagrams. -@immutable -class ArrowWrapper extends StatelessWidget { - ArrowWrapper.unidirectional({ - super.key, - this.child, - required ArrowType type, - this.arrowColor = defaultArrowColor, - double? arrowHeadSize, - this.arrowStrokeWidth = defaultArrowStrokeWidth, - this.childMarginFromArrow = defaultDistanceToArrow, - }) : assert(childMarginFromArrow > 0.0), - direction = axis(type), - isBidirectional = false, - startArrowType = type, - endArrowType = type, - arrowHeadSize = arrowHeadSize ?? defaultIconSize; - - const ArrowWrapper.bidirectional({ - super.key, - this.child, - required this.direction, - this.arrowColor = defaultArrowColor, - required this.arrowHeadSize, - this.arrowStrokeWidth = defaultArrowStrokeWidth, - this.childMarginFromArrow = defaultDistanceToArrow, - }) : assert(arrowHeadSize >= 0.0), - assert(childMarginFromArrow >= 0.0), - isBidirectional = true, - startArrowType = direction == Axis.horizontal - ? ArrowType.left - : ArrowType.up, - endArrowType = direction == Axis.horizontal - ? ArrowType.right - : ArrowType.down; - - final Color arrowColor; - final double arrowHeadSize; - final double arrowStrokeWidth; - final Widget? child; - - final Axis direction; - final double childMarginFromArrow; - - final bool isBidirectional; - final ArrowType startArrowType; - final ArrowType endArrowType; - - double get verticalMarginFromArrow { - if (child == null || direction == Axis.horizontal) return 0.0; - return childMarginFromArrow; - } - - double get horizontalMarginFromArrow { - if (child == null || direction == Axis.vertical) return 0.0; - return childMarginFromArrow; - } - - @override - Widget build(BuildContext context) { - return Flex( - direction: direction, - children: [ - Expanded( - child: Container( - margin: EdgeInsets.only( - bottom: verticalMarginFromArrow, - right: horizontalMarginFromArrow, - ), - child: ArrowWidget( - color: arrowColor, - headSize: arrowHeadSize, - strokeWidth: arrowStrokeWidth, - type: startArrowType, - shouldDrawHead: isBidirectional - ? true - : (startArrowType == ArrowType.left || - startArrowType == ArrowType.up), - ), - ), - ), - if (child != null) child!, - Expanded( - child: Container( - margin: EdgeInsets.only( - top: verticalMarginFromArrow, - left: horizontalMarginFromArrow, - ), - child: ArrowWidget( - color: arrowColor, - headSize: arrowHeadSize, - strokeWidth: arrowStrokeWidth, - type: endArrowType, - shouldDrawHead: isBidirectional - ? true - : (endArrowType == ArrowType.right || - endArrowType == ArrowType.down), - ), - ), - ), - ], - ); - } -} - -/// Widget that draws a fully sized, centered, unidirectional arrow according to its constraints -@immutable -class ArrowWidget extends StatelessWidget { - ArrowWidget({ - this.color = defaultArrowColor, - required this.headSize, - super.key, - this.shouldDrawHead = true, - this.strokeWidth = defaultArrowStrokeWidth, - required this.type, - }) : assert(headSize > 0.0), - assert(strokeWidth > 0.0), - _painter = _ArrowPainter( - headSize: headSize, - color: color, - strokeWidth: strokeWidth, - type: type, - shouldDrawHead: shouldDrawHead, - ); - - final Color color; - - /// The arrow head is a Equilateral triangle - final double headSize; - - final double strokeWidth; - - final ArrowType type; - - final CustomPainter _painter; - - final bool shouldDrawHead; - - @override - Widget build(BuildContext context) { - return CustomPaint(painter: _painter, child: Container()); - } -} - -class _ArrowPainter extends CustomPainter { - _ArrowPainter({ - required this.headSize, - this.strokeWidth = defaultArrowStrokeWidth, - this.color = defaultArrowColor, - this.shouldDrawHead = true, - required this.type, - }) : // the height of an equilateral triangle - headHeight = 0.5 * sqrt(3) * headSize; - - final Color color; - final double headSize; - final bool shouldDrawHead; - final double strokeWidth; - final ArrowType type; - - final double headHeight; - - bool headIsGreaterThanConstraint(Size size) { - if (type == ArrowType.left || type == ArrowType.right) { - return headHeight >= (size.width); - } - return headHeight >= (size.height); - } - - @override - bool shouldRepaint(CustomPainter oldDelegate) => - !(oldDelegate is _ArrowPainter && - headSize == oldDelegate.headSize && - strokeWidth == oldDelegate.strokeWidth && - color == oldDelegate.color && - type == oldDelegate.type); - - @override - void paint(Canvas canvas, Size size) { - final paint = Paint() - ..color = color - ..strokeWidth = strokeWidth; - - final originX = size.width / 2, originY = size.height / 2; - Offset lineStartingPoint = Offset.zero; - Offset lineEndingPoint = Offset.zero; - - if (!headIsGreaterThanConstraint(size) && shouldDrawHead) { - Offset p1, p2, p3; - final headSizeDividedBy2 = headSize / 2; - switch (type) { - case ArrowType.up: - p1 = Offset(originX, 0); - p2 = Offset(originX - headSizeDividedBy2, headHeight); - p3 = Offset(originX + headSizeDividedBy2, headHeight); - break; - case ArrowType.left: - p1 = Offset(0, originY); - p2 = Offset(headHeight, originY - headSizeDividedBy2); - p3 = Offset(headHeight, originY + headSizeDividedBy2); - break; - case ArrowType.right: - final startingX = size.width - headHeight; - p1 = Offset(size.width, originY); - p2 = Offset(startingX, originY - headSizeDividedBy2); - p3 = Offset(startingX, originY + headSizeDividedBy2); - break; - case ArrowType.down: - final startingY = size.height - headHeight; - p1 = Offset(originX, size.height); - p2 = Offset(originX - headSizeDividedBy2, startingY); - p3 = Offset(originX + headSizeDividedBy2, startingY); - break; - } - final path = Path() - ..moveTo(p1.dx, p1.dy) - ..lineTo(p2.dx, p2.dy) - ..lineTo(p3.dx, p3.dy) - ..close(); - canvas.drawPath(path, paint); - - switch (type) { - case ArrowType.up: - lineStartingPoint = Offset(originX, headHeight); - lineEndingPoint = Offset(originX, size.height); - break; - case ArrowType.left: - lineStartingPoint = Offset(headHeight, originY); - lineEndingPoint = Offset(size.width, originY); - break; - case ArrowType.right: - final arrowHeadStartingX = size.width - headHeight; - lineStartingPoint = Offset(0, originY); - lineEndingPoint = Offset(arrowHeadStartingX, originY); - break; - case ArrowType.down: - final headStartingY = size.height - headHeight; - lineStartingPoint = Offset(originX, 0); - lineEndingPoint = Offset(originX, headStartingY); - break; - } - } else { - // draw full line - switch (type) { - case ArrowType.up: - case ArrowType.down: - lineStartingPoint = Offset(originX, 0); - lineEndingPoint = Offset(originX, size.height); - break; - case ArrowType.left: - case ArrowType.right: - lineStartingPoint = Offset(0, originY); - lineEndingPoint = Offset(size.width, originY); - break; - } - } - canvas.drawLine(lineStartingPoint, lineEndingPoint, paint); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/dimension.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/dimension.dart deleted file mode 100644 index cc5e40cc5df..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/dimension.dart +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:flutter/material.dart'; - -import 'theme.dart'; - -/// Text widget for displaying width / height. -Widget dimensionDescription( - TextSpan description, - bool overflow, - ColorScheme colorScheme, -) { - final text = Text.rich( - description, - textAlign: TextAlign.center, - style: overflow - ? overflowingDimensionIndicatorTextStyle(colorScheme) - : dimensionIndicatorTextStyle, - overflow: TextOverflow.ellipsis, - ); - if (overflow) { - return Container( - padding: const EdgeInsets.symmetric( - vertical: minPadding, - horizontal: overflowTextHorizontalPadding, - ), - decoration: BoxDecoration( - color: colorScheme.overflowBackgroundColor, - borderRadius: BorderRadius.circular(4.0), - ), - child: Center(child: text), - ); - } - return text; -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/free_space.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/free_space.dart deleted file mode 100644 index d515ed554fc..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/free_space.dart +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -import '../../../../shared/primitives/utils.dart'; -import '../../inspector_data_models.dart'; -import 'arrow.dart'; -import 'dimension.dart'; -import 'theme.dart'; - -class FreeSpaceVisualizerWidget extends StatelessWidget { - const FreeSpaceVisualizerWidget(this.renderProperties, {super.key}); - - final RenderProperties renderProperties; - - @override - Widget build(BuildContext context) { - final colorScheme = Theme.of(context).colorScheme; - final heightDescription = - 'h=${toStringAsFixed(renderProperties.realHeight)}'; - final widthDescription = 'w=${toStringAsFixed(renderProperties.realWidth)}'; - final showWidth = - renderProperties.realWidth != renderProperties.layoutProperties.width; - final widthWidget = Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Flexible( - child: dimensionDescription( - TextSpan(text: widthDescription), - false, - colorScheme, - ), - ), - Container( - margin: const EdgeInsets.symmetric(vertical: arrowMargin), - child: const ArrowWrapper.bidirectional( - arrowColor: widthIndicatorColor, - direction: Axis.horizontal, - arrowHeadSize: arrowHeadSize, - ), - ), - ], - ); - final heightWidget = SizedBox( - width: heightOnlyIndicatorSize, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Flexible( - child: dimensionDescription( - TextSpan(text: heightDescription), - false, - colorScheme, - ), - ), - Container( - margin: const EdgeInsets.symmetric(horizontal: arrowMargin), - child: const ArrowWrapper.bidirectional( - arrowColor: heightIndicatorColor, - direction: Axis.vertical, - arrowHeadSize: arrowHeadSize, - childMarginFromArrow: 0.0, - ), - ), - ], - ), - ); - return Positioned( - top: renderProperties.offset.dy, - left: renderProperties.offset.dx, - child: SizedBox( - width: renderProperties.width, - height: renderProperties.height, - child: DevToolsTooltip( - message: '$widthDescription\n$heightDescription', - child: showWidth ? widthWidget : heightWidget, - ), - ), - ); - } -} - -class PaddingVisualizerWidget extends StatelessWidget { - const PaddingVisualizerWidget( - this.renderProperties, { - required this.horizontal, - super.key, - }); - - final RenderProperties renderProperties; - final bool horizontal; - - @override - Widget build(BuildContext context) { - final colorScheme = Theme.of(context).colorScheme; - final heightDescription = - 'h=${toStringAsFixed(renderProperties.realHeight)}'; - final widthDescription = 'w=${toStringAsFixed(renderProperties.realWidth)}'; - final widthWidget = Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Flexible( - child: dimensionDescription( - TextSpan(text: widthDescription), - false, - colorScheme, - ), - ), - Container( - margin: const EdgeInsets.symmetric(vertical: arrowMargin), - child: const ArrowWrapper.bidirectional( - arrowColor: widthIndicatorColor, - direction: Axis.horizontal, - arrowHeadSize: arrowHeadSize, - ), - ), - ], - ); - final heightWidget = SizedBox( - width: heightOnlyIndicatorSize, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Flexible( - child: dimensionDescription( - TextSpan(text: heightDescription), - false, - colorScheme, - ), - ), - Container( - margin: const EdgeInsets.symmetric(horizontal: arrowMargin), - child: const ArrowWrapper.bidirectional( - arrowColor: heightIndicatorColor, - direction: Axis.vertical, - arrowHeadSize: arrowHeadSize, - childMarginFromArrow: 0.0, - ), - ), - ], - ), - ); - return Positioned( - top: renderProperties.offset.dy, - left: renderProperties.offset.dx, - child: SizedBox( - width: safePositiveDouble(renderProperties.width), - height: safePositiveDouble(renderProperties.height), - child: horizontal ? widthWidget : heightWidget, - ), - ); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/layout_explorer_widget.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/layout_explorer_widget.dart deleted file mode 100644 index ac4229c49b7..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/layout_explorer_widget.dart +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:async'; - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; - -import '../../../../shared/diagnostics/diagnostics_node.dart'; -import '../../../../shared/diagnostics/inspector_service.dart'; -import '../../../../shared/globals.dart'; -import '../../../../shared/primitives/utils.dart'; -import '../../inspector_controller.dart'; -import '../../inspector_data_models.dart'; -import 'utils.dart'; - -const maxRequestsPerSecond = 3.0; - -/// Base class for layout widgets for all widget types. -abstract class LayoutExplorerWidget extends StatefulWidget { - const LayoutExplorerWidget(this.inspectorController, {super.key}); - - final InspectorController inspectorController; -} - -/// Base class for state objects for layout widgets for all widget types. -abstract class LayoutExplorerWidgetState< - W extends LayoutExplorerWidget, - L extends LayoutProperties -> - extends State - with TickerProviderStateMixin - implements InspectorServiceClient { - LayoutExplorerWidgetState() { - _onSelectionChangedCallback = onSelectionChanged; - } - - late AnimationController entranceController; - late CurvedAnimation entranceCurve; - late AnimationController changeController; - - late CurvedAnimation changeAnimation; - - L? _previousProperties; - - L? _properties; - - InspectorObjectGroupManager? objectGroupManager; - - AnimatedLayoutProperties? get animatedProperties => _animatedProperties; - AnimatedLayoutProperties? _animatedProperties; - - L? get properties => - _previousProperties ?? _animatedProperties as L? ?? _properties; - - RemoteDiagnosticsNode? get selectedNode => - inspectorController.selectedNode.value?.diagnostic; - - InspectorController get inspectorController => widget.inspectorController; - - InspectorService? get inspectorService => - serviceConnection.inspectorService as InspectorService?; - - late RateLimiter rateLimiter; - - late Future Function() _onSelectionChangedCallback; - - Future onSelectionChanged() async { - if (!mounted) return; - final selectedNodeLocal = selectedNode; - if (selectedNodeLocal == null) return; - if (!shouldDisplay(selectedNodeLocal)) return; - final prevRootId = id(_properties?.node); - final newRootId = id(getRoot(selectedNodeLocal)); - final shouldFetch = prevRootId != newRootId; - if (shouldFetch) { - _dirty = false; - final newSelection = await fetchLayoutProperties(); - _setProperties(newSelection); - } else { - updateHighlighted(_properties); - } - } - - /// Whether this layout explorer can work with this kind of node. - bool shouldDisplay(RemoteDiagnosticsNode node); - - List get children => properties!.displayChildren; - - LayoutProperties? highlighted; - - /// Returns the root widget to show. - /// - /// For cases such as Flex widgets or in the future ListView widgets we may - /// want to show the layout for all widgets under a root that is the parent - /// of the current widget. - RemoteDiagnosticsNode? getRoot(RemoteDiagnosticsNode? node); - - Future fetchLayoutProperties() async { - objectGroupManager?.cancelNext(); - final manager = objectGroupManager!; - final nextObjectGroup = manager.next; - final node = await nextObjectGroup.getLayoutExplorerNode( - getRoot(selectedNode), - ); - if (node == null || node.renderObject == null) return null; - - if (!nextObjectGroup.disposed) { - assert(manager.next == nextObjectGroup); - manager.promoteNext(); - } - return computeLayoutProperties(node); - } - - L computeLayoutProperties(RemoteDiagnosticsNode node); - - AnimatedLayoutProperties computeAnimatedProperties(L nextProperties); - - void updateHighlighted(L? newProperties); - - String? id(RemoteDiagnosticsNode? node) => node?.valueRef.id; - - void _registerInspectorControllerService() { - inspectorController.selectedNode.addListener(_onSelectionChangedCallback); - inspectorService?.addClient(this); - } - - void _unregisterInspectorControllerService() { - inspectorController.selectedNode.removeListener( - _onSelectionChangedCallback, - ); - inspectorService?.removeClient(this); - } - - @override - void initState() { - super.initState(); - rateLimiter = RateLimiter(maxRequestsPerSecond, refresh); - _registerInspectorControllerService(); - _initAnimationStates(); - _updateObjectGroupManager(); - // TODO(jacobr): put inspector controller in Controllers and - // update on didChangeDependencies. - _animateProperties(); - } - - @override - void didUpdateWidget(W oldWidget) { - super.didUpdateWidget(oldWidget); - _updateObjectGroupManager(); - _animateProperties(); - if (oldWidget.inspectorController != inspectorController) { - _unregisterInspectorControllerService(); - _registerInspectorControllerService(); - } - } - - @override - void dispose() { - entranceController.dispose(); - changeController.dispose(); - _unregisterInspectorControllerService(); - super.dispose(); - } - - void _animateProperties() { - if (_animatedProperties != null) { - unawaited(changeController.forward()); - } - if (_previousProperties != null) { - unawaited(entranceController.reverse()); - } else { - unawaited(entranceController.forward()); - } - } - - // update selected widget in the device without triggering selection listener event. - // this is required so that we don't change focus - // when tapping on a child is also Flex-based widget. - Future setSelectionInspector(RemoteDiagnosticsNode node) async { - final service = node.objectGroupApi; - if (service != null && service is ObjectGroup) { - await service.setSelectionInspector(node.valueRef, false); - } - } - - // update selected widget and trigger selection listener event to change focus. - void refreshSelection(RemoteDiagnosticsNode node) { - inspectorController.refreshSelection(node, node, true); - } - - Future onTap(LayoutProperties properties) async { - setState(() => highlighted = properties); - await setSelectionInspector(properties.node); - } - - void onDoubleTap(LayoutProperties properties) { - refreshSelection(properties.node); - } - - Future refresh() async { - if (!_dirty) return; - _dirty = false; - final updatedProperties = await fetchLayoutProperties(); - if (updatedProperties != null) { - _changeProperties(updatedProperties); - } - } - - void _changeProperties(L nextProperties) { - if (!mounted) return; - updateHighlighted(nextProperties); - setState(() { - _animatedProperties = computeAnimatedProperties(nextProperties); - unawaited(changeController.forward(from: 0.0)); - }); - } - - void _setProperties(L? newProperties) { - if (!mounted) return; - updateHighlighted(newProperties); - if (_properties == newProperties) { - return; - } - setState(() { - _previousProperties ??= _properties; - _properties = newProperties; - }); - _animateProperties(); - } - - void _initAnimationStates() { - entranceController = longAnimationController(this) - ..addStatusListener((status) { - if (status == AnimationStatus.dismissed) { - setState(() { - _previousProperties = null; - unawaited(entranceController.forward()); - }); - } - }); - entranceCurve = defaultCurvedAnimation(entranceController); - changeController = longAnimationController(this) - ..addStatusListener((status) { - if (status == AnimationStatus.completed) { - setState(() { - _properties = _animatedProperties!.end; - _animatedProperties = null; - changeController.value = 0.0; - }); - } - }); - changeAnimation = defaultCurvedAnimation(changeController); - } - - void _updateObjectGroupManager() { - final service = serviceConnection.inspectorService; - if (service != objectGroupManager?.inspectorService) { - objectGroupManager = InspectorObjectGroupManager( - service as InspectorService, - 'flex-layout', - ); - } - unawaited(onSelectionChanged()); - } - - bool _dirty = false; - - @override - void onFlutterFrame() { - if (!mounted) return; - if (_dirty) { - rateLimiter.scheduleRequest(); - } - } - - // TODO(albertusangga): Investigate why onForceRefresh is not getting called. - @override - Future onForceRefresh() async { - final properties = await fetchLayoutProperties(); - if (properties != null) { - _setProperties(properties); - } - } - - /// Currently this is not working so we should listen to controller selection event instead. - @override - Future onInspectorSelectionChanged() async {} - - /// Register callback to be executed once Flutter frame is ready. - void markAsDirty() { - _dirty = true; - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/overflow_indicator_painter.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/overflow_indicator_painter.dart deleted file mode 100644 index 298b7782ef8..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/overflow_indicator_painter.dart +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:ui' as ui; - -import 'package:flutter/rendering.dart'; - -import '../../inspector_data_models.dart'; - -/// CustomPainter for drawing [DebugOverflowIndicatorMixin]'s patterned background. -/// Draws overflow pattern on the [OverflowSide] of the widget. -/// -/// [DebugOverflowIndicatorMixin] can not be reused here -/// because it is a mixin on RenderObject and requires real overflows on the widget. -/// -/// If [side] is set to [OverflowSide.right], -/// the pattern will occupy the whole height -/// and the width will be the given [size]. -/// -/// If [side] is set to [OverflowSide.bottom], -/// the pattern will occupy the whole width -/// and the height will be the given [size]. -/// -/// See also: -/// * [DebugOverflowIndicatorMixin] -class OverflowIndicatorPainter extends CustomPainter { - const OverflowIndicatorPainter(this.side, this.size); - - final OverflowSide side; - final double size; - - /// These static variables are taken from [DebugOverflowIndicatorMixin] - /// since all of them are private. - static const black = Color(0xBF000000); - static const yellow = Color(0xBFFFFF00); - static final indicatorPaint = Paint() - ..shader = ui.Gradient.linear( - const Offset(0.0, 0.0), - const Offset(10.0, 10.0), - [black, yellow, yellow, black], - [0.25, 0.25, 0.75, 0.75], - TileMode.repeated, - ); - - @override - void paint(Canvas canvas, Size size) { - final bottomOverflow = OverflowSide.bottom == side; - final width = bottomOverflow ? size.width : this.size; - final height = !bottomOverflow ? size.height : this.size; - - final left = bottomOverflow ? 0.0 : size.width - width; - final top = side == OverflowSide.right ? 0.0 : size.height - height; - final rect = Rect.fromLTWH(left, top, width, height); - canvas.drawRect(rect, indicatorPaint); - } - - @override - bool shouldRepaint(CustomPainter oldDelegate) { - return oldDelegate is OverflowIndicatorPainter && - (side != oldDelegate.side || size != oldDelegate.size); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/theme.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/theme.dart deleted file mode 100644 index 974a0a5be75..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/theme.dart +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -const margin = 6.0; - -const arrowHeadSize = 8.0; -const arrowMargin = 4.0; -const arrowStrokeWidth = 1.5; - -/// Hardcoded sizes for scaling the flex children widget properly. -const minRenderWidth = 250.0; -const minRenderHeight = 250.0; - -const minPadding = 2.0; -const overflowTextHorizontalPadding = 8.0; - -/// The size to shrink a widget by when animating it in. -const entranceMargin = 50.0; - -const defaultMaxRenderWidth = 400.0; -const defaultMaxRenderHeight = 400.0; - -const widgetTitleMaxWidthPercentage = 0.75; - -/// Hardcoded arrow size respective to its cross axis (because it's unconstrained). -const heightAndConstraintIndicatorSize = 48.0; -const widthAndConstraintIndicatorSize = 56.0; -const mainAxisArrowIndicatorSize = 48.0; -const crossAxisArrowIndicatorSize = 48.0; - -const heightOnlyIndicatorSize = 72.0; - -/// Minimum size to display width/height inside the arrow -const minWidthToDisplayWidthInsideArrow = 200.0; -const minHeightToDisplayHeightInsideArrow = 200.0; - -const smallTextScaleFactor = 0.8; - -/// Height for limiting asset image (selected one in the drop down). -const axisAlignmentAssetImageHeight = 24.0; - -const minHeightToAllowTruncating = 375.0; -const minWidthToAllowTruncating = 375.0; - -// Story of Layout colors -const mainAxisLightColor = Color(0xff2c5daa); -const mainAxisDarkColor = Color(0xff2c5daa); - -const textColor = Color(0xff55767f); -const emphasizedTextColor = Color(0xff009aca); - -const crossAxisLightColor = Color(0xff8ac652); -const crossAxisDarkColor = Color(0xff8ac652); - -const mainAxisTextColorLight = Color(0xFF1375bc); -const mainAxisTextColorDark = Color(0xFF1375bc); - -const crossAxisTextColorLight = Color(0xFF66672C); -const crossAxisTextColorsDark = Color(0xFFB3D25A); - -const overflowBackgroundColorDark = Color(0xFFB00020); -const overflowBackgroundColorLight = Color(0xFFB00020); - -const overflowTextColorDark = Color(0xfff5846b); -const overflowTextColorLight = Color(0xffdea089); - -const backgroundColorSelectedDark = Color( - 0x4d474747, -); // TODO(jacobr): we would like Color(0x4dedeeef) but that makes the background show through. -const backgroundColorSelectedLight = Color(0x4dedeeef); - -extension LayoutExplorerColorScheme on ColorScheme { - Color get mainAxisColor => isLight ? mainAxisLightColor : mainAxisDarkColor; - - Color get widgetNameColor => isLight ? Colors.white : Colors.black; - - Color get crossAxisColor => - isLight ? crossAxisLightColor : crossAxisDarkColor; - - Color get mainAxisTextColor => - isLight ? mainAxisTextColorLight : mainAxisTextColorDark; - - Color get crossAxisTextColor => - isLight ? crossAxisTextColorLight : crossAxisTextColorsDark; - - Color get overflowBackgroundColor => - isLight ? overflowBackgroundColorLight : overflowBackgroundColorDark; - - Color get overflowTextColor => - isLight ? overflowTextColorLight : overflowTextColorDark; - - Color get backgroundColorSelected => - isLight ? backgroundColorSelectedLight : backgroundColorSelectedDark; - - Color get unconstrainedColor => - isLight ? unconstrainedLightColor : unconstrainedDarkColor; -} - -const backgroundColorDark = Color(0xff30302f); -const backgroundColorLight = Color(0xffffffff); - -const unconstrainedDarkColor = Color(0xffdea089); -const unconstrainedLightColor = Color(0xfff5846b); - -const widthIndicatorColor = textColor; -const heightIndicatorColor = textColor; - -const negativeSpaceDarkAssetName = - 'assets/img/layout_explorer/negative_space_dark.png'; -const negativeSpaceLightAssetName = - 'assets/img/layout_explorer/negative_space_light.png'; - -const dimensionIndicatorTextStyle = TextStyle( - height: 1.0, - letterSpacing: 1.1, - color: emphasizedTextColor, - fontSize: defaultFontSize, -); - -TextStyle overflowingDimensionIndicatorTextStyle(ColorScheme colorScheme) => - dimensionIndicatorTextStyle.merge( - TextStyle( - fontWeight: FontWeight.bold, - color: colorScheme.overflowTextColor, - ), - ); - -Widget buildUnderline() { - return Container( - height: 1.0, - decoration: const BoxDecoration( - border: Border(bottom: BorderSide(color: textColor, width: 0.0)), - ), - ); -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/utils.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/utils.dart deleted file mode 100644 index 798ea7a45f7..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/utils.dart +++ /dev/null @@ -1,439 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:ui'; - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -import '../../../../shared/diagnostics/diagnostics_node.dart'; -import '../../../../shared/primitives/utils.dart'; -import '../../inspector_data_models.dart'; -import 'overflow_indicator_painter.dart'; -import 'theme.dart'; -import 'widgets_theme.dart'; - -/// A widget for positioning sized widgets that follows layout as follows: -/// | top | -/// left | center | right -/// | bottom | -@immutable -class BorderLayout extends StatelessWidget { - const BorderLayout({ - super.key, - this.left, - this.leftWidth, - this.top, - this.topHeight, - this.right, - this.rightWidth, - this.bottom, - this.bottomHeight, - this.center, - }) : assert( - left != null || - top != null || - right != null || - bottom != null || - center != null, - ); - - final Widget? center; - final Widget? top; - final Widget? left; - final Widget? right; - final Widget? bottom; - - final double? leftWidth; - final double? rightWidth; - final double? topHeight; - final double? bottomHeight; - - @override - Widget build(BuildContext context) { - return Stack( - children: [ - Center( - child: Container( - margin: EdgeInsets.only( - left: leftWidth ?? 0, - right: rightWidth ?? 0, - top: topHeight ?? 0, - bottom: bottomHeight ?? 0, - ), - child: center, - ), - ), - if (top != null) - Align( - alignment: Alignment.topCenter, - child: SizedBox(height: topHeight, child: top), - ), - if (left != null) - Align( - alignment: Alignment.centerLeft, - child: SizedBox(width: leftWidth, child: left), - ), - if (right != null) - Align( - alignment: Alignment.centerRight, - child: SizedBox(width: rightWidth, child: right), - ), - if (bottom != null) - Align( - alignment: Alignment.bottomCenter, - child: SizedBox(height: bottomHeight, child: bottom), - ), - ], - ); - } -} - -@immutable -class Truncateable extends StatelessWidget { - const Truncateable({super.key, this.truncate = false, required this.child}); - - final Widget child; - final bool truncate; - - @override - Widget build(BuildContext context) { - return Flexible(flex: truncate ? 1 : 0, child: child); - } -} - -/// Widget that draws bounding box with the title (usually widget name) in its -/// top left. -/// -/// * [hint] is an optional widget to be placed in the top right of the box. -/// * [child] is an optional widget to be placed in the center of the box. -class WidgetVisualizer extends StatelessWidget { - const WidgetVisualizer({ - super.key, - required this.title, - this.hint, - required this.isSelected, - required this.layoutProperties, - required this.child, - this.overflowSide, - this.largeTitle = false, - }); - - final LayoutProperties layoutProperties; - final String title; - final Widget child; - final Widget? hint; - final bool isSelected; - final bool largeTitle; - - final OverflowSide? overflowSide; - - static const _overflowIndicatorSize = 20.0; - static const _borderUnselectedWidth = 1.0; - static const _borderSelectedWidth = 3.0; - static const _selectedPadding = 4.0; - - bool get drawOverflow => overflowSide != null; - - @override - Widget build(BuildContext context) { - final theme = Theme.of(context); - final colorScheme = theme.colorScheme; - final properties = layoutProperties; - final borderColor = WidgetTheme.fromName(properties.node.description).color; - final boxAdjust = isSelected ? _selectedPadding : 0.0; - - return LayoutBuilder( - builder: (context, constraints) { - final hintLocal = hint; - return OverflowBox( - minWidth: constraints.minWidth + boxAdjust, - maxWidth: constraints.maxWidth + boxAdjust, - maxHeight: constraints.maxHeight + boxAdjust, - minHeight: constraints.minHeight + boxAdjust, - child: Container( - decoration: BoxDecoration( - border: Border.all( - color: borderColor, - width: isSelected - ? _borderSelectedWidth - : _borderUnselectedWidth, - ), - color: isSelected - ? theme.canvasColor.brighten() - : theme.canvasColor.darken(), - boxShadow: isSelected - ? [ - BoxShadow( - color: Colors.black.withAlpha(255 ~/ 2), - blurRadius: 20, - ), - ] - : null, - ), - child: Stack( - children: [ - if (drawOverflow) - Positioned.fill( - child: CustomPaint( - painter: OverflowIndicatorPainter( - overflowSide!, - _overflowIndicatorSize, - ), - ), - ), - Container( - margin: EdgeInsets.only( - right: overflowSide == OverflowSide.right - ? _overflowIndicatorSize - : 0.0, - bottom: overflowSide == OverflowSide.bottom - ? _overflowIndicatorSize - : 0.0, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisSize: MainAxisSize.min, - children: [ - IntrinsicHeight( - child: Row( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Flexible( - child: Container( - constraints: BoxConstraints( - maxWidth: largeTitle - ? defaultMaxRenderWidth - : minRenderWidth * - widgetTitleMaxWidthPercentage, - ), - decoration: BoxDecoration(color: borderColor), - padding: const EdgeInsets.all(4.0), - child: Center( - child: Text( - title, - style: theme.regularTextStyleWithColor( - colorScheme.widgetNameColor, - ), - overflow: TextOverflow.ellipsis, - ), - ), - ), - ), - if (hintLocal != null) Flexible(child: hintLocal), - ], - ), - ), - Expanded(child: child), - ], - ), - ), - ], - ), - ), - ); - }, - ); - } -} - -class AnimatedLayoutProperties - implements LayoutProperties { - AnimatedLayoutProperties(this.begin, this.end, this.animation) - : assert(begin.children.length == end.children.length), - _children = [ - for (var i = 0; i < begin.children.length; i++) - AnimatedLayoutProperties( - begin.children[i], - end.children[i], - animation, - ), - ]; - - final T begin; - final T end; - final Animation animation; - final List _children; - - @override - LayoutProperties? get parent => end.parent; - - @override - set parent(LayoutProperties? parent) { - end.parent = parent; - } - - @override - List get children { - return _children; - } - - List _lerpList(List l1, List l2) { - assert(l1.length == l2.length); - if (l1.isEmpty) return []; - final animationLocal = animation; - return [ - for (var i = 0; i < children.length; i++) - lerpDouble(l1[i], l2[i], animationLocal.value)!, - ]; - } - - @override - List childrenDimensions(Axis axis) { - final beginDimensions = begin.childrenDimensions(axis); - final endDimensions = end.childrenDimensions(axis); - return _lerpList(beginDimensions, endDimensions); - } - - @override - List get childrenHeights => - _lerpList(begin.childrenHeights, end.childrenHeights); - - @override - List get childrenWidths => - _lerpList(begin.childrenWidths, end.childrenWidths); - - @override - BoxConstraints? get constraints { - try { - return BoxConstraints.lerp( - begin.constraints, - end.constraints, - animation.value, - ); - } catch (e) { - return end.constraints; - } - } - - @override - String describeWidthConstraints() { - final constraintsLocal = constraints!; - return constraintsLocal.hasBoundedWidth - ? LayoutProperties.describeAxis( - constraintsLocal.minWidth, - constraintsLocal.maxWidth, - 'w', - ) - : 'w=unconstrained'; - } - - @override - String describeHeightConstraints() { - final constraintsLocal = constraints!; - return constraintsLocal.hasBoundedHeight - ? LayoutProperties.describeAxis( - constraintsLocal.minHeight, - constraintsLocal.maxHeight, - 'h', - ) - : 'h=unconstrained'; - } - - @override - String describeWidth() => 'w=${toStringAsFixed(size.width)}'; - - @override - String describeHeight() => 'h=${toStringAsFixed(size.height)}'; - - @override - String? get description => end.description; - - @override - double dimension(Axis axis) { - return lerpDouble( - begin.dimension(axis), - end.dimension(axis), - animation.value, - )!; - } - - @override - num? get flexFactor => - lerpDouble(begin.flexFactor, end.flexFactor, animation.value); - - @override - bool get hasChildren => children.isNotEmpty; - - @override - double get height => size.height; - - @override - bool get isFlex => begin.isFlex && end.isFlex; - - @override - RemoteDiagnosticsNode get node => end.node; - - @override - Size get size { - return Size.lerp(begin.size, end.size, animation.value)!; - } - - @override - int get totalChildren => end.totalChildren; - - @override - double get width => size.width; - - @override - bool get hasFlexFactor => begin.hasFlexFactor && end.hasFlexFactor; - - @override - LayoutProperties copyWith({ - List? children, - BoxConstraints? constraints, - String? description, - int? flexFactor, - FlexFit? flexFit, - bool? isFlex, - Size? size, - }) { - return LayoutProperties.values( - node: node, - children: children ?? this.children, - constraints: constraints ?? this.constraints, - description: description ?? this.description, - flexFactor: flexFactor ?? this.flexFactor, - flexFit: flexFit ?? this.flexFit, - isFlex: isFlex ?? this.isFlex, - size: size ?? this.size, - ); - } - - @override - bool get isOverflowWidth => end.isOverflowWidth; - - @override - bool get isOverflowHeight => end.isOverflowHeight; - - @override - FlexFit? get flexFit => end.flexFit; - - @override - List get displayChildren => end.displayChildren; -} - -class LayoutExplorerBackground extends StatelessWidget { - const LayoutExplorerBackground({super.key, required this.colorScheme}); - - final ColorScheme colorScheme; - - @override - Widget build(BuildContext context) { - return Positioned.fill( - child: Opacity( - opacity: colorScheme.isLight ? 0.3 : 0.2, - child: Image.asset( - colorScheme.isLight - ? negativeSpaceLightAssetName - : negativeSpaceDarkAssetName, - fit: BoxFit.none, - repeat: ImageRepeat.repeat, - alignment: Alignment.topLeft, - ), - ), - ); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widget_constraints.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widget_constraints.dart deleted file mode 100644 index 45de4048974..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widget_constraints.dart +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app_shared/ui.dart'; -import 'package:flutter/material.dart'; - -import '../../../../shared/primitives/math_utils.dart'; -import '../../../../shared/primitives/utils.dart'; -import '../../inspector_data_models.dart'; -import 'arrow.dart'; -import 'dimension.dart'; -import 'theme.dart'; -import 'utils.dart'; - -class VisualizeWidthAndHeightWithConstraints extends StatelessWidget { - const VisualizeWidthAndHeightWithConstraints({ - super.key, - required this.properties, - double? arrowHeadSize, - required this.child, - this.warnIfUnconstrained = true, - }) : arrowHeadSize = arrowHeadSize ?? defaultIconSize; - - final Widget child; - final LayoutProperties properties; - final double arrowHeadSize; - final bool warnIfUnconstrained; - - @override - Widget build(BuildContext context) { - final propertiesLocal = properties; - final showChildrenWidthsSum = - propertiesLocal is FlexLayoutProperties && - propertiesLocal.isOverflowWidth; - const bottomHeight = widthAndConstraintIndicatorSize; - const rightWidth = heightAndConstraintIndicatorSize; - final colorScheme = Theme.of(context).colorScheme; - - final showOverflowHeight = - properties is FlexLayoutProperties && propertiesLocal.isOverflowHeight; - final heightDescription = RotatedBox( - quarterTurns: 1, - child: dimensionDescription( - TextSpan( - children: [ - TextSpan(text: propertiesLocal.describeHeight()), - if (propertiesLocal.constraints != null) ...[ - if (!showOverflowHeight) const TextSpan(text: '\n'), - TextSpan( - text: ' (${propertiesLocal.describeHeightConstraints()})', - style: - propertiesLocal.constraints!.hasBoundedHeight || - !warnIfUnconstrained - ? null - : TextStyle(color: colorScheme.unconstrainedColor), - ), - ], - if (showOverflowHeight) - TextSpan( - text: - '\nchildren take: ' - '${toStringAsFixed(sum(propertiesLocal.childrenHeights))}', - ), - ], - ), - propertiesLocal.isOverflowHeight, - colorScheme, - ), - ); - final right = Container( - margin: const EdgeInsets.only( - top: margin, - left: margin, - bottom: bottomHeight, - right: minPadding, // custom margin for not sticking to the corner - ), - child: LayoutBuilder( - builder: (context, constraints) { - final displayHeightOutsideArrow = - constraints.maxHeight < minHeightToDisplayHeightInsideArrow; - return Row( - children: [ - Truncateable( - truncate: !displayHeightOutsideArrow, - child: Container( - margin: const EdgeInsets.symmetric(horizontal: arrowMargin), - child: ArrowWrapper.bidirectional( - arrowColor: heightIndicatorColor, - arrowStrokeWidth: arrowStrokeWidth, - arrowHeadSize: arrowHeadSize, - direction: Axis.vertical, - child: displayHeightOutsideArrow ? null : heightDescription, - ), - ), - ), - if (displayHeightOutsideArrow) Flexible(child: heightDescription), - ], - ); - }, - ), - ); - - final widthDescription = dimensionDescription( - TextSpan( - children: [ - TextSpan(text: '${propertiesLocal.describeWidth()}; '), - if (propertiesLocal.constraints != null) ...[ - if (!showChildrenWidthsSum) const TextSpan(text: '\n'), - TextSpan( - text: '(${propertiesLocal.describeWidthConstraints()})', - style: - propertiesLocal.constraints!.hasBoundedWidth || - !warnIfUnconstrained - ? null - : TextStyle(color: colorScheme.unconstrainedColor), - ), - ], - if (showChildrenWidthsSum) - TextSpan( - text: - '\nchildren take ' - '${toStringAsFixed(sum(propertiesLocal.childrenWidths))}', - ), - ], - ), - propertiesLocal.isOverflowWidth, - colorScheme, - ); - final bottom = Container( - margin: const EdgeInsets.only( - top: margin, - left: margin, - right: rightWidth, - bottom: minPadding, - ), - child: LayoutBuilder( - builder: (context, constraints) { - final maxWidth = constraints.maxWidth; - final displayWidthOutsideArrow = - maxWidth < minWidthToDisplayWidthInsideArrow; - return Column( - children: [ - Truncateable( - truncate: !displayWidthOutsideArrow, - child: Container( - margin: const EdgeInsets.symmetric(vertical: arrowMargin), - child: ArrowWrapper.bidirectional( - arrowColor: widthIndicatorColor, - arrowHeadSize: arrowHeadSize, - arrowStrokeWidth: arrowStrokeWidth, - direction: Axis.horizontal, - child: displayWidthOutsideArrow ? null : widthDescription, - ), - ), - ), - if (displayWidthOutsideArrow) - Flexible( - child: Container( - padding: const EdgeInsets.only(top: minPadding), - child: widthDescription, - ), - ), - ], - ); - }, - ), - ); - return BorderLayout( - center: child, - right: right, - rightWidth: rightWidth, - bottom: bottom, - bottomHeight: bottomHeight, - ); - } -} diff --git a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widgets_theme.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widgets_theme.dart deleted file mode 100644 index 4abdb55e500..00000000000 --- a/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widgets_theme.dart +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:flutter/material.dart'; - -class WidgetTheme { - const WidgetTheme({this.iconAsset, this.color = otherWidgetColor}); - - final String? iconAsset; - final Color color; - - static WidgetTheme fromName(String? widgetType) { - if (widgetType == null) { - return const WidgetTheme(); - } - - return themeMap[_stripBrackets(widgetType)] ?? const WidgetTheme(); - } - - /// Strips the brackets off the widget name. - /// - /// For example: `AnimatedBuilder` -> `AnimatedBuilder`. - static String _stripBrackets(String widgetType) { - final bracketIndex = widgetType.indexOf('<'); - if (bracketIndex == -1) { - return widgetType; - } - - return widgetType.substring(0, bracketIndex); - } - - static const contentWidgetColor = Color(0xff06AC3B); - static const highLevelWidgetColor = Color(0xffAEAEB1); - static const animationWidgetColor = Color(0xffE09D0E); - static const otherWidgetColor = Color(0xff0EA7E0); - - static const animatedTheme = WidgetTheme( - iconAsset: WidgetIcons.animated, - color: animationWidgetColor, - ); - - static const transitionTheme = WidgetTheme( - iconAsset: WidgetIcons.transition, - color: animationWidgetColor, - ); - - static const textTheme = WidgetTheme( - iconAsset: WidgetIcons.text, - color: contentWidgetColor, - ); - - static const imageTheme = WidgetTheme( - iconAsset: WidgetIcons.image, - color: contentWidgetColor, - ); - - static const tabTheme = WidgetTheme(iconAsset: WidgetIcons.tab); - static const scrollTheme = WidgetTheme(iconAsset: WidgetIcons.scroll); - static const highLevelTheme = WidgetTheme(color: highLevelWidgetColor); - static const listTheme = WidgetTheme(iconAsset: WidgetIcons.listView); - static const expandTheme = WidgetTheme(iconAsset: WidgetIcons.expand); - static const alignTheme = WidgetTheme(iconAsset: WidgetIcons.align); - static const gestureTheme = WidgetTheme(iconAsset: WidgetIcons.gesture); - static const textButtonTheme = WidgetTheme(iconAsset: WidgetIcons.textButton); - static const toggleTheme = WidgetTheme( - iconAsset: WidgetIcons.toggle, - color: contentWidgetColor, - ); - - static const themeMap = { - // High-level - 'RenderObjectToWidgetAdapter': WidgetTheme( - iconAsset: WidgetIcons.root, - color: highLevelWidgetColor, - ), - 'CupertinoApp': highLevelTheme, - 'MaterialApp': WidgetTheme(iconAsset: WidgetIcons.materialApp), - 'WidgetsApp': highLevelTheme, - - // Text - 'DefaultTextStyle': textTheme, - 'RichText': textTheme, - 'SelectableText': textTheme, - 'Text': textTheme, - - // Images - 'Icon': imageTheme, - 'Image': imageTheme, - 'RawImage': imageTheme, - - // Animations - 'AnimatedAlign': animatedTheme, - 'AnimatedBuilder': animatedTheme, - 'AnimatedContainer': animatedTheme, - 'AnimatedCrossFade': animatedTheme, - 'AnimatedDefaultTextStyle': animatedTheme, - 'AnimatedListState': animatedTheme, - 'AnimatedModalBarrier': animatedTheme, - 'AnimatedOpacity': animatedTheme, - 'AnimatedPhysicalModel': animatedTheme, - 'AnimatedPositioned': animatedTheme, - 'AnimatedSize': animatedTheme, - 'AnimatedWidget': animatedTheme, - - // Transitions - 'DecoratedBoxTransition': transitionTheme, - 'FadeTransition': transitionTheme, - 'PositionedTransition': transitionTheme, - 'RotationTransition': transitionTheme, - 'ScaleTransition': transitionTheme, - 'SizeTransition': transitionTheme, - 'SlideTransition': transitionTheme, - 'Hero': WidgetTheme( - iconAsset: WidgetIcons.hero, - color: animationWidgetColor, - ), - - // Scroll - 'CustomScrollView': scrollTheme, - 'DraggableScrollableSheet': scrollTheme, - 'SingleChildScrollView': scrollTheme, - 'Scrollable': scrollTheme, - 'Scrollbar': scrollTheme, - 'ScrollConfiguration': scrollTheme, - 'GridView': WidgetTheme(iconAsset: WidgetIcons.gridView), - 'ListView': listTheme, - 'ReorderableListView': listTheme, - 'NestedScrollView': listTheme, - - // Input - 'Checkbox': WidgetTheme( - iconAsset: WidgetIcons.checkbox, - color: contentWidgetColor, - ), - 'Radio': WidgetTheme( - iconAsset: WidgetIcons.radio, - color: contentWidgetColor, - ), - 'Switch': toggleTheme, - 'CupertinoSwitch': toggleTheme, - - // Layout - 'Container': WidgetTheme(iconAsset: WidgetIcons.container), - 'Center': WidgetTheme(iconAsset: WidgetIcons.center), - 'Row': WidgetTheme(iconAsset: WidgetIcons.row), - 'Column': WidgetTheme(iconAsset: WidgetIcons.column), - 'Padding': WidgetTheme(iconAsset: WidgetIcons.padding), - 'SizedBox': WidgetTheme(iconAsset: WidgetIcons.sizedBox), - 'ConstrainedBox': WidgetTheme(iconAsset: WidgetIcons.constrainedBox), - 'Align': alignTheme, - 'Positioned': alignTheme, - 'Expanded': expandTheme, - 'Flexible': expandTheme, - 'Stack': WidgetTheme(iconAsset: WidgetIcons.stack), - 'Wrap': WidgetTheme(iconAsset: WidgetIcons.wrap), - - // Buttons - 'FloatingActionButton': WidgetTheme( - iconAsset: WidgetIcons.floatingActionButton, - color: contentWidgetColor, - ), - 'InkWell': WidgetTheme(iconAsset: WidgetIcons.inkWell), - 'GestureDetector': gestureTheme, - 'RawGestureDetector': gestureTheme, - 'TextButton': textButtonTheme, - 'CupertinoButton': textButtonTheme, - 'ElevatedButton': textButtonTheme, - 'OutlinedButton': WidgetTheme(iconAsset: WidgetIcons.outlinedButton), - - // Tabs - 'Tab': tabTheme, - 'TabBar': tabTheme, - 'TabBarView': tabTheme, - 'BottomNavigationBar': WidgetTheme( - iconAsset: WidgetIcons.bottomNavigationBar, - ), - 'CupertinoTabScaffold': tabTheme, - 'CupertinoTabView': tabTheme, - - // Other - 'Scaffold': WidgetTheme(iconAsset: WidgetIcons.scaffold), - 'CircularProgressIndicator': WidgetTheme( - iconAsset: WidgetIcons.circularProgress, - ), - 'Card': WidgetTheme(iconAsset: WidgetIcons.card), - 'Divider': WidgetTheme(iconAsset: WidgetIcons.divider), - 'AlertDialog': WidgetTheme(iconAsset: WidgetIcons.alertDialog), - 'CircleAvatar': WidgetTheme(iconAsset: WidgetIcons.circleAvatar), - 'Opacity': WidgetTheme(iconAsset: WidgetIcons.opacity), - 'Drawer': WidgetTheme(iconAsset: WidgetIcons.drawer), - 'PageView': WidgetTheme(iconAsset: WidgetIcons.pageView), - 'Material': WidgetTheme(iconAsset: WidgetIcons.material), - 'AppBar': WidgetTheme(iconAsset: WidgetIcons.appBar), - 'HiddenGroup': WidgetTheme(iconAsset: WidgetIcons.hidden), - }; -} - -class WidgetIcons { - static const root = 'icons/inspector/widget_icons/root.png'; - static const text = 'icons/inspector/widget_icons/text.png'; - static const icon = 'icons/inspector/widget_icons/icon.png'; - static const image = 'icons/inspector/widget_icons/image.png'; - static const floatingActionButton = - 'icons/inspector/widget_icons/floatingab.png'; - static const checkbox = 'icons/inspector/widget_icons/checkbox.png'; - static const radio = 'icons/inspector/widget_icons/radio.png'; - static const toggle = 'icons/inspector/widget_icons/toggle.png'; - static const animated = 'icons/inspector/widget_icons/animated.png'; - static const transition = 'icons/inspector/widget_icons/transition.png'; - static const hero = 'icons/inspector/widget_icons/hero.png'; - static const container = 'icons/inspector/widget_icons/container.png'; - static const center = 'icons/inspector/widget_icons/center.png'; - static const row = 'icons/inspector/widget_icons/row.png'; - static const column = 'icons/inspector/widget_icons/column.png'; - static const padding = 'icons/inspector/widget_icons/padding.png'; - static const scaffold = 'icons/inspector/widget_icons/scaffold.png'; - static const sizedBox = 'icons/inspector/widget_icons/sizedbox.png'; - static const align = 'icons/inspector/widget_icons/align.png'; - static const scroll = 'icons/inspector/widget_icons/scroll.png'; - static const stack = 'icons/inspector/widget_icons/stack.png'; - static const inkWell = 'icons/inspector/widget_icons/inkwell.png'; - static const gesture = 'icons/inspector/widget_icons/gesture.png'; - static const textButton = 'icons/inspector/widget_icons/textbutton.png'; - static const outlinedButton = - 'icons/inspector/widget_icons/outlinedbutton.png'; - static const gridView = 'icons/inspector/widget_icons/gridview.png'; - static const listView = 'icons/inspector/widget_icons/listView.png'; - - static const alertDialog = 'icons/inspector/widget_icons/alertdialog.png'; - static const card = 'icons/inspector/widget_icons/card.png'; - static const circleAvatar = 'icons/inspector/widget_icons/circleavatar.png'; - static const circularProgress = - 'icons/inspector/widget_icons/circularprogress.png'; - static const constrainedBox = - 'icons/inspector/widget_icons/constrainedbox.png'; - static const divider = 'icons/inspector/widget_icons/divider.png'; - static const drawer = 'icons/inspector/widget_icons/drawer.png'; - static const expand = 'icons/inspector/widget_icons/expand.png'; - static const material = 'icons/inspector/widget_icons/material.png'; - static const opacity = 'icons/inspector/widget_icons/opacity.png'; - static const tab = 'icons/inspector/widget_icons/tab.png'; - static const wrap = 'icons/inspector/widget_icons/wrap.png'; - static const pageView = 'icons/inspector/widget_icons/pageView.png'; - static const appBar = 'icons/inspector/widget_icons/appbar.png'; - static const materialApp = 'icons/inspector/widget_icons/materialapp.png'; - static const bottomNavigationBar = - 'icons/inspector/widget_icons/bottomnavigationbar.png'; - static const hidden = 'icons/inspector/widget_icons/onedot.png'; -} diff --git a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen.dart b/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen.dart index 710743dee72..42d5bb7f0ed 100644 --- a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen.dart +++ b/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen.dart @@ -3,14 +3,11 @@ // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. import 'package:devtools_app_shared/shared.dart'; -import 'package:devtools_app_shared/utils.dart'; import 'package:flutter/material.dart'; -import '../../shared/feature_flags.dart'; import '../../shared/framework/screen.dart'; import '../../shared/globals.dart'; -import '../inspector/inspector_screen_body.dart' as legacy; -import '../inspector_v2/inspector_screen_body.dart' as v2; +import '../inspector_v2/inspector_screen_body.dart'; import 'inspector_screen_controller.dart'; class InspectorScreen extends Screen { @@ -32,58 +29,8 @@ class InspectorScreen extends Screen { String get docPageId => screenId; @override - Widget buildScreenBody(BuildContext context) => - const InspectorScreenSwitcher(); -} - -class InspectorScreenSwitcher extends StatefulWidget { - const InspectorScreenSwitcher({super.key}); - - @override - State createState() => - _InspectorScreenSwitcherState(); -} - -class _InspectorScreenSwitcherState extends State - with AutoDisposeMixin { - late InspectorScreenController controller; - - bool get shouldShowInspectorV2 => - FeatureFlags.inspectorV2.isEnabled && - !preferences.inspector.legacyInspectorEnabled.value; - - @override - void initState() { - super.initState(); - controller = screenControllers.lookup(); - addAutoDisposeListener( - preferences.inspector.legacyInspectorEnabled, - () async { - controller.legacyInspectorController.setVisibleToUser( - !shouldShowInspectorV2, - ); - await controller.v2InspectorController.setVisibleToUser( - shouldShowInspectorV2, - ); - }, - ); - } - - @override - Widget build(BuildContext context) { - return ValueListenableBuilder( - valueListenable: preferences.inspector.legacyInspectorEnabled, - builder: (context, _, _) { - if (shouldShowInspectorV2) { - return v2.InspectorScreenBody( - controller: controller.v2InspectorController, - ); - } - - return legacy.InspectorScreenBody( - controller: controller.legacyInspectorController, - ); - }, - ); + Widget buildScreenBody(BuildContext context) { + final controller = screenControllers.lookup(); + return InspectorScreenBody(controller: controller.inspectorController); } } diff --git a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen_controller.dart b/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen_controller.dart index 5ca8073fa6f..7656c99ae04 100644 --- a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen_controller.dart +++ b/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen_controller.dart @@ -6,10 +6,8 @@ import '../../shared/analytics/metrics.dart'; import '../../shared/console/primitives/simple_items.dart'; import '../../shared/framework/screen.dart'; import '../../shared/framework/screen_controllers.dart'; -import '../inspector/inspector_controller.dart' as legacy; -import '../inspector/inspector_tree_controller.dart' as legacy; -import '../inspector_v2/inspector_controller.dart' as v2; -import '../inspector_v2/inspector_tree_controller.dart' as v2; +import '../inspector_v2/inspector_controller.dart'; +import '../inspector_v2/inspector_tree_controller.dart'; /// Screen controller for the Inspector screen. /// @@ -25,46 +23,25 @@ class InspectorScreenController extends DevToolsScreenController { @override final screenId = ScreenMetaData.inspector.id; - late v2.InspectorController v2InspectorController; - late v2.InspectorTreeController v2InspectorTreeController; - - late legacy.InspectorController legacyInspectorController; - late legacy.InspectorTreeController legacyInspectorTreeController; - late legacy.InspectorTreeController legacyDetailsTreeController; + late InspectorController inspectorController; + late InspectorTreeController inspectorTreeController; @override void init() { super.init(); - v2InspectorTreeController = v2.InspectorTreeController( - gaId: InspectorScreenMetrics.summaryTreeGaId, - ); - v2InspectorController = v2.InspectorController( - inspectorTree: v2InspectorTreeController, - treeType: FlutterTreeType.widget, - ); - - // TODO(elliette): Remove legacy inspector. - legacyInspectorTreeController = legacy.InspectorTreeController( + inspectorTreeController = InspectorTreeController( gaId: InspectorScreenMetrics.summaryTreeGaId, ); - legacyDetailsTreeController = legacy.InspectorTreeController( - gaId: InspectorScreenMetrics.detailsTreeGaId, - ); - legacyInspectorController = legacy.InspectorController( - inspectorTree: legacyInspectorTreeController, - detailsTree: legacyDetailsTreeController, + inspectorController = InspectorController( + inspectorTree: inspectorTreeController, treeType: FlutterTreeType.widget, ); } @override void dispose() { - v2InspectorTreeController.dispose(); - v2InspectorController.dispose(); - - legacyInspectorTreeController.dispose(); - legacyDetailsTreeController.dispose(); - legacyInspectorController.dispose(); + inspectorTreeController.dispose(); + inspectorController.dispose(); super.dispose(); } } diff --git a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_settings_dialog.dart b/packages/devtools_app/lib/src/screens/inspector_shared/inspector_settings_dialog.dart index 823a3dd3c6a..a185822be0f 100644 --- a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_settings_dialog.dart +++ b/packages/devtools_app/lib/src/screens/inspector_shared/inspector_settings_dialog.dart @@ -9,16 +9,11 @@ import 'package:devtools_app_shared/utils.dart'; import 'package:flutter/material.dart'; import 'package:vm_service/vm_service.dart' hide Stack; -import '../../shared/analytics/analytics.dart' as ga; import '../../shared/analytics/constants.dart' as gac; -import '../../shared/feature_flags.dart'; import '../../shared/globals.dart'; -import '../../shared/managers/banner_messages.dart'; -import '../../shared/preferences/preferences.dart'; import '../../shared/primitives/simple_items.dart'; import '../../shared/ui/common_widgets.dart'; import '../../shared/ui/editable_list.dart'; -import 'inspector_screen.dart'; class FlutterInspectorSettingsDialog extends StatefulWidget { const FlutterInspectorSettingsDialog({super.key}); @@ -31,164 +26,71 @@ class FlutterInspectorSettingsDialog extends StatefulWidget { class _FlutterInspectorSettingsDialogState extends State with AutoDisposeMixin { - @override - void initState() { - super.initState(); - addAutoDisposeListener(preferences.inspector.legacyInspectorEnabled, () { - if (!preferences.inspector.legacyInspectorEnabled.value) { - bannerMessages.removeMessageByKey( - LegacyInspectorWarningMessage.buildKey(InspectorScreen.id), - InspectorScreen.id, - ); - } - }); - } - @override Widget build(BuildContext context) { final theme = Theme.of(context); const dialogHeight = 500.0; - return ValueListenableBuilder( - valueListenable: preferences.inspector.legacyInspectorEnabled, - builder: (context, legacyInspectorEnabled, _) { - final inspectorV2Enabled = !legacyInspectorEnabled; - return DevToolsDialog( - title: const DialogTitleText('Flutter Inspector Settings'), - content: SizedBox( - width: defaultDialogWidth, - height: dialogHeight, - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, + return DevToolsDialog( + title: const DialogTitleText('Flutter Inspector Settings'), + content: SizedBox( + width: defaultDialogWidth, + height: dialogHeight, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ...dialogSubHeader(theme, 'General'), + CheckboxSetting( + notifier: + preferences.inspector.hoverEvalModeEnabled + as ValueNotifier, + title: 'Enable hover inspection', + description: + 'Hovering over any widget displays its properties and values.', + gaItem: gac.inspectorHoverEvalMode, + ), + const SizedBox(height: largeSpacing), + CheckboxSetting( + notifier: + preferences.inspector.autoRefreshEnabled + as ValueNotifier, + title: 'Enable widget tree auto-refreshing', + description: + 'The widget tree will automatically refresh after a hot-reload or navigation event.', + gaItem: gac.inspectorAutoRefreshEnabled, + ), + const SizedBox(height: largeSpacing), + ...dialogSubHeader(theme, 'Package Directories'), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - ...dialogSubHeader(theme, 'General'), - CheckboxSetting( - notifier: - preferences.inspector.hoverEvalModeEnabled - as ValueNotifier, - title: 'Enable hover inspection', - description: - 'Hovering over any widget displays its properties and values.', - gaItem: gac.inspectorHoverEvalMode, - ), - const SizedBox(height: largeSpacing), - if (inspectorV2Enabled) ...[ - CheckboxSetting( - notifier: - preferences.inspector.autoRefreshEnabled - as ValueNotifier, - title: 'Enable widget tree auto-refreshing', - description: - 'The widget tree will automatically refresh after a hot-reload or navigation event.', - gaItem: gac.inspectorAutoRefreshEnabled, - ), - ] else ...[ - const InspectorDefaultDetailsViewOption(), - ], - const SizedBox(height: largeSpacing), - // TODO(https://github.com/flutter/devtools/issues/7860): Clean-up - // after Inspector V2 has been released. - if (FeatureFlags.inspectorV2.isEnabled) - Flexible( - child: CheckboxSetting( - notifier: - preferences.inspector.legacyInspectorEnabled - as ValueNotifier, - title: 'Use legacy inspector', - description: - 'Disable the redesigned Flutter inspector. Please know that ' - 'the legacy inspector will be removed in a future release.', - gaItem: gac.inspectorV2Disabled, - ), + Expanded( + child: Text( + 'Widgets in these directories will show up in your summary tree.', + style: theme.subtleTextStyle, ), - const SizedBox(height: largeSpacing), - ...dialogSubHeader(theme, 'Package Directories'), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Text( - 'Widgets in these directories will show up in your summary tree.', - style: theme.subtleTextStyle, - ), - ), - MoreInfoLink( - url: DocLinks.inspectorPackageDirectories.value, - gaScreenName: gac.inspector, - gaSelectedItemDescription: - gac.InspectorDocs.packageDirectoriesDocs.name, - ), - ], ), - Text( - '(e.g. /absolute/path/to/myPackage/)', - style: theme.subtleTextStyle, + MoreInfoLink( + url: DocLinks.inspectorPackageDirectories.value, + gaScreenName: gac.inspector, + gaSelectedItemDescription: + gac.InspectorDocs.packageDirectoriesDocs.name, ), - const SizedBox(height: denseSpacing), - const Expanded(child: PubRootDirectorySection()), ], ), - ), - actions: const [DialogCloseButton()], - ); - }, - ); - } -} - -class InspectorDefaultDetailsViewOption extends StatelessWidget { - const InspectorDefaultDetailsViewOption({super.key}); - - @override - Widget build(BuildContext context) { - return ValueListenableBuilder( - valueListenable: preferences.inspector.defaultDetailsView, - builder: (context, selection, _) { - final theme = Theme.of(context); - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ Text( - 'Select the default tab for the inspector.', + '(e.g. /absolute/path/to/myPackage/)', style: theme.subtleTextStyle, ), const SizedBox(height: denseSpacing), - RadioGroup( - groupValue: selection, - onChanged: _onChanged, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Radio( - value: InspectorDetailsViewType.layoutExplorer, - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - ), - Text(InspectorDetailsViewType.layoutExplorer.key), - const SizedBox(width: denseSpacing), - const Radio( - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - value: InspectorDetailsViewType.widgetDetailsTree, - ), - Text(InspectorDetailsViewType.widgetDetailsTree.key), - ], - ), - ), + const Expanded(child: PubRootDirectorySection()), ], - ); - }, + ), + ), + actions: const [DialogCloseButton()], ); } - - void _onChanged(InspectorDetailsViewType? value) { - if (value != null) { - preferences.inspector.setDefaultInspectorDetailsView(value); - final item = value.name == InspectorDetailsViewType.layoutExplorer.name - ? gac.defaultDetailsViewToLayoutExplorer - : gac.defaultDetailsViewToWidgetDetails; - ga.select(gac.inspector, item); - } - } } class PubRootDirectorySection extends StatelessWidget { diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_data_models.dart b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_data_models.dart index 188dabd14b6..1d166cedad5 100644 --- a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_data_models.dart +++ b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_data_models.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -/// @docImport '../inspector/layout_explorer/ui/overflow_indicator_painter.dart'; +/// @docImport '../inspector_v2/layout_explorer/ui/overflow_indicator_painter.dart'; library; import 'dart:math' as math; diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/utils.dart b/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/utils.dart index 5b4b1ec2d4f..859b6508cad 100644 --- a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/utils.dart +++ b/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/utils.dart @@ -9,8 +9,8 @@ import 'package:flutter/material.dart'; import '../../../../shared/diagnostics/diagnostics_node.dart'; import '../../../../shared/primitives/utils.dart'; -import '../../../inspector/layout_explorer/ui/dimension.dart'; import '../../inspector_data_models.dart'; +import 'dimension.dart'; import 'overflow_indicator_painter.dart'; import 'theme.dart'; import 'widgets_theme.dart'; diff --git a/packages/devtools_app/lib/src/screens/logging/logging_controller.dart b/packages/devtools_app/lib/src/screens/logging/logging_controller.dart index fa93986930c..93fd3c08ed6 100644 --- a/packages/devtools_app/lib/src/screens/logging/logging_controller.dart +++ b/packages/devtools_app/lib/src/screens/logging/logging_controller.dart @@ -27,7 +27,7 @@ import '../../shared/primitives/message_bus.dart'; import '../../shared/primitives/utils.dart'; import '../../shared/ui/filter.dart'; import '../../shared/ui/search.dart'; -import '../inspector/inspector_tree_controller.dart'; +import '../inspector_v2/inspector_tree_controller.dart'; import 'log_details_controller.dart'; import 'logging_screen.dart'; import 'metadata.dart'; diff --git a/packages/devtools_app/lib/src/shared/analytics/constants.dart b/packages/devtools_app/lib/src/shared/analytics/constants.dart index 45450f842d9..aaf721b6fbb 100644 --- a/packages/devtools_app/lib/src/shared/analytics/constants.dart +++ b/packages/devtools_app/lib/src/shared/analytics/constants.dart @@ -8,7 +8,6 @@ library; import 'package:devtools_shared/devtools_extensions.dart'; import '../framework/screen.dart'; -import '../preferences/preferences.dart'; part 'constants/_cpu_profiler_constants.dart'; part 'constants/_debugger_constants.dart'; @@ -97,6 +96,9 @@ const onDeviceSelection = 'onDeviceSelection'; const inspectorSettings = 'inspectorSettings'; const loggingSettings = 'loggingSettings'; const refreshPubRoots = 'refreshPubRoots'; + +enum InspectorDetailsViewType { layoutExplorer, widgetDetailsTree } + final defaultDetailsViewToLayoutExplorer = InspectorDetailsViewType.layoutExplorer.name; final defaultDetailsViewToWidgetDetails = diff --git a/packages/devtools_app/lib/src/shared/analytics/metrics.dart b/packages/devtools_app/lib/src/shared/analytics/metrics.dart index fa0195a9021..a1be45f256e 100644 --- a/packages/devtools_app/lib/src/shared/analytics/metrics.dart +++ b/packages/devtools_app/lib/src/shared/analytics/metrics.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -/// @docImport '../../screens/inspector/inspector_tree_controller.dart'; +/// @docImport '../../screens/inspector_v2/inspector_tree_controller.dart'; /// @docImport '../../screens/performance/panes/flutter_frames/flutter_frame_model.dart'; library; @@ -67,12 +67,6 @@ class ProfilerScreenMetrics extends ScreenAnalyticsMetrics { } class InspectorScreenMetrics extends ScreenAnalyticsMetrics { - InspectorScreenMetrics.legacy({ - this.rootSetCount, - this.rowCount, - this.inspectorTreeControllerId, - }) : isV2 = false; - InspectorScreenMetrics.v2({ this.rootSetCount, this.rowCount, diff --git a/packages/devtools_app/lib/src/shared/console/eval/inspector_tree.dart b/packages/devtools_app/lib/src/shared/console/eval/inspector_tree.dart deleted file mode 100644 index 1afbf488668..00000000000 --- a/packages/devtools_app/lib/src/shared/console/eval/inspector_tree.dart +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -/// Inspector specific tree rendering support. -/// -/// This library must not have direct dependencies on web-only libraries. -/// -/// This allows tests of the complicated logic in this class to run on the VM. -library; - -import 'package:flutter/foundation.dart'; - -import '../../diagnostics/diagnostics_node.dart'; -import '../../ui/search.dart'; - -/// Split text into two groups, word characters at the start of a string and all -/// other characters. -final treeNodePrimaryDescriptionPattern = RegExp(r'^([\w ]+)(.*)$'); -// TODO(jacobr): temporary workaround for missing structure from assertion thrown building -// widget errors. -final assertionThrownBuildingError = RegExp( - r'^(The following assertion was thrown building [a-zA-Z]+)(\(.*\))(:)$', -); - -typedef TreeEventCallback = void Function(InspectorTreeNode node); - -const iconPadding = 4.0; -const chartLineStrokeWidth = 1.0; -const inspectorColumnWidth = 12.0; -const inspectorRowHeight = 16.0; - -/// This class could be refactored out to be a reasonable generic collapsible -/// tree ui node class but we choose to instead make it widget inspector -/// specific as that is the only case we care about. -// TODO(kenz): extend TreeNode class to share tree logic. -class InspectorTreeNode { - InspectorTreeNode({InspectorTreeNode? parent, bool expandChildren = true}) - : _children = [], - _parent = parent, - _isExpanded = expandChildren; - - bool get showLinesToChildren { - return _children.length > 1 && !_children.last.isProperty; - } - - bool get isDirty => _isDirty; - bool _isDirty = true; - - set isDirty(bool dirty) { - if (dirty) { - _isDirty = true; - _shouldShow = null; - if (_childrenCount == null) { - // Already dirty. - return; - } - _childrenCount = null; - if (parent != null) { - parent!.isDirty = true; - } - } else { - _isDirty = false; - } - } - - /// Returns whether the node is currently visible in the tree. - void updateShouldShow(bool value) { - if (value != _shouldShow) { - _shouldShow = value; - for (final child in children) { - child.updateShouldShow(value); - } - } - } - - bool get shouldShow { - final parentLocal = parent; - _shouldShow ??= - parentLocal == null || parentLocal.isExpanded && parentLocal.shouldShow; - return _shouldShow!; - } - - bool? _shouldShow; - - bool selected = false; - - RemoteDiagnosticsNode? _diagnostic; - final List _children; - - Iterable get children => _children; - - bool get isProperty { - final diagnosticLocal = diagnostic; - return diagnosticLocal == null || diagnosticLocal.isProperty; - } - - bool get isExpanded => _isExpanded; - bool _isExpanded; - - bool allowExpandCollapse = true; - - bool get showExpandCollapse { - return (diagnostic?.hasChildren == true || children.isNotEmpty) && - allowExpandCollapse; - } - - set isExpanded(bool value) { - if (value != _isExpanded) { - _isExpanded = value; - isDirty = true; - if (_shouldShow ?? false) { - for (final child in children) { - child.updateShouldShow(value); - } - } - } - } - - InspectorTreeNode? get parent => _parent; - InspectorTreeNode? _parent; - - set parent(InspectorTreeNode? value) { - _parent = value; - _parent?.isDirty = true; - } - - RemoteDiagnosticsNode? get diagnostic => _diagnostic; - - set diagnostic(RemoteDiagnosticsNode? v) { - final value = v!; - _diagnostic = value; - _isExpanded = value.childrenReady; - isDirty = true; - } - - int get childrenCount { - if (!isExpanded) { - _childrenCount = 0; - } - final childrenCountLocal = _childrenCount; - if (childrenCountLocal != null) { - return childrenCountLocal; - } - int count = 0; - for (final child in _children) { - count += child.subtreeSize; - } - return _childrenCount = count; - } - - bool get hasPlaceholderChildren { - return children.length == 1 && children.first.diagnostic == null; - } - - int? _childrenCount; - - int get subtreeSize => childrenCount + 1; - - // TODO(jacobr): move getRowIndex to the InspectorTree class. - int getRowIndex(InspectorTreeNode node) { - int index = 0; - while (true) { - final parent = node.parent; - if (parent == null) { - break; - } - for (final sibling in parent._children) { - if (sibling == node) { - break; - } - index += sibling.subtreeSize; - } - index += 1; // For parent itself. - node = parent; - } - return index; - } - - // TODO(jacobr): move this method to the InspectorTree class. - // TODO: optimize this method. - InspectorTreeRow? getRow(int index) { - if (subtreeSize <= index) { - return null; - } - - final ticks = []; - InspectorTreeNode node = this; - int current = 0; - int depth = 0; - - // Iterate till getting the result to return. - while (true) { - final style = node.diagnostic?.style; - final indented = - style != DiagnosticsTreeStyle.flat && - style != DiagnosticsTreeStyle.error; - if (current == index) { - return InspectorTreeRow( - node: node, - index: index, - ticks: ticks, - depth: depth, - lineToParent: - !node.isProperty && - index != 0 && - node.parent!.showLinesToChildren, - ); - } - assert(index > current); - current++; - final children = node._children; - int i; - for (i = 0; i < children.length; ++i) { - final child = children[i]; - final subtreeSize = child.subtreeSize; - if (current + subtreeSize > index) { - node = child; - if (children.length > 1 && - i + 1 != children.length && - !children.last.isProperty) { - if (indented) { - ticks.add(depth); - } - } - break; - } - current += subtreeSize; - } - assert(i < children.length); - if (indented) { - depth++; - } - } - } - - void removeChild(InspectorTreeNode child) { - child.parent = null; - final removed = _children.remove(child); - assert(removed); - isDirty = true; - } - - void appendChild(InspectorTreeNode child) { - _children.add(child); - child.parent = this; - isDirty = true; - } - - void clearChildren() { - _children.clear(); - isDirty = true; - } -} - -/// A row in the tree with all information required to render it. -class InspectorTreeRow with SearchableDataMixin { - InspectorTreeRow({ - required this.node, - required this.index, - required this.ticks, - required this.depth, - required this.lineToParent, - }); - - final InspectorTreeNode node; - - /// Column indexes of ticks to draw lines from parents to children. - final List ticks; - final int depth; - final int index; - final bool lineToParent; - - bool get isSelected => node.selected; -} - -/// Callback issued every time a node is added to the tree. -typedef NodeAddedCallback = - void Function( - InspectorTreeNode node, - RemoteDiagnosticsNode diagnosticsNode, - ); - -class InspectorTreeConfig { - InspectorTreeConfig({ - this.onNodeAdded, - this.onClientActiveChange, - this.onSelectionChange, - this.onExpand, - }); - - final NodeAddedCallback? onNodeAdded; - final VoidCallback? onSelectionChange; - final void Function(bool added)? onClientActiveChange; - final TreeEventCallback? onExpand; -} - -enum SearchTargetType { - widget, - // TODO(https://github.com/flutter/devtools/issues/3489) implement other search scopes: details, all etc -} diff --git a/packages/devtools_app/lib/src/shared/console/widgets/description.dart b/packages/devtools_app/lib/src/shared/console/widgets/description.dart index 7ea83892fd9..f7006f910b0 100644 --- a/packages/devtools_app/lib/src/shared/console/widgets/description.dart +++ b/packages/devtools_app/lib/src/shared/console/widgets/description.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -/// @docImport '../../../screens/inspector/inspector_tree_controller.dart'; +/// @docImport '../../../screens/inspector_v2/inspector_tree_controller.dart'; library; import 'package:devtools_app_shared/ui.dart'; @@ -17,7 +17,7 @@ import '../../primitives/utils.dart'; import '../../ui/hover.dart'; import '../../ui/icons.dart'; import '../../ui/utils.dart'; -import '../eval/inspector_tree.dart'; +import '../eval/inspector_tree_v2.dart'; import 'expandable_variable.dart'; final _colorIconMaker = ColorIconMaker(); diff --git a/packages/devtools_app/lib/src/shared/preferences/_inspector_preferences.dart b/packages/devtools_app/lib/src/shared/preferences/_inspector_preferences.dart index 440c2cc3d1b..7efdbcbfeb7 100644 --- a/packages/devtools_app/lib/src/shared/preferences/_inspector_preferences.dart +++ b/packages/devtools_app/lib/src/shared/preferences/_inspector_preferences.dart @@ -4,25 +4,10 @@ part of 'preferences.dart'; -enum InspectorDetailsViewType { - layoutExplorer(nameOverride: 'Layout Explorer'), - widgetDetailsTree(nameOverride: 'Widget Details Tree'); - - const InspectorDetailsViewType({String? nameOverride}) - : _nameOverride = nameOverride; - - final String? _nameOverride; - - String get key => _nameOverride ?? name; -} - class InspectorPreferencesController extends DisposableController with AutoDisposeControllerMixin { ValueListenable get hoverEvalModeEnabled => _hoverEvalMode; - ValueListenable get legacyInspectorEnabled => _legacyInspectorEnabled; ValueListenable get autoRefreshEnabled => _autoRefreshEnabled; - ValueListenable get defaultDetailsView => - _defaultDetailsView; ListValueNotifier get pubRootDirectories => _pubRootDirectories; ValueListenable get isRefreshingPubRootDirectories => _pubRootDirectoriesAreBusy; @@ -30,21 +15,13 @@ class InspectorPreferencesController extends DisposableController serviceConnection.inspectorService; final _hoverEvalMode = ValueNotifier(false); - final _legacyInspectorEnabled = ValueNotifier(false); final _autoRefreshEnabled = ValueNotifier(true); final _pubRootDirectories = ListValueNotifier([]); final _pubRootDirectoriesAreBusy = ValueNotifier(false); final _busyCounter = ValueNotifier(0); - final _defaultDetailsView = ValueNotifier( - InspectorDetailsViewType.layoutExplorer, - ); static const _hoverEvalModeStorageId = 'inspector.hoverEvalMode'; - static const _legacyInspectorEnabledStorageId = - 'inspector.legacyInspectorEnabled'; static const _autoRefreshEnabledStorageId = 'inspector.autoRefreshEnabled'; - static const _defaultDetailsViewStorageId = - 'inspector.defaultDetailsViewType'; static const _customPubRootDirectoriesStoragePrefix = 'inspector.customPubRootDirectories'; @@ -83,11 +60,8 @@ class InspectorPreferencesController extends DisposableController @override Future init() async { await _initHoverEvalMode(); - await _initLegacyInspectorEnabled(); await _initAutoRefreshEnabled(); - // TODO(jacobr): consider initializing this first as it is not blocking. _initPubRootDirectories(); - await _initDefaultInspectorDetailsView(); } Future _initHoverEvalMode() async { @@ -98,16 +72,6 @@ class InspectorPreferencesController extends DisposableController ); } - Future _initLegacyInspectorEnabled() async { - // TODO(https://github.com/flutter/devtools/issues/8667): Consider removing - // the old 'inspector.inspectorV2Enabled' key if it is set. - await _updateLegacyInspectorEnabled(); - _saveBooleanPreferenceChanges( - preferenceStorageId: _legacyInspectorEnabledStorageId, - preferenceNotifier: _legacyInspectorEnabled, - ); - } - Future _initAutoRefreshEnabled() async { await _updateAutoRefreshEnabled(); _saveBooleanPreferenceChanges( @@ -124,14 +88,6 @@ class InspectorPreferencesController extends DisposableController ); } - Future _updateLegacyInspectorEnabled() async { - await _updateBooleanPreference( - preferenceStorageId: _legacyInspectorEnabledStorageId, - preferenceNotifier: _legacyInspectorEnabled, - defaultValue: false, - ); - } - Future _updateAutoRefreshEnabled() async { await _updateBooleanPreference( preferenceStorageId: _autoRefreshEnabledStorageId, @@ -164,31 +120,6 @@ class InspectorPreferencesController extends DisposableController preferenceNotifier.value = preferenceValue == 'true'; } - Future _initDefaultInspectorDetailsView() async { - await _updateInspectorDetailsViewSelection(); - - addAutoDisposeListener(_defaultDetailsView, () { - safeUnawaited( - storage.setValue( - _defaultDetailsViewStorageId, - _defaultDetailsView.value.name.toString(), - ), - ); - }); - } - - Future _updateInspectorDetailsViewSelection() async { - final inspectorDetailsView = await storage.getValue( - _defaultDetailsViewStorageId, - ); - - if (inspectorDetailsView != null) { - _defaultDetailsView.value = InspectorDetailsViewType.values.firstWhere( - (e) => e.name.toString() == inspectorDetailsView, - ); - } - } - void _initPubRootDirectories() { addAutoDisposeListener( serviceConnection.serviceManager.connectedState, @@ -245,9 +176,7 @@ class InspectorPreferencesController extends DisposableController _checkedFlutterPubRoot = false; await _updateMainScriptRef(); await _updateHoverEvalMode(); - await _updateLegacyInspectorEnabled(); await loadPubRootDirectories(); - await _updateInspectorDetailsViewSelection(); } Future loadPubRootDirectories() async { @@ -473,17 +402,8 @@ class InspectorPreferencesController extends DisposableController _hoverEvalMode.value = enableHoverEvalMode; } - @visibleForTesting - void setLegacyInspectorEnabled(bool legacyInspectorEnabled) { - _legacyInspectorEnabled.value = legacyInspectorEnabled; - } - @visibleForTesting void setAutoRefreshEnabled(bool autoRefreshEnabled) { _autoRefreshEnabled.value = autoRefreshEnabled; } - - void setDefaultInspectorDetailsView(InspectorDetailsViewType value) { - _defaultDetailsView.value = value; - } } diff --git a/packages/devtools_app/lib/src/shared/ui/icons.dart b/packages/devtools_app/lib/src/shared/ui/icons.dart index 9feaa28877e..979cf15a989 100644 --- a/packages/devtools_app/lib/src/shared/ui/icons.dart +++ b/packages/devtools_app/lib/src/shared/ui/icons.dart @@ -13,7 +13,7 @@ library; import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/material.dart'; -import '../../screens/inspector/layout_explorer/ui/widgets_theme.dart'; +import '../../screens/inspector_v2/layout_explorer/ui/widgets_theme.dart'; import 'colors.dart'; class CustomIcon extends StatelessWidget { diff --git a/packages/devtools_app/macos/Runner.xcodeproj/project.pbxproj b/packages/devtools_app/macos/Runner.xcodeproj/project.pbxproj index ce7a071de3b..bd41a2cd64a 100644 --- a/packages/devtools_app/macos/Runner.xcodeproj/project.pbxproj +++ b/packages/devtools_app/macos/Runner.xcodeproj/project.pbxproj @@ -28,6 +28,8 @@ 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; + A8DF12F92A961E0BE748392A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A5897F3234DE4AE74CCBF51F /* Pods_RunnerTests.framework */; }; + FBB6B0E13D9A365390189BEF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2213BD95695D8AB3EA25555B /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -61,6 +63,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2213BD95695D8AB3EA25555B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 275258A68FB221CA96512D9D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -77,9 +81,15 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 492AAD93062A49196993214B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 58B9BF24A1DC8577FE72F028 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + A5897F3234DE4AE74CCBF51F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B830C2735666E24E5089DCE9 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + BFEA2B4643A0F54CAED9CDFB /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + D36B797FD17AF803B3F3A442 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -87,6 +97,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + A8DF12F92A961E0BE748392A /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,12 +106,22 @@ buildActionMask = 2147483647; files = ( 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, + FBB6B0E13D9A365390189BEF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 2451268784E41F8223F03594 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2213BD95695D8AB3EA25555B /* Pods_Runner.framework */, + A5897F3234DE4AE74CCBF51F /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -127,6 +148,8 @@ 33CEB47122A05771004F2AC0 /* Flutter */, 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, + 59A677840E39A9BEE994C28D /* Pods */, + 2451268784E41F8223F03594 /* Frameworks */, ); sourceTree = ""; }; @@ -175,6 +198,20 @@ path = Runner; sourceTree = ""; }; + 59A677840E39A9BEE994C28D /* Pods */ = { + isa = PBXGroup; + children = ( + D36B797FD17AF803B3F3A442 /* Pods-Runner.debug.xcconfig */, + 275258A68FB221CA96512D9D /* Pods-Runner.release.xcconfig */, + 492AAD93062A49196993214B /* Pods-Runner.profile.xcconfig */, + 58B9BF24A1DC8577FE72F028 /* Pods-RunnerTests.debug.xcconfig */, + B830C2735666E24E5089DCE9 /* Pods-RunnerTests.release.xcconfig */, + BFEA2B4643A0F54CAED9CDFB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -182,6 +219,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( + 81D9EC1F921BB673D2821177 /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -200,6 +238,7 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 69D32B8BF13975CC87752C21 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, @@ -330,6 +369,50 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; + 69D32B8BF13975CC87752C21 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 81D9EC1F921BB673D2821177 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -381,6 +464,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 58B9BF24A1DC8577FE72F028 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -395,6 +479,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B830C2735666E24E5089DCE9 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -409,6 +494,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; + baseConfigurationReference = BFEA2B4643A0F54CAED9CDFB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/packages/devtools_app/test/screens/inspector/diagnostics_test.dart b/packages/devtools_app/test/screens/inspector/diagnostics_test.dart deleted file mode 100644 index 1e1bb3e2457..00000000000 --- a/packages/devtools_app/test/screens/inspector/diagnostics_test.dart +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright 2022 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:convert'; - -import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app/src/shared/ui/utils.dart'; -import 'package:devtools_app_shared/ui.dart'; -import 'package:devtools_app_shared/utils.dart'; -import 'package:devtools_test/devtools_test.dart'; -import 'package:devtools_test/helpers.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('DiagnosticsNodeDescription', () { - final renderObjectJson = jsonDecode(''' - { - "properties": [ - { - "description": "horizontal", - "name": "direction" - }, - { - "description": "start", - "name": "mainAxisAlignment" - }, - { - "description": "max", - "name": "mainAxisSize" - }, - { - "description": "center", - "name": "crossAxisAlignment" - }, - { - "description": "ltr", - "name": "textDirection" - }, - { - "description": "down", - "name": "verticalDirection" - } - ] - } - '''); - setUp(() { - setGlobal( - DevToolsEnvironmentParameters, - ExternalDevToolsEnvironmentParameters(), - ); - setGlobal(PreferencesController, PreferencesController()); - setGlobal(IdeTheme, IdeTheme()); - setGlobal(ServiceConnectionManager, FakeServiceConnectionManager()); - }); - - group('hover eval', () { - final nodeJson = { - 'widgetRuntimeType': 'Row', - 'renderObject': renderObjectJson, - 'hasChildren': false, - 'children': [], - }; - final inspectorService = MockInspectorObjectGroupBase(); - final diagnostic = RemoteDiagnosticsNode( - nodeJson, - inspectorService, - false, - null, - ); - late DiagnosticsNodeDescription diagnosticsNodeDescription; - - setUp(() { - preferences.inspector.setHoverEvalMode(true); - diagnosticsNodeDescription = DiagnosticsNodeDescription(diagnostic); - }); - - testWidgets('can be enabled from preferences', ( - WidgetTester tester, - ) async { - await tester.pumpWidget(wrap(diagnosticsNodeDescription)); - - final hoverCardTooltip = - tester.widget(find.byType(HoverCardTooltip)) as HoverCardTooltip; - expect(hoverCardTooltip.enabled(), true); - }); - - testWidgets('can be disabled from preferences', ( - WidgetTester tester, - ) async { - preferences.inspector.setHoverEvalMode(false); - - await tester.pumpWidget(wrap(diagnosticsNodeDescription)); - - final hoverCardTooltip = - tester.widget(find.byType(HoverCardTooltip)) as HoverCardTooltip; - expect(hoverCardTooltip.enabled(), false); - }); - - testWidgets('disabled when inspector service not set', ( - WidgetTester tester, - ) async { - final diagnosticWithoutService = RemoteDiagnosticsNode( - nodeJson, - null, - false, - null, - ); - diagnosticsNodeDescription = DiagnosticsNodeDescription( - diagnosticWithoutService, - ); - - await tester.pumpWidget(wrap(diagnosticsNodeDescription)); - - final hoverCardTooltip = - tester.widget(find.byType(HoverCardTooltip)) as HoverCardTooltip; - expect(hoverCardTooltip.enabled(), false); - }); - }); - - group('approximateNodeWidth', () { - const epsilon = 7.0; - testWidgets('property diagnostics node with name and description', ( - WidgetTester tester, - ) async { - final nodeJson = { - 'widgetRuntimeType': 'Row', - 'renderObject': renderObjectJson, - 'hasChildren': false, - 'children': [], - 'description': - 'this is a showname description, which will show up after the name', - 'showName': true, - 'name': 'THE NAME to be shown', - }; - final diagnosticWithoutService = RemoteDiagnosticsNode( - nodeJson, - null, - true, - null, - ); - final diagnosticsNodeDescription = DiagnosticsNodeDescription( - diagnosticWithoutService, - ); - - await tester.pumpWidget(wrap(diagnosticsNodeDescription)); - - final approximatedWidth = - DiagnosticsNodeDescription.approximateNodeWidth( - diagnosticWithoutService, - ); - - final diagnosticsNodeFind = find.byType(DiagnosticsNodeDescription); - // There are many rich texts, containg the name, and description. - final allRichTexts = find - .descendant( - of: diagnosticsNodeFind, - matching: find.byType(RichText), - ) - .evaluate() - .map((e) => e.widget as RichText); - final measuredWidthOfAllRichTexts = allRichTexts.fold( - 0, - (previousValue, richText) => - previousValue + calculateTextSpanWidth(richText.text as TextSpan), - ); - expect( - approximatedWidth, - moreOrLessEquals(measuredWidthOfAllRichTexts, epsilon: epsilon), - ); - }); - - testWidgets('diagnostics node with icon and description', ( - WidgetTester tester, - ) async { - final nodeJson = { - 'widgetRuntimeType': 'Row', - 'renderObject': renderObjectJson, - 'hasChildren': false, - 'description': 'This is the description', - 'children': [], - 'showName': false, - }; - final diagnosticWithoutService = RemoteDiagnosticsNode( - nodeJson, - null, - false, - null, - ); - final diagnosticsNodeDescription = DiagnosticsNodeDescription( - diagnosticWithoutService, - ); - - await tester.pumpWidget(wrap(diagnosticsNodeDescription)); - - final approximatedTextWidth = - DiagnosticsNodeDescription.approximateNodeWidth( - diagnosticWithoutService, - ); - - final diagnosticsNodeFind = find.byType(DiagnosticsNodeDescription); - // The icon is part of the clickable width, so we include it. - final measuredIconWidth = tester - .getSize( - find.descendant( - of: diagnosticsNodeFind, - matching: find.byType(AssetImageIcon), - ), - ) - .width; - - // There is only one rich text widget, containing the description. - final richTextWidget = - find - .descendant( - of: diagnosticsNodeFind, - matching: find.byType(RichText), - ) - .first - .evaluate() - .first - .widget - as RichText; - final measuredTextWidth = calculateTextSpanWidth( - richTextWidget.text as TextSpan, - ); - - expect( - approximatedTextWidth, - moreOrLessEquals( - measuredTextWidth + measuredIconWidth, - epsilon: epsilon, - ), - ); - }); - - testWidgets('error node with different fontSize', ( - WidgetTester tester, - ) async { - // Nodes with normal levels default to using the default fontSize, so - // using an error level node allows us to test different font sizes. - final nodeJson = { - 'widgetRuntimeType': 'Row', - 'renderObject': renderObjectJson, - 'hasChildren': false, - 'children': [], - 'description': - 'this is a showname description, which will show up after the name', - 'showName': true, - 'name': 'THE NAME to be shown', - 'level': 'error', - }; - final diagnosticWithoutService = RemoteDiagnosticsNode( - nodeJson, - null, - false, - null, - ); - - //Use a textStyle that is much larger than the normal style - const textStyle = TextStyle(fontSize: 24.0, fontFamily: 'Roboto'); - final diagnosticsNodeDescription = DiagnosticsNodeDescription( - diagnosticWithoutService, - style: textStyle, - ); - - await tester.pumpWidget(wrap(diagnosticsNodeDescription)); - - final approximatedWidth = - DiagnosticsNodeDescription.approximateNodeWidth( - diagnosticWithoutService, - ); - - final diagnosticsNodeFind = find.byType(DiagnosticsNodeDescription); - // There are many rich texts, containg the name, and description. - final allRichTexts = find - .descendant( - of: diagnosticsNodeFind, - matching: find.byType(RichText), - ) - .evaluate() - .map((e) => e.widget as RichText); - - final measuredWidthOfAllRichTexts = allRichTexts.fold(0, ( - previousValue, - richText, - ) { - final originalTextSpan = richText.text as TextSpan; - - return previousValue + calculateTextSpanWidth(originalTextSpan); - }); - - expect( - approximatedWidth, - moreOrLessEquals(measuredWidthOfAllRichTexts, epsilon: epsilon), - ); - }); - }); - }); -} diff --git a/packages/devtools_app/test/screens/inspector/inspector_error_navigator_test.dart b/packages/devtools_app/test/screens/inspector/inspector_error_navigator_test.dart deleted file mode 100644 index b546faae833..00000000000 --- a/packages/devtools_app/test/screens/inspector/inspector_error_navigator_test.dart +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:collection'; - -import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app_shared/ui.dart'; -import 'package:devtools_app_shared/utils.dart'; -import 'package:devtools_test/devtools_test.dart'; -import 'package:devtools_test/helpers.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - setUp(() { - setGlobal(ServiceConnectionManager, FakeServiceConnectionManager()); - setGlobal(IdeTheme, IdeTheme()); - }); - - group('Inspector Error Navigator', () { - Future testNavigate( - WidgetTester tester, { - required IconData tapIcon, - required int errorCount, - int? startIndex, - int? expectedIndex, - }) async { - var index = startIndex; - final navigator = ErrorNavigator( - errorIndex: index, - errors: _generateErrors(errorCount), - onSelectError: (newIndex) => index = newIndex, - ); - - await tester.pumpWidget(wrap(navigator)); - await tester.tap(find.byIcon(tapIcon)); - - expect(index, equals(expectedIndex)); - } - - testWidgets('shows count when no selection', (WidgetTester tester) async { - await tester.pumpWidget( - wrap( - ErrorNavigator( - errorIndex: null, - errors: _generateErrors(10), - onSelectError: (_) {}, - ), - ), - ); - expect(find.text('Errors: 10'), findsOneWidget); - }); - - testWidgets('shows x/y when selected error', (WidgetTester tester) async { - await tester.pumpWidget( - wrap( - ErrorNavigator( - errorIndex: 0, - errors: _generateErrors(10), - onSelectError: (_) {}, - ), - ), - ); - expect(find.text('Error 1/10'), findsOneWidget); - }); - - testWidgets( - 'can navigate forwards', - // Intentionally unawaited. - // ignore: discarded_futures - (WidgetTester tester) => testNavigate( - tester, - tapIcon: Icons.keyboard_arrow_down, - errorCount: 10, - startIndex: 5, - expectedIndex: 6, - ), - ); - - testWidgets( - 'can navigate backwards', - // Intentionally unawaited. - // ignore: discarded_futures - (WidgetTester tester) => testNavigate( - tester, - tapIcon: Icons.keyboard_arrow_up, - errorCount: 10, - startIndex: 5, - expectedIndex: 4, - ), - ); - - testWidgets( - 'wraps forwards', - // Intentionally unawaited. - // ignore: discarded_futures - (WidgetTester tester) => testNavigate( - tester, - tapIcon: Icons.keyboard_arrow_down, - errorCount: 10, - startIndex: 9, - expectedIndex: 0, - ), - ); - - testWidgets( - 'wraps backwards', - // Intentionally unawaited. - // ignore: discarded_futures - (WidgetTester tester) => testNavigate( - tester, - tapIcon: Icons.keyboard_arrow_up, - errorCount: 10, - startIndex: 0, - expectedIndex: 9, - ), - ); - }); -} - -LinkedHashMap _generateErrors(int count) => - LinkedHashMap.fromEntries( - List.generate( - count, - (index) => MapEntry( - 'error-$index', - InspectableWidgetError('Error $index', 'error-$index'), - ), - ), - ); diff --git a/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart b/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart deleted file mode 100644 index 659959add0c..00000000000 --- a/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart +++ /dev/null @@ -1,483 +0,0 @@ -// Copyright 2020 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app_shared/utils.dart'; -import 'package:devtools_test/helpers.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import '../../test_infra/flutter_test_driver.dart' show FlutterRunConfiguration; -import '../../test_infra/flutter_test_environment.dart'; -import '../../test_infra/matchers/matchers.dart'; - -// This is a bit conservative to ensure we do not get flakes due to -// slow interactions with the VM Service. This delay could likely be -// reduced to under 1 second without introducing flakes. -const inspectorChangeSettleTime = Duration(seconds: 2); - -void main() { - const windowSize = Size(2600.0, 1200.0); - // We need to use real async in this test so we need to use this binding. - initializeLiveTestWidgetsFlutterBindingWithAssets(); - - late FlutterTestEnvironment env; - - Future resetInspectorSelection() async { - final service = serviceConnection.inspectorService; - if (env.reuseTestEnvironment) { - // Ensure the previous test did not set the selection on the device. - // TODO(jacobr): add a proper method to WidgetInspectorService that does - // this. setSelection currently ignores null selection requests which is - // a misfeature. - await service!.inspectorLibrary.eval( - 'WidgetInspectorService.instance.selection.clear()', - isAlive: null, - ); - } - } - - setUp(() async { - await env.setupEnvironment(); - setGlobal(BannerMessagesController, BannerMessagesController()); - // Ensure the legacy inspector is enabled: - preferences.inspector.setLegacyInspectorEnabled(true); - }); - - group('screenshot tests', () { - setUpAll(() { - env = FlutterTestEnvironment( - const FlutterRunConfiguration(withDebugger: true), - ); - env.afterEverySetup = resetInspectorSelection; - }); - - tearDownAll(() async { - await env.tearDownEnvironment(force: true); - }); - - testWidgetsWithWindowSize('navigation', windowSize, ( - WidgetTester tester, - ) async { - await env.setupEnvironment(); - expect(serviceConnection.serviceManager.service, equals(env.service)); - expect(serviceConnection.serviceManager.isolateManager, isNotNull); - - final screen = InspectorScreen(); - await tester.pumpWidget( - wrapWithInspectorControllers(Builder(builder: screen.build)), - ); - await tester.pump(const Duration(seconds: 1)); - final InspectorScreenBodyState state = tester.state( - find.byType(InspectorScreenBody), - ); - final controller = state.controller; - while (!controller.flutterAppFrameReady) { - await controller.maybeLoadUI(); - await tester.pumpAndSettle(); - } - // Give time for the initial animation to complete. - await tester.pumpAndSettle(inspectorChangeSettleTime); - await expectLater( - find.byType(InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_initial_load.png', - ), - ); - - // Click on the Center widget (row index #5) - await tester.tap(find.richText('Center')); - await tester.pumpAndSettle(inspectorChangeSettleTime); - await expectLater( - find.byType(InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_select_center.png', - ), - ); - - // Select the details tree. - await tester.tap( - find.text(InspectorDetailsViewType.widgetDetailsTree.key), - ); - await tester.pumpAndSettle(inspectorChangeSettleTime); - await expectLater( - find.byType(InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_select_center_details_tree.png', - ), - // Implementation widgets from Flutter framework are not guaranteed to - // be stable. - skip: 'https://github.com/flutter/flutter/issues/172037', - ); - - // Select the RichText row. - await tester.tap(find.richText('RichText')); - await tester.pumpAndSettle(inspectorChangeSettleTime); - await expectLater( - find.byType(InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_richtext_selected.png', - ), - // Implementation widgets from Flutter framework are not guaranteed to - // be stable. - skip: 'https://github.com/flutter/flutter/issues/172037', - ); - - // Test hovering over the icon shown when a property has its default - // value. - // TODO(jacobr): support tooltips in the Flutter version of the inspector. - // https://github.com/flutter/devtools/issues/2570. - // For example, verify that the tooltip hovering over the default value - // icons is "Default value". - // Test selecting a widget. - - // Two 'Scaffold's: a breadcrumb and an actual tree item - expect(find.richText('Scaffold'), findsNWidgets(2)); - // select Scaffold widget in summary tree. - await tester.tap(find.richText('Scaffold').last); - await tester.pumpAndSettle(inspectorChangeSettleTime); - // This tree is huge. If there is a change to package:flutter it may - // change. If this happens don't panic and rebaseline the golden. - await expectLater( - find.byType(InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_scaffold_selected.png', - ), - // Implementation widgets from Flutter framework are not guaranteed to - // be stable. - skip: 'https://github.com/flutter/flutter/issues/172037', - ); - - // The important thing about this is that the details tree should scroll - // instead of re-rooting as the selected row is already visible in the - // details tree. - await tester.tap(find.richText('AnimatedPhysicalModel')); - await tester.pumpAndSettle(inspectorChangeSettleTime); - await expectLater( - find.byType(InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_animated_physical_model_selected.png', - ), - // Implementation widgets from Flutter framework are not guaranteed to - // be stable. - skip: 'https://github.com/flutter/flutter/issues/172037', - ); - - await env.tearDownEnvironment(); - }); - - // TODO(jacobr): convert these tests to screenshot tests like the initial - // state test. - /* - - - // Intentionally trigger multiple quick navigate action to ensure that - // multiple quick navigation commands in a row do not trigger race - // conditions getting out of order updates from the server. - tree.navigateDown(); - tree.navigateDown(); - tree.navigateDown(); - await detailsTree.nextUiFrame; - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center\n' - ' │ [/icons/inspector/textArea.png]Text\n' - ' └─▼[A]AppBar <-- selected\n' - ' [/icons/inspector/textArea.png]Text\n', - ), - ); - // Make sure we don't go off the bottom of the tree. - tree.navigateDown(); - tree.navigateDown(); - tree.navigateDown(); - tree.navigateDown(); - tree.navigateDown(); - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center\n' - ' │ [/icons/inspector/textArea.png]Text\n' - ' └─▼[A]AppBar\n' - ' [/icons/inspector/textArea.png]Text <-- selected\n', - ), - ); - tree.navigateUp(); - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center\n' - ' │ [/icons/inspector/textArea.png]Text\n' - ' └─▼[A]AppBar <-- selected\n' - ' [/icons/inspector/textArea.png]Text\n', - ), - ); - tree.navigateLeft(); - await detailsTree.nextUiFrame; - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center\n' - ' │ [/icons/inspector/textArea.png]Text\n' - ' └─▶[A]AppBar <-- selected\n', - ), - ); - tree.navigateLeft(); - // First navigate left goes to the parent. - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold <-- selected\n' - ' ├───▼[C]Center\n' - ' │ [/icons/inspector/textArea.png]Text\n' - ' └─▶[A]AppBar\n', - ), - ); - tree.navigateLeft(); - // Next navigate left closes the parent. - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▶[S]Scaffold <-- selected\n', - ), - ); - - tree.navigateRight(); - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold <-- selected\n' - ' ├───▼[C]Center\n' - ' │ [/icons/inspector/textArea.png]Text\n' - ' └─▶[A]AppBar\n', - ), - ); - - // Node is already expanded so this is equivalent to navigate down. - tree.navigateRight(); - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center <-- selected\n' - ' │ [/icons/inspector/textArea.png]Text\n' - ' └─▶[A]AppBar\n', - ), - ); - - await detailsTree.nextUiFrame; - - // Make sure the details and main trees have not gotten out of sync. - expect( - detailsTree.toStringDeep(hidePropertyLines: true), - equalsIgnoringHashCodes('▼[C]Center <-- selected\n' - '└─▼[/icons/inspector/textArea.png]Text\n' - ' └─▼[/icons/inspector/textArea.png]RichText\n'), - ); - - await env.tearDownEnvironment(); - }); - */ - - // TODO(jacobr): uncomment hotReload test once the hot reload test is not - // flaky. https://github.com/flutter/devtools/issues/642 - /* - test('hotReload', () async { - if (flutterVersion == '1.2.1') { - // This test can be flaky in Flutter 1.2.1 because of - // https://github.com/dart-lang/sdk/issues/33838 - // so we just skip it. This block of code can be removed after the next - // stable flutter release. - // TODO(dantup): Remove this. - return; - } - await env.setupEnvironment(); - - await serviceManager.performHotReload(); - // Ensure the inspector does not fall over and die after a hot reload. - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center\n' - ' │ [/icons/inspector/textArea.png]Text <-- selected\n' - ' └─▼[A]AppBar\n' - ' [/icons/inspector/textArea.png]Text\n', - ), - ); - - // TODO(jacobr): would be nice to have some tests that trigger a hot - // reload that actually changes app state in a meaningful way. - - await env.tearDownEnvironment(); - }); - */ - // TODO(jacobr): uncomment out the hotRestart tests once - // https://github.com/flutter/devtools/issues/337 is fixed. - /* - test('hotRestart', () async { - await env.setupEnvironment(); - - // The important thing about this is that the details tree should scroll - // instead of re-rooting as the selected row is already visible in the - // details tree. - simulateRowClick(tree, rowIndex: 4); - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R]root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center <-- selected\n' - ' │ ▼[/icons/inspector/textArea.png]Text\n' - ' └─▼[A]AppBar\n' - ' ▼[/icons/inspector/textArea.png]Text\n', - ), - ); - - /// After the hot restart some existing calls to the vm service may - /// timeout and that is ok. - serviceManager.manager.service.doNotWaitForPendingFuturesBeforeExit(); - - await serviceManager.performHotRestart(); - // The isolate starts out paused on a hot restart so we have to resume - // it manually to make the test pass. - - await serviceManager.manager.service - .resume(serviceManager.isolateManager.selectedIsolate.id); - - // First UI transition is to an empty tree. - await detailsTree.nextUiFrame; - expect(tree.toStringDeep(), equalsIgnoringHashCodes('\n')); - - // Notice that the selection has been lost due to the hot restart. - await detailsTree.nextUiFrame; - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center\n' - ' │ ▼[/icons/inspector/textArea.png]Text\n' - ' └─▼[A]AppBar\n' - ' ▼[/icons/inspector/textArea.png]Text\n', - ), - ); - - // Verify that the selection can actually be changed after a restart. - simulateRowClick(tree, rowIndex: 4); - expect( - tree.toStringDeep(), - equalsIgnoringHashCodes( - '▼[R][root]\n' - ' ▼[M]MyApp\n' - ' ▼[M]MaterialApp\n' - ' ▼[S]Scaffold\n' - ' ├───▼[C]Center <-- selected\n' - ' │ ▼[/icons/inspector/textArea.png]Text\n' - ' └─▼[A]AppBar\n' - ' ▼[/icons/inspector/textArea.png]Text\n', - ), - ); - await env.tearDownEnvironment(); - }); -*/ - }); - - group('widget errors', () { - setUpAll(() async { - env = FlutterTestEnvironment( - testAppDirectory: 'test/test_infra/fixtures/inspector_app', - const FlutterRunConfiguration(withDebugger: true), - ); - await env.setupEnvironment( - config: const FlutterRunConfiguration( - withDebugger: true, - entryScript: 'lib/overflow_errors.dart', - ), - ); - env.afterEverySetup = resetInspectorSelection; - // Enable the legacy inspector. - preferences.inspector.setLegacyInspectorEnabled(true); - }); - - testWidgetsWithWindowSize('show navigator and error labels', windowSize, ( - WidgetTester tester, - ) async { - expect(serviceConnection.serviceManager.service, equals(env.service)); - expect(serviceConnection.serviceManager.isolateManager, isNotNull); - - final screen = InspectorScreen(); - await tester.pumpWidget( - wrapWithInspectorControllers(Builder(builder: screen.build)), - ); - await tester.pumpAndSettle(const Duration(seconds: 1)); - final InspectorScreenBodyState state = tester.state( - find.byType(InspectorScreenBody), - ); - final controller = state.controller; - while (!controller.flutterAppFrameReady) { - await controller.maybeLoadUI(); - await tester.pumpAndSettle(); - } - await env.flutter!.hotReload(); - // Give time for the initial animation to complete. - await tester.pumpAndSettle(inspectorChangeSettleTime); - await expectLater( - find.byType(InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_errors_1_initial_load.png', - ), - ); - - // Navigate so one of the errors is selected. - for (var i = 0; i < 2; i++) { - await tester.tap(find.byIcon(Icons.keyboard_arrow_down)); - await tester.pumpAndSettle(inspectorChangeSettleTime); - } - await expectLater( - find.byType(InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_errors_2_error_selected.png', - ), - ); - - await env.tearDownEnvironment(); - }); - }); -} diff --git a/packages/devtools_app/test/screens/inspector/inspector_screen_test.dart b/packages/devtools_app/test/screens/inspector/inspector_screen_test.dart deleted file mode 100644 index 0a09554f33e..00000000000 --- a/packages/devtools_app/test/screens/inspector/inspector_screen_test.dart +++ /dev/null @@ -1,374 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -// Fake construction requires number of unawaited calls. -// ignore_for_file: discarded_futures - -import 'dart:convert'; - -import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app/src/screens/inspector/layout_explorer/flex/flex.dart'; -import 'package:devtools_app/src/screens/inspector/layout_explorer/layout_explorer.dart'; -import 'package:devtools_app/src/screens/inspector_shared/inspector_settings_dialog.dart'; -import 'package:devtools_app/src/service/service_extensions.dart' as extensions; -import 'package:devtools_app_shared/ui.dart'; -import 'package:devtools_app_shared/utils.dart'; -import 'package:devtools_test/devtools_test.dart'; -import 'package:devtools_test/helpers.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart' hide Fake; -import 'package:mockito/mockito.dart'; - -import '../../test_infra/flutter_test_storage.dart'; - -void main() { - final screen = InspectorScreen(); - - late FakeServiceConnectionManager fakeServiceConnection; - late FakeServiceExtensionManager fakeExtensionManager; - const windowSize = Size(2600.0, 1200.0); - - final debuggerController = createMockDebuggerControllerWithDefaults(); - - Widget buildInspectorScreen() { - return wrapWithControllers( - Builder(builder: screen.build), - debugger: debuggerController, - inspector: InspectorScreenController(), - ); - } - - setUp(() { - fakeServiceConnection = FakeServiceConnectionManager(); - fakeExtensionManager = - fakeServiceConnection.serviceManager.serviceExtensionManager; - mockConnectedApp(fakeServiceConnection.serviceManager.connectedApp!); - when( - fakeServiceConnection.errorBadgeManager.errorCountNotifier('inspector'), - ).thenReturn(ValueNotifier(0)); - - setGlobal( - DevToolsEnvironmentParameters, - ExternalDevToolsEnvironmentParameters(), - ); - setGlobal(ServiceConnectionManager, fakeServiceConnection); - setGlobal(IdeTheme, IdeTheme()); - setGlobal(PreferencesController, PreferencesController()); - setGlobal(Storage, FlutterTestStorage()); - setGlobal(NotificationService, NotificationService()); - setGlobal(BannerMessagesController, BannerMessagesController()); - fakeServiceConnection.consoleService.ensureServiceInitialized(); - // Enable the legacy inspector: - preferences.inspector.setLegacyInspectorEnabled(true); - }); - - Future mockExtensions() async { - fakeExtensionManager.extensionValueOnDevice = { - extensions.toggleSelectWidgetMode.extension: true, - extensions.enableOnDeviceInspector.extension: true, - extensions.toggleOnDeviceWidgetInspector.extension: true, - extensions.debugPaint.extension: false, - }; - await fakeExtensionManager.fakeAddServiceExtension( - extensions.toggleOnDeviceWidgetInspector.extension, - ); - await fakeExtensionManager.fakeAddServiceExtension( - extensions.toggleSelectWidgetMode.extension, - ); - await fakeExtensionManager.fakeAddServiceExtension( - extensions.enableOnDeviceInspector.extension, - ); - await fakeExtensionManager.fakeAddServiceExtension( - extensions.debugPaint.extension, - ); - await fakeExtensionManager.fakeFrame(); - } - - void mockNoExtensionsAvailable() { - fakeExtensionManager.extensionValueOnDevice = { - extensions.toggleOnDeviceWidgetInspector.extension: true, - extensions.toggleSelectWidgetMode.extension: false, - extensions.debugPaint.extension: false, - }; - // Don't actually send any events to the client indicating that service - // extensions are avaiable. - fakeExtensionManager.fakeFrame(); - } - - testWidgetsWithWindowSize('builds its tab', windowSize, ( - WidgetTester tester, - ) async { - await tester.pumpWidget(buildInspectorScreen()); - await tester.pumpAndSettle(); - expect(find.byType(InspectorScreenBody), findsOneWidget); - }); - - group('Widget Errors', () { - // Display of error navigator/indicators is tested by a golden in - // inspector_integration_test.dart - - testWidgetsWithWindowSize( - 'does not render error navigator if no errors', - windowSize, - (WidgetTester tester) async { - await tester.pumpWidget(buildInspectorScreen()); - expect(find.byType(ErrorNavigator), findsNothing); - }, - ); - }); - - testWidgetsWithWindowSize('builds with no data', windowSize, ( - WidgetTester tester, - ) async { - // Make sure the window is wide enough to display description text. - - await tester.pumpWidget(buildInspectorScreen()); - expect(find.byType(InspectorScreenBody), findsOneWidget); - expect(find.byTooltip('Refresh Tree'), findsOneWidget); - expect(find.text(extensions.debugPaint.title), findsOneWidget); - // Make sure there is not an overflow if the window is narrow. - // TODO(jacobr): determine why there are overflows in the test environment - // but not on the actual device for this cae. - // await setWindowSize(const Size(1000.0, 1200.0)); - // Verify that description text is no-longer shown. - // expect(find.text(extensions.debugPaint.description), findsOneWidget); - }); - - testWidgetsWithWindowSize( - 'Test toggling service extension buttons', - windowSize, - (WidgetTester tester) async { - await mockExtensions(); - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .debugPaint - .extension], - isFalse, - ); - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .toggleOnDeviceWidgetInspector - .extension], - isTrue, - ); - - await tester.pumpWidget(buildInspectorScreen()); - - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .toggleSelectWidgetMode - .extension], - isTrue, - ); - - // We need a frame to find out that the service extension state has changed. - expect(find.byType(InspectorScreenBody), findsOneWidget); - expect( - find.text(extensions.toggleSelectWidgetMode.title), - findsOneWidget, - ); - expect(find.text(extensions.debugPaint.title), findsOneWidget); - await tester.pump(); - await tester.tap(find.text(extensions.toggleSelectWidgetMode.title)); - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .toggleSelectWidgetMode - .extension], - isFalse, - ); - // Verify the other service extension's state hasn't changed. - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .debugPaint - .extension], - isFalse, - ); - - await tester.tap(find.text(extensions.toggleSelectWidgetMode.title)); - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .toggleSelectWidgetMode - .extension], - isTrue, - ); - - await tester.tap(find.text(extensions.debugPaint.title)); - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .debugPaint - .extension], - isTrue, - ); - }, - ); - - testWidgetsWithWindowSize( - 'Test toggling service extension buttons with no extensions available', - windowSize, - (WidgetTester tester) async { - mockNoExtensionsAvailable(); - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .debugPaint - .extension], - isFalse, - ); - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .toggleOnDeviceWidgetInspector - .extension], - isTrue, - ); - - await tester.pumpWidget(buildInspectorScreen()); - await tester.pump(); - expect(find.byType(InspectorScreenBody), findsOneWidget); - expect( - find.text(extensions.toggleOnDeviceWidgetInspector.title), - findsOneWidget, - ); - expect(find.text(extensions.debugPaint.title), findsOneWidget); - await tester.pump(); - - await tester.tap( - find.text(extensions.toggleOnDeviceWidgetInspector.title), - ); - // Verify the service extension state has not changed. - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .toggleOnDeviceWidgetInspector - .extension], - isTrue, - ); - await tester.tap( - find.text(extensions.toggleOnDeviceWidgetInspector.title), - ); - // Verify the service extension state has not changed. - expect( - fakeExtensionManager.extensionValueOnDevice[extensions - .toggleOnDeviceWidgetInspector - .extension], - isTrue, - ); - - // TODO(jacobr): also verify that the service extension buttons look - // visually disabled. - }, - ); - - group('LayoutDetailsTab', () { - final renderObjectJson = jsonDecode(''' - { - "properties": [ - { - "description": "horizontal", - "name": "direction" - }, - { - "description": "start", - "name": "mainAxisAlignment" - }, - { - "description": "max", - "name": "mainAxisSize" - }, - { - "description": "center", - "name": "crossAxisAlignment" - }, - { - "description": "ltr", - "name": "textDirection" - }, - { - "description": "down", - "name": "verticalDirection" - } - ] - } - '''); - final diagnostic = RemoteDiagnosticsNode( - { - 'widgetRuntimeType': 'Row', - 'renderObject': renderObjectJson, - 'hasChildren': false, - 'children': [], - }, - null, - false, - null, - ); - final treeNode = InspectorTreeNode()..diagnostic = diagnostic; - testWidgetsWithWindowSize( - 'should render StoryOfYourFlexWidget', - windowSize, - (WidgetTester tester) async { - final controller = TestInspectorController()..setSelectedNode(treeNode); - await tester.pumpWidget( - MaterialApp( - home: Scaffold(body: LayoutExplorerTab(controller: controller)), - ), - ); - expect(find.byType(FlexLayoutExplorerWidget), findsOneWidget); - }, - ); - - testWidgetsWithWindowSize( - 'should listen to controller selection event', - windowSize, - (WidgetTester tester) async { - final controller = TestInspectorController(); - await tester.pumpWidget( - MaterialApp( - home: Scaffold(body: LayoutExplorerTab(controller: controller)), - ), - ); - expect(find.byType(FlexLayoutExplorerWidget), findsNothing); - controller.setSelectedNode(treeNode); - await tester.pumpAndSettle(); - expect(find.byType(FlexLayoutExplorerWidget), findsOneWidget); - }, - ); - }); - - group('FlutterInspectorSettingsDialog', () { - const startingHoverEvalModeValue = false; - - setUp(() { - preferences.inspector.setHoverEvalMode(startingHoverEvalModeValue); - }); - - testWidgetsWithWindowSize( - 'can update hover inspection setting', - windowSize, - (WidgetTester tester) async { - await tester.pumpWidget(buildInspectorScreen()); - - await tester.tap(find.byType(SettingsOutlinedButton)); - await tester.pumpAndSettle(); - expect(find.byType(FlutterInspectorSettingsDialog), findsOneWidget); - - final hoverCheckBoxSetting = find.ancestor( - of: find.richTextContaining('Enable hover inspection'), - matching: find.byType(CheckboxSetting), - ); - final hoverModeCheckBox = find.descendant( - of: hoverCheckBoxSetting, - matching: find.byType(NotifierCheckbox), - ); - await tester.tap(hoverModeCheckBox); - await tester.pumpAndSettle(); - expect( - preferences.inspector.hoverEvalModeEnabled.value, - !startingHoverEvalModeValue, - ); - }, - ); - }); - - // TODO(jacobr): add screenshot tests that connect to a test application - // in the same way the inspector_controller test does today and take golden - // images. Alternately: support an offline inspector mode and add tests of - // that mode which would enable faster tests that run as unittests. -} diff --git a/packages/devtools_app/test/screens/inspector/inspector_tree_test.dart b/packages/devtools_app/test/screens/inspector/inspector_tree_test.dart deleted file mode 100644 index 17d1b1238a3..00000000000 --- a/packages/devtools_app/test/screens/inspector/inspector_tree_test.dart +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app/src/screens/inspector/inspector_breadcrumbs.dart'; -import 'package:devtools_app_shared/ui.dart'; -import 'package:devtools_app_shared/utils.dart'; -import 'package:devtools_test/devtools_test.dart'; -import 'package:devtools_test/helpers.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart' hide Fake; -import 'package:mockito/mockito.dart'; - -import 'utils/inspector_tree.dart'; - -void main() { - late FakeServiceConnectionManager fakeServiceConnection; - late InspectorController inspectorController; - - setUp(() { - fakeServiceConnection = FakeServiceConnectionManager(); - final app = fakeServiceConnection.serviceManager.connectedApp!; - when(app.isFlutterAppNow).thenReturn(true); - when(app.isProfileBuildNow).thenReturn(false); - - setGlobal( - DevToolsEnvironmentParameters, - ExternalDevToolsEnvironmentParameters(), - ); - setGlobal(ServiceConnectionManager, fakeServiceConnection); - setGlobal(IdeTheme, IdeTheme()); - setGlobal(PreferencesController, PreferencesController()); - setGlobal(NotificationService, NotificationService()); - setGlobal(BreakpointManager, BreakpointManager()); - mockConnectedApp(fakeServiceConnection.serviceManager.connectedApp!); - - inspectorController = InspectorController( - inspectorTree: InspectorTreeController(), - detailsTree: InspectorTreeController(), - treeType: FlutterTreeType.widget, - )..firstInspectorTreeLoadCompleted = true; - }); - - Future pumpInspectorTree( - WidgetTester tester, { - required InspectorTreeController treeController, - bool isSummaryTree = false, - }) async { - final debuggerController = DebuggerController(); - final summaryTreeController = isSummaryTree - ? null - : InspectorTreeController(); - await tester.pumpWidget( - wrapWithControllers( - debugger: debuggerController, - InspectorTree( - controller: inspectorController, - treeController: treeController, - summaryTreeController: summaryTreeController, - isSummaryTree: isSummaryTree, - ), - ), - ); - await tester.pumpAndSettle(); - } - - group('InspectorTreeController', () { - testWidgets('Row with negative index regression test', ( - WidgetTester tester, - ) async { - final treeController = InspectorTreeController() - ..config = InspectorTreeConfig( - onNodeAdded: (_, _) {}, - onClientActiveChange: (_) {}, - ); - await pumpInspectorTree(tester, treeController: treeController); - - expect(treeController.getRow(const Offset(0, -100.0)), isNull); - expect(treeController.getRowOffset(-1), equals(0)); - - expect(treeController.getRow(const Offset(0, 0.0)), isNull); - expect(treeController.getRowOffset(0), equals(0)); - - treeController.root = InspectorTreeNode() - ..appendChild(InspectorTreeNode()); - - await pumpInspectorTree(tester, treeController: treeController); - - expect(treeController.getRow(const Offset(0, -20))!.index, 0); - expect(treeController.getRowOffset(-1), equals(0)); - expect(treeController.getRow(const Offset(0, 0.0)), isNotNull); - expect(treeController.getRowOffset(0), equals(0)); - - // This operation would previously throw an exception in debug builds - // and infinite loop in release builds. - treeController.scrollToRect(const Rect.fromLTWH(0, -20, 100, 100)); - }); - }); - - group('Inspector tree content preview', () { - testWidgets('Shows simple text preview', (WidgetTester tester) async { - final diagnosticNode = await widgetToInspectorTreeDiagnosticsNode( - widget: const Text('Content'), - tester: tester, - ); - - final treeController = inspectorTreeControllerFromNode(diagnosticNode); - await pumpInspectorTree(tester, treeController: treeController); - - expect(find.richText('Text: "Content"'), findsOneWidget); - }); - - testWidgets('Shows preview from Text.rich', (WidgetTester tester) async { - final diagnosticNode = await widgetToInspectorTreeDiagnosticsNode( - widget: const Text.rich( - TextSpan( - children: [ - TextSpan(text: 'Rich '), - TextSpan(text: 'text'), - ], - ), - ), - tester: tester, - ); - - final treeController = inspectorTreeControllerFromNode(diagnosticNode); - await pumpInspectorTree(tester, treeController: treeController); - - expect(find.richText('Text: "Rich text"'), findsOneWidget); - }); - - testWidgets('Strips new lines from text preview', ( - WidgetTester tester, - ) async { - final diagnosticNode = await widgetToInspectorTreeDiagnosticsNode( - widget: const Text('Multiline\ntext\n\ncontent'), - tester: tester, - ); - - final treeController = inspectorTreeControllerFromNode(diagnosticNode); - await pumpInspectorTree(tester, treeController: treeController); - - expect(find.richText('Text: "Multiline text content"'), findsOneWidget); - }); - - testWidgets('Shows breadcrumbs in Widget detail tree', (tester) async { - final diagnosticNode = await widgetToInspectorTreeDiagnosticsNode( - widget: const Text('Hello'), - tester: tester, - ); - - final treeController = inspectorTreeControllerFromNode(diagnosticNode); - await pumpInspectorTree(tester, treeController: treeController); - - expect(find.byType(InspectorBreadcrumbNavigator), findsOneWidget); - }); - - testWidgets('Shows no breadcrumbs widget in summary tree', (tester) async { - final diagnosticNode = await widgetToInspectorTreeDiagnosticsNode( - widget: const Text('Hello'), - tester: tester, - ); - - final treeController = inspectorTreeControllerFromNode(diagnosticNode); - await pumpInspectorTree( - tester, - treeController: treeController, - isSummaryTree: true, - ); - - expect(find.byType(InspectorBreadcrumbNavigator), findsNothing); - }); - }); -} diff --git a/packages/devtools_app/test/screens/inspector/layout_explorer/flex/arrow_test.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/flex/arrow_test.dart deleted file mode 100644 index 2b5bf8cf887..00000000000 --- a/packages/devtools_app/test/screens/inspector/layout_explorer/flex/arrow_test.dart +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app/src/screens/inspector/layout_explorer/ui/arrow.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import '../../../../test_infra/matchers/matchers.dart'; - -void main() { - const relativeGoldenPath = - '../../../../test_infra/goldens/inspector/layout_explorer/flex'; - - group('Arrow Golden Tests', () { - group('Unidirectional', () { - Widget buildUnidirectionalArrowWrapper(ArrowType type) => Directionality( - textDirection: TextDirection.ltr, - child: SizedBox( - width: 100, - height: 100, - child: ArrowWrapper.unidirectional( - type: type, - arrowColor: Colors.black, - arrowHeadSize: 8.0, - child: Container(width: 10, height: 10, color: Colors.red), - ), - ), - ); - testWidgets('left', (WidgetTester tester) async { - final widget = buildUnidirectionalArrowWrapper(ArrowType.left); - await tester.pumpWidget(widget); - await expectLater( - find.byWidget(widget), - matchesDevToolsGolden( - '$relativeGoldenPath/arrow_unidirectional_left.png', - ), - ); - }, skip: kIsWeb); - testWidgets('up', (WidgetTester tester) async { - final widget = buildUnidirectionalArrowWrapper(ArrowType.up); - await tester.pumpWidget(widget); - await expectLater( - find.byWidget(widget), - matchesDevToolsGolden( - '$relativeGoldenPath/arrow_unidirectional_up.png', - ), - ); - }, skip: kIsWeb); - testWidgets('right', (WidgetTester tester) async { - final widget = buildUnidirectionalArrowWrapper(ArrowType.right); - await tester.pumpWidget(widget); - await expectLater( - find.byWidget(widget), - matchesDevToolsGolden( - '$relativeGoldenPath/arrow_unidirectional_right.png', - ), - ); - }, skip: kIsWeb); - testWidgets('down', (WidgetTester tester) async { - final widget = buildUnidirectionalArrowWrapper(ArrowType.down); - await tester.pumpWidget(widget); - await expectLater( - find.byWidget(widget), - matchesDevToolsGolden( - '$relativeGoldenPath/arrow_unidirectional_down.png', - ), - ); - }, skip: kIsWeb); - }); - - group('Bidirectional', () { - Widget buildBidirectionalArrowWrapper(Axis direction) => Directionality( - textDirection: TextDirection.ltr, - child: SizedBox( - width: 100, - height: 100, - child: ArrowWrapper.bidirectional( - direction: direction, - arrowColor: Colors.black, - arrowHeadSize: 8.0, - child: Container(width: 10, height: 10, color: Colors.red), - ), - ), - ); - testWidgets('horizontal', (WidgetTester tester) async { - final widget = buildBidirectionalArrowWrapper(Axis.horizontal); - await tester.pumpWidget(widget); - await expectLater( - find.byWidget(widget), - matchesDevToolsGolden( - '$relativeGoldenPath/arrow_bidirectional_horizontal.png', - ), - ); - }, skip: kIsWeb); - testWidgets('vertical', (WidgetTester tester) async { - final widget = buildBidirectionalArrowWrapper(Axis.vertical); - await tester.pumpWidget(widget); - await expectLater( - find.byWidget(widget), - matchesDevToolsGolden( - '$relativeGoldenPath/arrow_bidirectional_vertical.png', - ), - ); - }, skip: kIsWeb); - }); - }); -} diff --git a/packages/devtools_app/test/screens/inspector/layout_explorer/flex/flex_test.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/flex/flex_test.dart deleted file mode 100644 index a8b5264ff9c..00000000000 --- a/packages/devtools_app/test/screens/inspector/layout_explorer/flex/flex_test.dart +++ /dev/null @@ -1,292 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'dart:convert'; - -import 'package:devtools_app/src/screens/inspector/layout_explorer/flex/flex.dart'; -import 'package:devtools_app/src/shared/console/eval/inspector_tree.dart'; -import 'package:devtools_app/src/shared/diagnostics/diagnostics_node.dart'; -import 'package:devtools_test/devtools_test.dart'; -import 'package:devtools_test/helpers.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import '../../../../test_infra/matchers/matchers.dart'; - -// TODO(albertusangga): Re-enable tests in this files -// https://github.com/flutter/devtools/issues/1403 -void main() { - const windowSize = Size(1750, 1750); - const relativeGoldenPath = - '../../../../test_infra/goldens/inspector/layout_explorer/flex'; - - Map buildDiagnosticsNodeJson(Axis axis) => jsonDecode(''' - { - "description": "${axis == Axis.horizontal ? 'Row' : 'Column'}", - "type": "_ElementDiagnosticableTreeNode", - "style": "dense", - "hasChildren": true, - "allowWrap": false, - "objectId": "inspector-267513", - "valueId": "inspector-251", - "summaryTree": true, - "constraints": { - "type": "BoxConstraints", - "description": "BoxConstraints(w=300.0, h=60.0)", - "minWidth": "300.0", - "minHeight": "60.0", - "maxHeight": "60.0", - "maxWidth": "300.0" - }, - "size": { - "width": "300.0", - "height": "60.0" - }, - "isFlex": true, - "children": [ - { - "description": "Container", - "type": "_ElementDiagnosticableTreeNode", - "style": "dense", - "hasChildren": true, - "allowWrap": false, - "objectId": "inspector-267524", - "valueId": "inspector-269", - "summaryTree": true, - "constraints": { - "type": "BoxConstraints", - "description": "BoxConstraints(0.0<=w<=Infinity, 0.0<=h<=56.0)", - "minWidth": "0.0", - "minHeight": "0.0", - "maxHeight": "56.0", - "maxWidth": "Infinity" - }, - "size": { - "width": "56.0", - "height": "25.0" - }, - "flexFactor": null, - "createdByLocalProject": true, - "children": [], - "widgetRuntimeType": "Container", - "stateful": false - }, - { - "description": "Expanded", - "type": "_ElementDiagnosticableTreeNode", - "style": "dense", - "hasChildren": true, - "allowWrap": false, - "objectId": "inspector-267563", - "valueId": "inspector-332", - "summaryTree": true, - "constraints": { - "type": "BoxConstraints", - "description": "BoxConstraints(w=40.0, 0.0<=h<=56.0)", - "minWidth": "40.0", - "minHeight": "0.0", - "maxHeight": "56.0", - "maxWidth": "40.0" - }, - "size": { - "width": "40.0", - "height": "31.0" - }, - "flexFactor": 1, - "createdByLocalProject": true, - "children": [], - "widgetRuntimeType": "Expanded" - } - ], - "widgetRuntimeType": "${axis == Axis.horizontal ? 'Row' : 'Column'}", - "renderObject": { - "description": "RenderFlex#6cfb1 relayoutBoundary=up5", - "type": "DiagnosticableTreeNode", - "hasChildren": true, - "allowWrap": false, - "objectId": "inspector-3758", - "valueId": "inspector-118", - "summaryTree": true, - "properties": [ - { - "description": " (can use size)", - "type": "DiagnosticsProperty", - "name": "parentData", - "style": "singleLine", - "allowNameWrap": true, - "objectId": "inspector-3759", - "valueId": "inspector-120", - "summaryTree": true, - "properties": [], - "ifNull": "MISSING", - "tooltip": "can use size", - "missingIfNull": true, - "propertyType": "ParentData", - "defaultLevel": "info" - }, - { - "description": "${axis.name}", - "type": "EnumProperty", - "name": "direction", - "style": "singleLine", - "allowNameWrap": true, - "objectId": "inspector-3762", - "valueId": "inspector-126", - "summaryTree": true, - "properties": [], - "missingIfNull": false, - "propertyType": "Axis", - "defaultLevel": "info" - }, - { - "description": "start", - "type": "EnumProperty", - "name": "mainAxisAlignment", - "style": "singleLine", - "allowNameWrap": true, - "objectId": "inspector-3763", - "valueId": "inspector-128", - "summaryTree": true, - "properties": [], - "missingIfNull": false, - "propertyType": "MainAxisAlignment", - "defaultLevel": "info" - }, - { - "description": "max", - "type": "EnumProperty", - "name": "mainAxisSize", - "style": "singleLine", - "allowNameWrap": true, - "objectId": "inspector-3764", - "valueId": "inspector-130", - "summaryTree": true, - "properties": [], - "missingIfNull": false, - "propertyType": "MainAxisSize", - "defaultLevel": "info" - }, - { - "description": "center", - "type": "EnumProperty", - "name": "crossAxisAlignment", - "style": "singleLine", - "allowNameWrap": true, - "objectId": "inspector-3765", - "valueId": "inspector-132", - "summaryTree": true, - "properties": [], - "missingIfNull": false, - "propertyType": "CrossAxisAlignment", - "defaultLevel": "info" - }, - { - "description": "ltr", - "type": "EnumProperty", - "name": "textDirection", - "style": "singleLine", - "allowNameWrap": true, - "objectId": "inspector-3766", - "valueId": "inspector-83", - "summaryTree": true, - "properties": [], - "defaultValue": "null", - "missingIfNull": false, - "propertyType": "TextDirection", - "defaultLevel": "info" - }, - { - "description": "down", - "type": "EnumProperty", - "name": "verticalDirection", - "style": "singleLine", - "allowNameWrap": true, - "objectId": "inspector-3767", - "valueId": "inspector-135", - "summaryTree": true, - "properties": [], - "defaultValue": "null", - "missingIfNull": false, - "propertyType": "VerticalDirection", - "defaultLevel": "info" - }, - { - "description": "alphabetic", - "type": "EnumProperty", - "name": "textBaseline", - "style": "singleLine", - "allowNameWrap": true, - "objectId": "inspector-3767", - "valueId": "inspector-135", - "summaryTree": true, - "properties": [], - "defaultValue": "null", - "missingIfNull": false, - "propertyType": "TextBaseline", - "defaultLevel": "info" - } - ] - } - } - '''); - - Widget wrap(Widget widget) { - return MaterialApp(home: Scaffold(body: widget)); - } - - /// current workaround for flaky image asset testing. - /// https://github.com/flutter/flutter/issues/38997 - Future pump(WidgetTester tester, Widget w) async { - await tester.runAsync(() async { - await tester.pumpWidget(w); - for (final element in find.byType(Image).evaluate()) { - final widget = element.widget as Image; - final image = widget.image; - await precacheImage(image, element); - await tester.pumpAndSettle(); - } - }); - } - - testWidgetsWithWindowSize('Row golden test', windowSize, ( - WidgetTester tester, - ) async { - final rowWidgetJsonNode = buildDiagnosticsNodeJson(Axis.horizontal); - final diagnostic = RemoteDiagnosticsNode( - rowWidgetJsonNode, - null, - false, - null, - ); - final treeNode = InspectorTreeNode()..diagnostic = diagnostic; - final controller = TestInspectorController()..setSelectedNode(treeNode); - final widget = wrap(FlexLayoutExplorerWidget(controller)); - await pump(tester, widget); - await tester.pumpAndSettle(); - await expectLater( - find.byWidget(widget), - matchesDevToolsGolden('$relativeGoldenPath/story_of_row_layout.png'), - ); - }, skip: true); - - testWidgetsWithWindowSize('Column golden test', windowSize, ( - WidgetTester tester, - ) async { - final columnWidgetJsonNode = buildDiagnosticsNodeJson(Axis.vertical); - final diagnostic = RemoteDiagnosticsNode( - columnWidgetJsonNode, - null, - false, - null, - ); - final treeNode = InspectorTreeNode()..diagnostic = diagnostic; - final controller = TestInspectorController()..setSelectedNode(treeNode); - final widget = wrap(FlexLayoutExplorerWidget(controller)); - await pump(tester, widget); - await expectLater( - find.byWidget(widget), - matchesDevToolsGolden('$relativeGoldenPath/story_of_column_layout.png'), - ); - }, skip: true); -} diff --git a/packages/devtools_app/test/screens/inspector/layout_explorer/inspector_data_models_test.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/inspector_data_models_test.dart deleted file mode 100644 index a8e0cd0d86a..00000000000 --- a/packages/devtools_app/test/screens/inspector/layout_explorer/inspector_data_models_test.dart +++ /dev/null @@ -1,442 +0,0 @@ -// Copyright 2019 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app/src/screens/inspector/inspector_data_models.dart'; -import 'package:devtools_app/src/screens/inspector/layout_explorer/ui/theme.dart'; -import 'package:devtools_app/src/shared/primitives/math_utils.dart'; -import 'package:devtools_app_shared/ui.dart'; -import 'package:devtools_app_shared/utils.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'layout_explorer_test_utils.dart'; - -void main() { - setGlobal(IdeTheme, IdeTheme()); - - group('FlexLayoutProperties tests', () { - Future toFlexLayoutProperties( - Flex flex, { - required WidgetTester tester, - int subtreeDepth = 2, - double? width, - double? height, - }) async { - final wrappedWidget = SizedBox(width: width, height: height, child: flex); - final rootNodeDiagnostics = - await widgetToLayoutExplorerRemoteDiagnosticsNode( - widget: wrappedWidget, - tester: tester, - subtreeDepth: subtreeDepth, - ); - final flexDiagnostics = rootNodeDiagnostics.childrenNow.first; - return FlexLayoutProperties.fromDiagnostics(flexDiagnostics); - } - - testWidgets( - 'FlexLayoutProperties.fromJson creates correct value from enum', - (tester) async { - const widget = Row( - textDirection: TextDirection.ltr, - children: [SizedBox()], - ); - final flexProperties = await toFlexLayoutProperties( - widget, - tester: tester, - ); - expect(flexProperties.direction, Axis.horizontal); - expect(flexProperties.mainAxisAlignment, MainAxisAlignment.start); - expect(flexProperties.mainAxisSize, MainAxisSize.max); - expect(flexProperties.crossAxisAlignment, CrossAxisAlignment.center); - expect(flexProperties.textDirection, TextDirection.ltr); - expect(flexProperties.verticalDirection, VerticalDirection.down); - expect(flexProperties.textBaseline, null); - }, - ); - - testWidgets('startIsTopLeft should return false', (tester) async { - const columnWidget = Column( - verticalDirection: VerticalDirection.up, - children: [SizedBox()], - ); - final columnProperties = await toFlexLayoutProperties( - columnWidget, - tester: tester, - ); - expect(columnProperties.startIsTopLeft, false); - - const rowWidget = Row( - textDirection: TextDirection.rtl, - children: [SizedBox()], - ); - final rowProperties = await toFlexLayoutProperties( - rowWidget, - tester: tester, - ); - expect(rowProperties.startIsTopLeft, false); - }); - - testWidgets( - 'displayChildren is the same as children when start is top left', - (tester) async { - final widget = Column(children: [const SizedBox(), Container()]); - final properties = await toFlexLayoutProperties(widget, tester: tester); - expect(properties.startIsTopLeft, true); - expect(properties.displayChildren[0].description, 'SizedBox'); - expect(properties.displayChildren[1].description, 'Container'); - }, - ); - - testWidgets( - 'displayChildren is a reversed children when start is not top left', - (tester) async { - final widget = Column( - verticalDirection: VerticalDirection.up, - children: [const SizedBox(), Container()], - ); - final properties = await toFlexLayoutProperties(widget, tester: tester); - expect(properties.startIsTopLeft, false); - expect(properties.displayChildren[0].description, 'Container'); - expect(properties.displayChildren[1].description, 'SizedBox'); - }, - ); - - group('childrenRenderProperties tests', () { - const maxMainAxisDimension = 500.0; - - double maxSizeAvailable(Axis _) => maxMainAxisDimension; - - List childrenRenderProperties( - FlexLayoutProperties properties, - ) => properties.childrenRenderProperties( - smallestRenderWidth: minRenderWidth, - largestRenderWidth: defaultMaxRenderWidth, - smallestRenderHeight: minRenderHeight, - largestRenderHeight: defaultMaxRenderHeight, - maxSizeAvailable: maxSizeAvailable, - ); - - final childrenWidgets = [ - const SizedBox(width: 50.0), - const SizedBox(width: 75.0, height: 25.0), - ]; - - testWidgets( - 'returns correct RenderProperties with main axis not flipped when start is top left', - (tester) async { - final widget = Row(children: childrenWidgets); - final properties = await toFlexLayoutProperties( - widget, - width: maxMainAxisDimension, - tester: tester, - subtreeDepth: 3, - ); - final renderProps = properties.childrenRenderProperties( - smallestRenderWidth: minRenderWidth, - largestRenderWidth: defaultMaxRenderWidth, - smallestRenderHeight: minRenderHeight, - largestRenderHeight: defaultMaxRenderHeight, - maxSizeAvailable: maxSizeAvailable, - ); - expect(renderProps.length, 3); - expect(renderProps, [ - RenderProperties( - axis: Axis.horizontal, - size: const Size(250, 250), - realSize: const Size(50.0, 0.0), - offset: const Offset(0.0, 125.0), - layoutProperties: properties, - ), - RenderProperties( - axis: Axis.horizontal, - size: const Size(261.5, 500), - realSize: const Size(75.0, 25.0), - offset: const Offset(250.0, 0.0), - layoutProperties: properties, - ), - RenderProperties( - axis: Axis.horizontal, - size: const Size(400, 500), - realSize: const Size(375.0, 25.0), - offset: const Offset(511.5, 0.0), - isFreeSpace: true, - layoutProperties: properties, - ), - ]); - }, - ); - - testWidgets( - 'returns correct RenderProperties with main axis flipped when start is not top left', - (tester) async { - final widget = Row( - textDirection: TextDirection.rtl, - children: childrenWidgets, - ); - final properties = await toFlexLayoutProperties( - widget, - tester: tester, - width: maxMainAxisDimension, - subtreeDepth: 3, - ); - final renderProps = properties.childrenRenderProperties( - smallestRenderWidth: minRenderWidth, - largestRenderWidth: defaultMaxRenderWidth, - smallestRenderHeight: minRenderHeight, - largestRenderHeight: defaultMaxRenderHeight, - maxSizeAvailable: maxSizeAvailable, - ); - expect(renderProps.length, 3); - expect(renderProps, [ - RenderProperties( - axis: Axis.horizontal, - size: const Size(261.5, 500.0), - realSize: const Size(75.0, 25.0), - offset: const Offset(400.0, 0.0), - layoutProperties: properties, - ), - RenderProperties( - axis: Axis.horizontal, - size: const Size(250.0, 250.0), - realSize: const Size(50.0, 0.0), - offset: const Offset(661.5, 125.0), - layoutProperties: properties, - ), - RenderProperties( - axis: Axis.horizontal, - size: const Size(400, 500), - realSize: const Size(375.0, 25.0), - offset: const Offset(0.0, 0.0), - isFreeSpace: true, - layoutProperties: properties, - ), - ]); - }, - ); - - testWidgets( - 'when the start is not top left, render properties should be equals to its mirrored version', - (tester) async { - Row buildWidget({ - required bool flipMainAxis, - required MainAxisAlignment mainAxisAlignment, - }) => Row( - textDirection: flipMainAxis ? TextDirection.rtl : TextDirection.ltr, - mainAxisAlignment: flipMainAxis - ? mainAxisAlignment.reversed - : mainAxisAlignment, - children: flipMainAxis - ? childrenWidgets.reversed.toList() - : childrenWidgets, - ); - for (final mainAxisAlignment in MainAxisAlignment.values) { - final originalWidgetRenderProperties = childrenRenderProperties( - await toFlexLayoutProperties( - buildWidget( - flipMainAxis: false, - mainAxisAlignment: mainAxisAlignment, - ), - tester: tester, - ), - ); - final mirroredWidgetRenderProperties = childrenRenderProperties( - await toFlexLayoutProperties( - buildWidget( - flipMainAxis: true, - mainAxisAlignment: mainAxisAlignment, - ), - tester: tester, - ), - ); - expect( - originalWidgetRenderProperties, - mirroredWidgetRenderProperties, - ); - } - }, - ); - }); - }); - - group('LayoutProperties tests', () { - testWidgets('deserializes RemoteDiagnosticsNode correctly', (tester) async { - const constraints = BoxConstraints( - minWidth: 432.0, - maxWidth: 432.0, - minHeight: 56.0, - maxHeight: 56.0, - ); - const size = Size(432.0, 56.0); - final widget = Container( - width: size.width, - height: size.height, - constraints: constraints, - child: const Row(children: [SizedBox()]), - ); - final diagnosticsNode = await widgetToLayoutExplorerRemoteDiagnosticsNode( - widget: widget, - tester: tester, - subtreeDepth: 2, - ); - final rowDiagnosticsNode = diagnosticsNode.childrenNow.first; - final layoutProperties = LayoutProperties(rowDiagnosticsNode); - - expect(layoutProperties.size, size); - expect(layoutProperties.constraints, constraints); - expect(layoutProperties.totalChildren, 1); - }); - - group('describeWidthConstraints and describeHeightConstraints', () { - testWidgets('single value', (tester) async { - const width = 25.0; - const height = 56.0; - const constraints = BoxConstraints.tightFor( - width: width, - height: height, - ); - final widget = ConstrainedBox( - constraints: constraints, - child: const SizedBox(), - ); - final constrainedBoxDiagnosticsNode = - await widgetToLayoutExplorerRemoteDiagnosticsNode( - widget: widget, - tester: tester, - ); - final sizedBoxDiagnosticsNode = - constrainedBoxDiagnosticsNode.childrenNow.first; - final layoutProperties = LayoutProperties(sizedBoxDiagnosticsNode); - expect(layoutProperties.describeHeightConstraints(), 'h=$height'); - expect(layoutProperties.describeWidthConstraints(), 'w=$width'); - }); - - testWidgets('range value', (tester) async { - const minWidth = 25.0, maxWidth = 50.0; - const minHeight = 75.0, maxHeight = 100.0; - const constraints = BoxConstraints( - minWidth: minWidth, - maxWidth: maxWidth, - minHeight: minHeight, - maxHeight: maxHeight, - ); - final widget = ConstrainedBox( - constraints: constraints, - child: const SizedBox(), - ); - final constrainedBoxDiagnosticsNode = - await widgetToLayoutExplorerRemoteDiagnosticsNode( - widget: widget, - tester: tester, - ); - final sizedBoxDiagnosticsNode = - constrainedBoxDiagnosticsNode.childrenNow.first; - final layoutProperties = LayoutProperties(sizedBoxDiagnosticsNode); - expect( - layoutProperties.describeHeightConstraints(), - '$minHeight<=h<=$maxHeight', - ); - expect( - layoutProperties.describeWidthConstraints(), - '$minWidth<=w<=$maxWidth', - ); - }); - - testWidgets('unconstrained width', (tester) async { - final widget = Row(children: [Container()]); - final rowDiagnosticsNode = - await widgetToLayoutExplorerRemoteDiagnosticsNode( - widget: widget, - tester: tester, - ); - final containerDiagnosticsNode = rowDiagnosticsNode.childrenNow.first; - final layoutProperties = LayoutProperties(containerDiagnosticsNode); - expect( - layoutProperties.describeWidthConstraints(), - 'width is unconstrained', - ); - }); - - testWidgets('unconstrained height', (tester) async { - final widget = Column(children: [Container()]); - final columnDiagnosticsNode = - await widgetToLayoutExplorerRemoteDiagnosticsNode( - widget: widget, - tester: tester, - ); - final containerDiagnosticsNode = - columnDiagnosticsNode.childrenNow.first; - final layoutProperties = LayoutProperties(containerDiagnosticsNode); - expect( - layoutProperties.describeHeightConstraints(), - 'height is unconstrained', - ); - }); - }); - - testWidgets('describeWidth and describeHeight', (tester) async { - const width = 432.5, height = 56.0; - final widget = SizedBox(width: width, height: height, child: Container()); - final sizedBoxNode = await widgetToLayoutExplorerRemoteDiagnosticsNode( - widget: widget, - tester: tester, - ); - final containerNode = sizedBoxNode.childrenNow.first; - final layoutProperties = LayoutProperties(containerNode); - expect(layoutProperties.describeHeight(), 'h=$height'); - expect(layoutProperties.describeWidth(), 'w=$width'); - }); - }); - - group('computeRenderSizes', () { - test( - 'scale sizes so the largestSize maps to largestRenderSize with forceToOccupyMaxSize=false', - () { - final renderSizes = computeRenderSizes( - sizes: [100.0, 200.0, 300.0], - smallestSize: 100.0, - largestSize: 300.0, - smallestRenderSize: 200.0, - largestRenderSize: 600.0, - maxSizeAvailable: 2000, - useMaxSizeAvailable: false, - ); - expect(renderSizes, [200.0, 400.0, 600.0]); - expect(sum(renderSizes), lessThan(2000)); - }, - ); - - test( - 'scale sizes so the items fit maxSizeAvailable with forceToOccupyMaxSize=true', - () { - final renderSizes = computeRenderSizes( - sizes: [100.0, 200.0, 300.0], - smallestSize: 100.0, - largestSize: 300.0, - smallestRenderSize: 200.0, - largestRenderSize: 600.0, - maxSizeAvailable: 2000, - ); - expect(renderSizes, [200.0, 666.6666666666667, 1133.3333333333335]); - expect(sum(renderSizes) - 2000.0, lessThan(0.01)); - }, - ); - - test( - 'scale sizes when the items exceeds maxSizeAvailable with forceToOccupyMaxSize=true should not change any behavior', - () { - final renderSizes = computeRenderSizes( - sizes: [100.0, 200.0, 300.0], - smallestSize: 100.0, - largestSize: 300.0, - smallestRenderSize: 300.0, - largestRenderSize: 900.0, - maxSizeAvailable: 250.0, - ); - expect(renderSizes, [300.0, 600.0, 900.0]); - expect(sum(renderSizes), greaterThan(250.0)); - }, - ); - }); -} diff --git a/packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_serialization_delegate.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_serialization_delegate.dart deleted file mode 100644 index 3f1b6091ea3..00000000000 --- a/packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_serialization_delegate.dart +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2020 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; - -/// This class is merely a duplicate of the InspectorSerializationDelegate inside the `assets/scripts/inspector_polyfill_script.dart`. -/// This delegate is used for testing Widget Diagnostics Node so that we don't have to create manual JSON each time we want to create new test cases. -/// TODO(adalberht): Ask Jacob on what's the better solution on code reuse between the Layout Explorer polyfillscripts and the code inside test package? -class LayoutExplorerSerializationDelegate - extends InspectorSerializationDelegate { - LayoutExplorerSerializationDelegate({ - String super.groupName = '', - super.subtreeDepth, - required super.service, - }) : super( - summaryTree: true, - addAdditionalPropertiesCallback: (node, delegate) { - final additionalJson = {}; - final value = node.value; - if (value is Element) { - final renderObject = value.renderObject!; - additionalJson['renderObject'] = renderObject - .toDiagnosticsNode() - .toJsonMap( - delegate.copyWith(subtreeDepth: 0, includeProperties: true), - ); - // Required for test. - // ignore: invalid_use_of_protected_member - final constraints = renderObject.constraints; - - final constraintsProperty = { - 'type': constraints.runtimeType.toString(), - 'description': constraints.toString(), - }; - if (constraints is BoxConstraints) { - constraintsProperty.addAll({ - 'minWidth': constraints.minWidth.toString(), - 'minHeight': constraints.minHeight.toString(), - 'maxWidth': constraints.maxWidth.toString(), - 'maxHeight': constraints.maxHeight.toString(), - }); - } - additionalJson['constraints'] = constraintsProperty; - - if (renderObject is RenderBox) { - additionalJson['size'] = { - 'width': renderObject.size.width.toString(), - 'height': renderObject.size.height.toString(), - }; - - final parentData = renderObject.parentData; - if (parentData is FlexParentData) { - additionalJson['flexFactor'] = parentData.flex ?? 0; - additionalJson['flexFit'] = - (parentData.fit ?? FlexFit.tight).name; - } - } - } - return additionalJson; - }, - ); -} diff --git a/packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_test_utils.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_test_utils.dart deleted file mode 100644 index c2b1f449af6..00000000000 --- a/packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_test_utils.dart +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2020 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app/src/shared/diagnostics/diagnostics_node.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'layout_explorer_serialization_delegate.dart'; - -Future widgetToLayoutExplorerRemoteDiagnosticsNode({ - required Widget widget, - required WidgetTester tester, - int subtreeDepth = 1, -}) async { - await tester.pumpWidget(MaterialApp(home: Scaffold(body: widget))); - final element = find.byWidget(widget).evaluate().first; - final nodeJson = element - .toDiagnosticsNode(style: DiagnosticsTreeStyle.dense) - .toJsonMap( - LayoutExplorerSerializationDelegate( - subtreeDepth: subtreeDepth, - service: WidgetInspectorService.instance, - ), - ); - return RemoteDiagnosticsNode(nodeJson, null, false, null); -} diff --git a/packages/devtools_app/test/screens/inspector/layout_explorer/widget_theme_test.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/widget_theme_test.dart deleted file mode 100644 index 95beb1f9181..00000000000 --- a/packages/devtools_app/test/screens/inspector/layout_explorer/widget_theme_test.dart +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app/src/screens/inspector/layout_explorer/ui/widgets_theme.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('Test WidgetTheme', () { - test('Correct asset from widget with a type', () { - const widgetName = 'AnimatedBuilder'; - final theme = WidgetTheme.fromName(widgetName); - expect(theme.iconAsset, 'icons/inspector/widget_icons/animated.png'); - }); - - test('Has default theme for custom widget', () { - const widgetName = 'CustomWidget'; - final theme = WidgetTheme.fromName(widgetName); - expect(theme.color, WidgetTheme.otherWidgetColor); - }); - }); -} diff --git a/packages/devtools_app/test/screens/inspector/utils/inspector_tree.dart b/packages/devtools_app/test/screens/inspector/utils/inspector_tree.dart deleted file mode 100644 index 88963611a34..00000000000 --- a/packages/devtools_app/test/screens/inspector/utils/inspector_tree.dart +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2021 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. - -import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_test/helpers.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter_test/flutter_test.dart'; - -/// Create an `InspectorTreeControllerFlutter` from a single `RemoteDiagnosticsNode` -InspectorTreeController inspectorTreeControllerFromNode( - RemoteDiagnosticsNode node, -) { - final controller = InspectorTreeController() - ..config = InspectorTreeConfig( - onNodeAdded: (_, _) {}, - onClientActiveChange: (_) {}, - ); - - controller.root = InspectorTreeNode() - ..appendChild(InspectorTreeNode()..diagnostic = node); - - return controller; -} - -/// Replicates the functionality of `getRootWidgetSummaryTreeWithPreviews` from -/// inspector_polyfill_script.dart -Future widgetToInspectorTreeDiagnosticsNode({ - required Widget widget, - required WidgetTester tester, -}) async { - await tester.pumpWidget(wrap(widget)); - final element = find.byWidget(widget).evaluate().first; - final nodeJson = element - .toDiagnosticsNode(style: DiagnosticsTreeStyle.dense) - .toJsonMap( - InspectorSerializationDelegate( - service: WidgetInspectorService.instance, - subtreeDepth: 1000000, - summaryTree: true, - addAdditionalPropertiesCallback: (node, delegate) { - final additionalJson = {}; - - final value = node.value; - if (value is Element) { - final renderObject = value.renderObject; - if (renderObject is RenderParagraph) { - additionalJson['textPreview'] = renderObject.text.toPlainText(); - } - } - - return additionalJson; - }, - ), - ); - - return RemoteDiagnosticsNode(nodeJson, null, false, null); -} diff --git a/packages/devtools_app/test/screens/inspector_v2/inspector_error_navigator_test.dart b/packages/devtools_app/test/screens/inspector_v2/inspector_error_navigator_test.dart index 6db56eb0c62..82b2f1fce4f 100644 --- a/packages/devtools_app/test/screens/inspector_v2/inspector_error_navigator_test.dart +++ b/packages/devtools_app/test/screens/inspector_v2/inspector_error_navigator_test.dart @@ -5,6 +5,7 @@ import 'dart:collection'; import 'package:devtools_app/devtools_app.dart'; +import 'package:devtools_app/src/screens/inspector_v2/inspector_screen_body.dart'; import 'package:devtools_app/src/shared/feature_flags.dart'; import 'package:devtools_app_shared/ui.dart'; import 'package:devtools_app_shared/utils.dart'; diff --git a/packages/devtools_app/test/screens/inspector_v2/inspector_integration_test.dart b/packages/devtools_app/test/screens/inspector_v2/inspector_integration_test.dart index c9f902fdb60..2e5a7faa4f5 100644 --- a/packages/devtools_app/test/screens/inspector_v2/inspector_integration_test.dart +++ b/packages/devtools_app/test/screens/inspector_v2/inspector_integration_test.dart @@ -8,13 +8,7 @@ library; import 'dart:io'; import 'package:collection/collection.dart'; -import 'package:devtools_app/devtools_app.dart' - hide InspectorScreenBodyState, InspectorScreenBody, InspectorRowContent; -import 'package:devtools_app/src/screens/inspector/inspector_screen_body.dart' - as legacy; -import 'package:devtools_app/src/screens/inspector_shared/inspector_controls.dart'; -import 'package:devtools_app/src/screens/inspector_v2/inspector_screen_body.dart'; -import 'package:devtools_app/src/screens/inspector_v2/inspector_tree_controller.dart'; +import 'package:devtools_app/devtools_app.dart'; import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/ui/utils.dart'; import 'package:devtools_app/src/screens/inspector_v2/widget_properties/properties_view.dart'; import 'package:devtools_app_shared/ui.dart'; @@ -63,15 +57,11 @@ void main() { setUp(() async { await env.setupEnvironment(); - // Enable the V2 inspector: - preferences.inspector.setLegacyInspectorEnabled(false); setGlobal(BannerMessagesController, BannerMessagesController()); }); tearDown(() async { await env.tearDownEnvironment(force: true); - // Re-set changes to preferences: - preferences.inspector.setLegacyInspectorEnabled(true); }); tearDownAll(() { @@ -369,65 +359,6 @@ void main() { ); }); - testWidgetsWithWindowSize('can revert to legacy inspector', windowSize, ( - WidgetTester tester, - ) async { - await _loadInspectorUI(tester); - - // Select the CustomCenter widget (row index #4) - await tester.tap(find.richText('CustomCenter')); - await tester.pumpAndSettle(inspectorChangeSettleTime); - - // Disable Inspector V2: - await toggleLegacyInspector(tester); - await tester.pumpAndSettle(inspectorChangeSettleTime); - - // Verify the legacy inspector is visible: - await expectLater( - find.byType(legacy.InspectorScreenBody), - matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_revert_to_legacy.png', - ), - ); - }); - - // Test to verify https://github.com/flutter/devtools/issues/8487 is fixed. - testWidgetsWithWindowSize( - 'revert to legacy inspector, hot-restart, and back to new inspector', - windowSize, - (WidgetTester tester) async { - await _loadInspectorUI(tester); - - // Disable Inspector V2. - await toggleLegacyInspector(tester); - await tester.pumpAndSettle(inspectorChangeSettleTime); - - // Verify the legacy inspector is visible. - expect(find.richTextContaining('Widget Details Tree'), findsOneWidget); - - // Trigger a hot restart. - await env.flutter!.hotRestart(); - await tester.pumpAndSettle(inspectorChangeSettleTime); - - // Enable Inspector V2. - await toggleLegacyInspector(tester); - await tester.pumpAndSettle(inspectorChangeSettleTime); - - // Verify the legacy inspector is not visible. - expect(find.richTextContaining('Widget Details Tree'), findsNothing); - - // Wait for the widget tree to load. - final centerWidgetFinder = find.richText('Center'); - final centerWidgetFinderWithRetries = await retryUntilFound( - centerWidgetFinder, - tester: tester, - retries: 10, - ); - expect(centerWidgetFinderWithRetries, findsOneWidget); - }, - skip: true, // https://github.com/flutter/devtools/issues/8490 - ); - testWidgetsWithWindowSize( 'tree nodes contain only essential information', windowSize, @@ -688,33 +619,6 @@ Finder findExpandCollapseButtonForRow({ return expandCollapseButtonFinder; } -Future toggleLegacyInspector(WidgetTester tester) async { - // Open settings dialog. - final inspectorSettingsDialogButton = find.descendant( - of: find.byType(InspectorServiceExtensionButtonGroup), - matching: find.byType(SettingsOutlinedButton), - ); - await tester.tap(inspectorSettingsDialogButton); - await tester.pumpAndSettle(inspectorChangeSettleTime); - - // Toggle the "legacy Inspector" checkbox. - final settingsRow = find.ancestor( - of: find.richTextContaining('Use legacy inspector'), - matching: find.byType(Row), - ); - final inspectorCheckbox = find.descendant( - of: settingsRow, - matching: find.byType(NotifierCheckbox), - ); - await tester.tap(inspectorCheckbox); - await tester.pumpAndSettle(inspectorChangeSettleTime); - - // Close the settings dialog. - final closeButton = find.byType(DialogCloseButton); - await tester.tap(closeButton); - await tester.pumpAndSettle(inspectorChangeSettleTime); -} - void verifyPropertyIsVisible({ required String name, required String value, diff --git a/packages/devtools_app/test/screens/inspector_v2/inspector_screen_test.dart b/packages/devtools_app/test/screens/inspector_v2/inspector_screen_test.dart index 813cc1eb0b9..af99662edda 100644 --- a/packages/devtools_app/test/screens/inspector_v2/inspector_screen_test.dart +++ b/packages/devtools_app/test/screens/inspector_v2/inspector_screen_test.dart @@ -7,19 +7,11 @@ import 'dart:convert'; -import 'package:devtools_app/devtools_app.dart' - hide - InspectorController, - InspectorTreeController, - InspectorScreenBody, - ErrorNavigator, - InspectorTreeNode; +import 'package:devtools_app/devtools_app.dart'; import 'package:devtools_app/src/screens/inspector_shared/inspector_settings_dialog.dart'; -import 'package:devtools_app/src/screens/inspector_v2/inspector_screen_body.dart'; import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/flex/flex.dart'; import 'package:devtools_app/src/screens/inspector_v2/widget_details.dart'; import 'package:devtools_app/src/service/service_extensions.dart' as extensions; -import 'package:devtools_app/src/shared/console/eval/inspector_tree_v2.dart'; import 'package:devtools_app/src/shared/feature_flags.dart'; import 'package:devtools_app/src/shared/ui/tab.dart'; import 'package:devtools_app_shared/ui.dart'; @@ -311,7 +303,7 @@ void main() { 'should render StoryOfYourFlexWidget', windowSize, (WidgetTester tester) async { - final controller = TestInspectorV2Controller() + final controller = TestInspectorController() ..setSelectedNode(treeNode) ..setSelectedDiagnostic(diagnostic); await tester.pumpWidget( @@ -332,7 +324,7 @@ void main() { 'should listen to controller selection event', windowSize, (WidgetTester tester) async { - final controller = TestInspectorV2Controller(); + final controller = TestInspectorController(); await tester.pumpWidget( MaterialApp( home: Scaffold(body: WidgetDetails(controller: controller)), diff --git a/packages/devtools_app/test/screens/inspector_v2/inspector_tree_test.dart b/packages/devtools_app/test/screens/inspector_v2/inspector_tree_test.dart index 5a7c8966850..a8af4293244 100644 --- a/packages/devtools_app/test/screens/inspector_v2/inspector_tree_test.dart +++ b/packages/devtools_app/test/screens/inspector_v2/inspector_tree_test.dart @@ -2,16 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -import 'package:devtools_app/devtools_app.dart' - hide - InspectorController, - InspectorTreeController, - InspectorTree, - InspectorTreeConfig, - InspectorTreeNode; -import 'package:devtools_app/src/screens/inspector_v2/inspector_controller.dart'; +import 'package:devtools_app/devtools_app.dart'; import 'package:devtools_app/src/screens/inspector_v2/inspector_tree_controller.dart'; -import 'package:devtools_app/src/shared/console/eval/inspector_tree_v2.dart'; import 'package:devtools_app_shared/ui.dart'; import 'package:devtools_app_shared/utils.dart'; import 'package:devtools_test/devtools_test.dart'; diff --git a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/flex_test.dart b/packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/flex_test.dart index 5f4ea4a2fbf..9c64239ce48 100644 --- a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/flex_test.dart +++ b/packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/flex_test.dart @@ -260,7 +260,7 @@ void main() { null, ); final treeNode = InspectorTreeNode()..diagnostic = diagnostic; - final controller = TestInspectorV2Controller()..setSelectedNode(treeNode); + final controller = TestInspectorController()..setSelectedNode(treeNode); final widget = wrap(FlexLayoutExplorerWidget(controller)); await pump(tester, widget); await tester.pumpAndSettle(); @@ -281,7 +281,7 @@ void main() { null, ); final treeNode = InspectorTreeNode()..diagnostic = diagnostic; - final controller = TestInspectorV2Controller()..setSelectedNode(treeNode); + final controller = TestInspectorController()..setSelectedNode(treeNode); final widget = wrap(FlexLayoutExplorerWidget(controller)); await pump(tester, widget); await expectLater( diff --git a/packages/devtools_app/test/screens/inspector_v2/utils/inspector_tree.dart b/packages/devtools_app/test/screens/inspector_v2/utils/inspector_tree.dart index d2aac2767d3..88963611a34 100644 --- a/packages/devtools_app/test/screens/inspector_v2/utils/inspector_tree.dart +++ b/packages/devtools_app/test/screens/inspector_v2/utils/inspector_tree.dart @@ -2,10 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -import 'package:devtools_app/devtools_app.dart' - hide InspectorTreeController, InspectorTreeConfig, InspectorTreeNode; -import 'package:devtools_app/src/screens/inspector_v2/inspector_tree_controller.dart'; -import 'package:devtools_app/src/shared/console/eval/inspector_tree_v2.dart'; +import 'package:devtools_app/devtools_app.dart'; import 'package:devtools_test/helpers.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; diff --git a/packages/devtools_test/lib/src/mocks/mocks.dart b/packages/devtools_test/lib/src/mocks/mocks.dart index fee470e121e..a603d1daea9 100644 --- a/packages/devtools_test/lib/src/mocks/mocks.dart +++ b/packages/devtools_test/lib/src/mocks/mocks.dart @@ -7,12 +7,6 @@ import 'dart:convert'; import 'dart:io'; import 'package:devtools_app/devtools_app.dart'; -// ignore: implementation_imports, required to separate V2 inspector imports. -import 'package:devtools_app/src/screens/inspector_v2/inspector_controller.dart' - as inspector_v2; -// ignore: implementation_imports, required to separate V2 inspector imports. -import 'package:devtools_app/src/shared/console/eval/inspector_tree_v2.dart' - as inspector_v2; import 'package:devtools_app_shared/service.dart'; import 'package:devtools_shared/devtools_shared.dart'; import 'package:flutter/foundation.dart'; @@ -86,30 +80,27 @@ class TestInspectorController extends Fake implements InspectorController { InspectorService get inspectorService => service; } -class TestInspectorV2Controller extends Fake - implements inspector_v2.InspectorController { +class TestInspectorController extends Fake implements InspectorController { InspectorService service = FakeInspectorService(); @override - ValueListenable get selectedNode => - _selectedNode; - final _selectedNode = ValueNotifier(null); + ValueListenable get selectedNode => _selectedNode; + final _selectedNode = ValueNotifier(null); @override RemoteDiagnosticsNode? get selectedDiagnostic => _selectedDiagnostic; RemoteDiagnosticsNode? _selectedDiagnostic; @override - ValueListenable - get selectedNodeProperties => - ValueNotifier(( + ValueListenable get selectedNodeProperties => + ValueNotifier(( widgetProperties: [], renderProperties: [], layoutProperties: null, )); @override - void setSelectedNode(inspector_v2.InspectorTreeNode? newSelection) { + void setSelectedNode(InspectorTreeNode? newSelection) { _selectedNode.value = newSelection; } From ebfb9c35e26f583a6da45f365476ca3b41372720 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Thu, 16 Apr 2026 13:18:04 -0700 Subject: [PATCH 2/4] Fix duplicated TestInspectorController --- packages/devtools_test/lib/src/mocks/mocks.dart | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/packages/devtools_test/lib/src/mocks/mocks.dart b/packages/devtools_test/lib/src/mocks/mocks.dart index a603d1daea9..d4fd88878fb 100644 --- a/packages/devtools_test/lib/src/mocks/mocks.dart +++ b/packages/devtools_test/lib/src/mocks/mocks.dart @@ -64,22 +64,6 @@ class FakeInspectorService extends Fake implements InspectorService { bool get hoverEvalModeEnabledByDefault => true; } -class TestInspectorController extends Fake implements InspectorController { - InspectorService service = FakeInspectorService(); - - @override - ValueListenable get selectedNode => _selectedNode; - final _selectedNode = ValueNotifier(null); - - @override - void setSelectedNode(InspectorTreeNode? newSelection) { - _selectedNode.value = newSelection; - } - - @override - InspectorService get inspectorService => service; -} - class TestInspectorController extends Fake implements InspectorController { InspectorService service = FakeInspectorService(); From 57448246e88c4a6837025c6fef51ae5974431eef Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Thu, 16 Apr 2026 15:18:58 -0700 Subject: [PATCH 3/4] Move inspector_shared files into inspector_v2 --- packages/devtools_app/lib/src/app.dart | 4 ++-- .../src/screens/inspector_v2/inspector_controller.dart | 2 +- .../inspector_controls.dart | 8 ++++---- .../inspector_screen.dart | 0 .../src/screens/inspector_v2/inspector_screen_body.dart | 4 ++-- .../inspector_screen_controller.dart | 0 .../inspector_settings_dialog.dart | 0 .../lib/src/shared/managers/error_badge_manager.dart | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) rename packages/devtools_app/lib/src/screens/{inspector_shared => inspector_v2}/inspector_controls.dart (95%) rename packages/devtools_app/lib/src/screens/{inspector_shared => inspector_v2}/inspector_screen.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_shared => inspector_v2}/inspector_screen_controller.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_shared => inspector_v2}/inspector_settings_dialog.dart (100%) diff --git a/packages/devtools_app/lib/src/app.dart b/packages/devtools_app/lib/src/app.dart index 43c72cd6b7c..fdbd7804893 100644 --- a/packages/devtools_app/lib/src/app.dart +++ b/packages/devtools_app/lib/src/app.dart @@ -31,8 +31,8 @@ import 'screens/deep_link_validation/deep_links_controller.dart'; import 'screens/deep_link_validation/deep_links_screen.dart'; import 'screens/dtd/dtd_tools_controller.dart'; import 'screens/dtd/dtd_tools_screen.dart'; -import 'screens/inspector_shared/inspector_screen.dart'; -import 'screens/inspector_shared/inspector_screen_controller.dart'; +import 'screens/inspector_v2/inspector_screen.dart'; +import 'screens/inspector_v2/inspector_screen_controller.dart'; import 'screens/logging/logging_controller.dart'; import 'screens/logging/logging_screen.dart'; import 'screens/memory/framework/memory_controller.dart'; diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controller.dart b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controller.dart index 32de022bcdf..f8694bc92e6 100644 --- a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controller.dart +++ b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controller.dart @@ -36,8 +36,8 @@ import '../../shared/managers/notifications.dart'; import '../../shared/primitives/query_parameters.dart'; import '../../shared/primitives/utils.dart'; import '../../shared/utils/utils.dart'; -import '../inspector_shared/inspector_screen.dart'; import 'inspector_data_models.dart'; +import 'inspector_screen.dart'; import 'inspector_tree_controller.dart'; final _log = Logger('inspector_controller'); diff --git a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_controls.dart b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controls.dart similarity index 95% rename from packages/devtools_app/lib/src/screens/inspector_shared/inspector_controls.dart rename to packages/devtools_app/lib/src/screens/inspector_v2/inspector_controls.dart index d1f810a2605..2f1e53b922f 100644 --- a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_controls.dart +++ b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controls.dart @@ -13,14 +13,14 @@ import '../../shared/analytics/constants.dart' as gac; import '../../shared/feature_flags.dart'; import '../../shared/globals.dart'; import '../../shared/ui/common_widgets.dart'; -import '../inspector_shared/inspector_settings_dialog.dart'; -import '../inspector_v2/inspector_controller.dart' as v2; +import 'inspector_controller.dart'; +import 'inspector_settings_dialog.dart'; /// Control buttons for the inspector panel. class InspectorControls extends StatelessWidget { const InspectorControls({super.key, this.controller}); - final v2.InspectorController? controller; + final InspectorController? controller; static const minScreenWidthForTextBeforeTruncating = 800.0; static const minScreenWidthForText = 550.0; @@ -113,7 +113,7 @@ class InspectorServiceExtensionButtonGroup extends StatelessWidget { class ShowImplementationWidgetsButton extends StatelessWidget { const ShowImplementationWidgetsButton({super.key, required this.controller}); - final v2.InspectorController controller; + final InspectorController controller; @override Widget build(BuildContext context) { diff --git a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen.dart b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen.dart rename to packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_body.dart b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_body.dart index bcb6070927b..b43e9ff50a9 100644 --- a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_body.dart +++ b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_body.dart @@ -19,9 +19,9 @@ import '../../shared/primitives/blocking_action_mixin.dart'; import '../../shared/ui/common_widgets.dart'; import '../../shared/ui/search.dart'; import '../../shared/utils/utils.dart'; -import '../inspector_shared/inspector_controls.dart'; -import '../inspector_shared/inspector_screen.dart'; import 'inspector_controller.dart'; +import 'inspector_controls.dart'; +import 'inspector_screen.dart'; import 'inspector_tree_controller.dart'; import 'widget_details.dart'; diff --git a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen_controller.dart b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_controller.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_shared/inspector_screen_controller.dart rename to packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_controller.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_shared/inspector_settings_dialog.dart b/packages/devtools_app/lib/src/screens/inspector_v2/inspector_settings_dialog.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_shared/inspector_settings_dialog.dart rename to packages/devtools_app/lib/src/screens/inspector_v2/inspector_settings_dialog.dart diff --git a/packages/devtools_app/lib/src/shared/managers/error_badge_manager.dart b/packages/devtools_app/lib/src/shared/managers/error_badge_manager.dart index d3d3f7dc8bc..aadfe082177 100644 --- a/packages/devtools_app/lib/src/shared/managers/error_badge_manager.dart +++ b/packages/devtools_app/lib/src/shared/managers/error_badge_manager.dart @@ -11,7 +11,7 @@ import 'package:devtools_app_shared/utils.dart'; import 'package:flutter/foundation.dart'; import 'package:vm_service/vm_service.dart'; -import '../../screens/inspector_shared/inspector_screen.dart'; +import '../../screens/inspector_v2/inspector_screen.dart'; import '../../screens/logging/logging_screen.dart'; import '../../screens/network/network_screen.dart'; import '../../screens/performance/performance_screen.dart'; From 1bd1a2a3fd794e5c3818312bc31ed5b756592625 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:26:26 +0000 Subject: [PATCH 4/4] Fix errors and rename inspector_v2 -> inspector --- build/native_assets/linux/native_assets.json | 1 + build/unit_test_assets/AssetManifest.bin | Bin 0 -> 2 bytes build/unit_test_assets/FontManifest.json | 1 + build/unit_test_assets/NOTICES.Z | Bin 0 -> 201393 bytes .../NativeAssetsManifest.json | 1 + .../unit_test_assets/shaders/ink_sparkle.frag | Bin 0 -> 13472 bytes .../shaders/stretch_effect.frag | Bin 0 -> 9464 bytes packages/devtools_app/lib/devtools_app.dart | 10 ++++---- packages/devtools_app/lib/src/app.dart | 6 ++--- .../inspector_controller.dart | 0 .../inspector_controls.dart | 8 +++--- .../inspector_data_models.dart | 2 +- .../inspector_screen.dart | 2 +- .../inspector_screen_body.dart | 0 .../inspector_screen_controller.dart | 4 +-- .../inspector_settings_dialog.dart | 0 .../inspector_tree_controller.dart | 0 .../layout_explorer/box/box.dart | 0 .../layout_explorer/flex/flex.dart | 0 .../layout_explorer/flex/utils.dart | 0 .../layout_explorer/ui/arrow.dart | 0 .../layout_explorer/ui/dimension.dart | 0 .../layout_explorer/ui/free_space.dart | 0 .../ui/layout_explorer_widget.dart | 0 .../ui/overflow_indicator_painter.dart | 0 .../layout_explorer/ui/theme.dart | 0 .../layout_explorer/ui/utils.dart | 0 .../ui/widget_constraints.dart | 0 .../layout_explorer/ui/widgets_theme.dart | 0 .../widget_details.dart | 0 .../widget_properties/properties_view.dart | 0 .../screens/logging/logging_controller.dart | 2 +- .../lib/src/shared/analytics/metrics.dart | 2 +- .../shared/console/widgets/description.dart | 4 +-- .../shared/diagnostics/diagnostics_node.dart | 2 +- .../lib/src/shared/feature_flags.dart | 6 ++--- .../shared/managers/error_badge_manager.dart | 2 +- .../src/shared/preferences/preferences.dart | 2 +- .../devtools_app/lib/src/shared/ui/icons.dart | 2 +- .../diagnostics_test.dart | 0 .../inspector_error_navigator_test.dart | 2 +- .../inspector_integration_test.dart | 24 +++++++++--------- .../inspector_screen_test.dart | 8 +++--- .../inspector_tree_test.dart | 2 +- .../layout_explorer/flex/arrow_test.dart | 4 +-- .../layout_explorer/flex/flex_test.dart | 4 +-- .../inspector_data_models_test.dart | 4 +-- ...ayout_explorer_serialization_delegate.dart | 0 .../layout_explorer_test_utils.dart | 0 .../layout_explorer/widget_theme_test.dart | 2 +- .../utils/inspector_tree.dart | 0 .../managers/error_badge_manager_test.dart | 2 +- .../shared/primitives/feature_flags_test.dart | 2 +- .../flex/arrow_bidirectional_horizontal.png | Bin 17607 -> 0 bytes .../flex/arrow_bidirectional_vertical.png | Bin 21466 -> 0 bytes .../flex/arrow_unidirectional_down.png | Bin 21240 -> 0 bytes .../flex/arrow_unidirectional_left.png | Bin 17379 -> 0 bytes .../flex/arrow_unidirectional_right.png | Bin 17336 -> 0 bytes .../flex/arrow_unidirectional_up.png | Bin 21231 -> 0 bytes .../flex/story_of_column_layout.png | Bin 244186 -> 0 bytes .../flex/story_of_row_layout.png | Bin 349012 -> 0 bytes ...tegration_inspector_after_hot_restart.png} | Bin ...ctor_animated_physical_model_selected.png} | Bin ...ration_inspector_errors_1_initial_load.png | Bin 35122 -> 36377 bytes ...tion_inspector_errors_2_error_selected.png | Bin 60687 -> 47663 bytes ...on_inspector_hideable_widget_selected.png} | Bin ..._hideable_widget_selected_from_search.png} | Bin ...ctor_implementation_widgets_collapsed.png} | Bin ...ector_implementation_widgets_expanded.png} | Bin ...spector_implementation_widgets_hidden.png} | Bin .../integration_inspector_initial_load.png | Bin 29367 -> 27511 bytes ...ntegration_inspector_revert_to_legacy.png} | Bin .../integration_inspector_select_center.png | Bin 54064 -> 32018 bytes ...ion_inspector_v2_errors_1_initial_load.png | Bin 36377 -> 0 bytes ...n_inspector_v2_errors_2_error_selected.png | Bin 47663 -> 0 bytes .../integration_inspector_v2_initial_load.png | Bin 27511 -> 0 bytes ...integration_inspector_v2_select_center.png | Bin 32018 -> 0 bytes tool/flutter_customer_tests/test.sh | 1 - 78 files changed, 57 insertions(+), 55 deletions(-) create mode 100644 build/native_assets/linux/native_assets.json create mode 100644 build/unit_test_assets/AssetManifest.bin create mode 100644 build/unit_test_assets/FontManifest.json create mode 100644 build/unit_test_assets/NOTICES.Z create mode 100644 build/unit_test_assets/NativeAssetsManifest.json create mode 100644 build/unit_test_assets/shaders/ink_sparkle.frag create mode 100644 build/unit_test_assets/shaders/stretch_effect.frag rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/inspector_controller.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/inspector_controls.dart (97%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/inspector_data_models.dart (99%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/inspector_screen.dart (95%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/inspector_screen_body.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/inspector_screen_controller.dart (93%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/inspector_settings_dialog.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/inspector_tree_controller.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/box/box.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/flex/flex.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/flex/utils.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/arrow.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/dimension.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/free_space.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/layout_explorer_widget.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/overflow_indicator_painter.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/theme.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/utils.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/widget_constraints.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/layout_explorer/ui/widgets_theme.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/widget_details.dart (100%) rename packages/devtools_app/lib/src/screens/{inspector_v2 => inspector}/widget_properties/properties_view.dart (100%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/diagnostics_test.dart (100%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/inspector_error_navigator_test.dart (97%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/inspector_integration_test.dart (95%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/inspector_screen_test.dart (97%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/inspector_tree_test.dart (98%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/layout_explorer/flex/arrow_test.dart (95%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/layout_explorer/flex/flex_test.dart (98%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/layout_explorer/inspector_data_models_test.dart (98%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/layout_explorer/layout_explorer_serialization_delegate.dart (100%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/layout_explorer/layout_explorer_test_utils.dart (100%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/layout_explorer/widget_theme_test.dart (89%) rename packages/devtools_app/test/screens/{inspector_v2 => inspector}/utils/inspector_tree.dart (100%) delete mode 100644 packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_bidirectional_horizontal.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_bidirectional_vertical.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_unidirectional_down.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_unidirectional_left.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_unidirectional_right.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_unidirectional_up.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/story_of_column_layout.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/story_of_row_layout.png rename packages/devtools_app/test/test_infra/goldens/{integration_inspector_v2_after_hot_restart.png => integration_inspector_after_hot_restart.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{integration_inspector_v2_animated_physical_model_selected.png => integration_inspector_animated_physical_model_selected.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{integration_inspector_v2_hideable_widget_selected.png => integration_inspector_hideable_widget_selected.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{integration_inspector_v2_hideable_widget_selected_from_search.png => integration_inspector_hideable_widget_selected_from_search.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{integration_inspector_v2_implementation_widgets_collapsed.png => integration_inspector_implementation_widgets_collapsed.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{integration_inspector_v2_implementation_widgets_expanded.png => integration_inspector_implementation_widgets_expanded.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{integration_inspector_v2_implementation_widgets_hidden.png => integration_inspector_implementation_widgets_hidden.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{integration_inspector_v2_revert_to_legacy.png => integration_inspector_revert_to_legacy.png} (100%) delete mode 100644 packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_errors_1_initial_load.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_errors_2_error_selected.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_initial_load.png delete mode 100644 packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_select_center.png diff --git a/build/native_assets/linux/native_assets.json b/build/native_assets/linux/native_assets.json new file mode 100644 index 00000000000..523bfc7c60f --- /dev/null +++ b/build/native_assets/linux/native_assets.json @@ -0,0 +1 @@ +{"format-version":[1,0,0],"native-assets":{}} \ No newline at end of file diff --git a/build/unit_test_assets/AssetManifest.bin b/build/unit_test_assets/AssetManifest.bin new file mode 100644 index 0000000000000000000000000000000000000000..86d111f09a93cccfa0011858c519a823e7dafef7 GIT binary patch literal 2 Jcmd;O0000S01f~E literal 0 HcmV?d00001 diff --git a/build/unit_test_assets/FontManifest.json b/build/unit_test_assets/FontManifest.json new file mode 100644 index 00000000000..0637a088a01 --- /dev/null +++ b/build/unit_test_assets/FontManifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/build/unit_test_assets/NOTICES.Z b/build/unit_test_assets/NOTICES.Z new file mode 100644 index 0000000000000000000000000000000000000000..8876bc12f7fc34c3ceeb7629037f9bf0931c6bfb GIT binary patch literal 201393 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πZjBpqoo^wnR%1flwj^+1uSPD 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

HLWn8g>l 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 Kh5MS+VE+Rq@TZsn literal 0 HcmV?d00001 diff --git a/build/unit_test_assets/NativeAssetsManifest.json b/build/unit_test_assets/NativeAssetsManifest.json new file mode 100644 index 00000000000..523bfc7c60f --- /dev/null +++ b/build/unit_test_assets/NativeAssetsManifest.json @@ -0,0 +1 @@ +{"format-version":[1,0,0],"native-assets":{}} \ No newline at end of file diff --git a/build/unit_test_assets/shaders/ink_sparkle.frag b/build/unit_test_assets/shaders/ink_sparkle.frag new file mode 100644 index 0000000000000000000000000000000000000000..ebd80664494081e99d2e7110beb15026d3310a40 GIT binary patch literal 13472 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 literal 0 HcmV?d00001 diff --git a/build/unit_test_assets/shaders/stretch_effect.frag b/build/unit_test_assets/shaders/stretch_effect.frag new file mode 100644 index 0000000000000000000000000000000000000000..3c938de1c44020fffd63b8f1732572fd4b4f230a GIT binary patch literal 9464 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 defaultScreens({ HomeScreen(sampleData: sampleData), ), // TODO(https://github.com/flutter/devtools/issues/7860): Clean-up after - // Inspector V2 has been released. + // Inspector has been released. DevToolsScreen( InspectorScreen(), createController: (_) => InspectorScreenController(), diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controller.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_controller.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/inspector_controller.dart rename to packages/devtools_app/lib/src/screens/inspector/inspector_controller.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controls.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_controls.dart similarity index 97% rename from packages/devtools_app/lib/src/screens/inspector_v2/inspector_controls.dart rename to packages/devtools_app/lib/src/screens/inspector/inspector_controls.dart index 2f1e53b922f..ff4fe1d3bed 100644 --- a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_controls.dart +++ b/packages/devtools_app/lib/src/screens/inspector/inspector_controls.dart @@ -30,8 +30,8 @@ class InspectorControls extends StatelessWidget { final activeButtonColor = Theme.of( context, ).colorScheme.activeToggleButtonColor; - final isInspectorV2 = - controller != null && FeatureFlags.inspectorV2.isEnabled; + final isInspector = + controller != null && FeatureFlags.inspector.isEnabled; return Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -49,13 +49,13 @@ class InspectorControls extends StatelessWidget { : extensions.toggleOnDeviceWidgetInspector, ], minScreenWidthForText: minScreenWidthForText, - minScreenWidthForTextBeforeTruncating: isInspectorV2 + minScreenWidthForTextBeforeTruncating: isInspector ? minScreenWidthForTextBeforeTruncating : null, ); }, ), - if (isInspectorV2) ...[ + if (isInspector) ...[ const SizedBox(width: defaultSpacing), ShowImplementationWidgetsButton(controller: controller!), ], diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_data_models.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_data_models.dart similarity index 99% rename from packages/devtools_app/lib/src/screens/inspector_v2/inspector_data_models.dart rename to packages/devtools_app/lib/src/screens/inspector/inspector_data_models.dart index 1d166cedad5..188dabd14b6 100644 --- a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_data_models.dart +++ b/packages/devtools_app/lib/src/screens/inspector/inspector_data_models.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -/// @docImport '../inspector_v2/layout_explorer/ui/overflow_indicator_painter.dart'; +/// @docImport '../inspector/layout_explorer/ui/overflow_indicator_painter.dart'; library; import 'dart:math' as math; diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_screen.dart similarity index 95% rename from packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen.dart rename to packages/devtools_app/lib/src/screens/inspector/inspector_screen.dart index 42d5bb7f0ed..790e0438f4c 100644 --- a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen.dart +++ b/packages/devtools_app/lib/src/screens/inspector/inspector_screen.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; import '../../shared/framework/screen.dart'; import '../../shared/globals.dart'; -import '../inspector_v2/inspector_screen_body.dart'; +import '../inspector/inspector_screen_body.dart'; import 'inspector_screen_controller.dart'; class InspectorScreen extends Screen { diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_body.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_screen_body.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_body.dart rename to packages/devtools_app/lib/src/screens/inspector/inspector_screen_body.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_controller.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_screen_controller.dart similarity index 93% rename from packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_controller.dart rename to packages/devtools_app/lib/src/screens/inspector/inspector_screen_controller.dart index 7656c99ae04..1a82aa0e2e9 100644 --- a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_screen_controller.dart +++ b/packages/devtools_app/lib/src/screens/inspector/inspector_screen_controller.dart @@ -6,8 +6,8 @@ import '../../shared/analytics/metrics.dart'; import '../../shared/console/primitives/simple_items.dart'; import '../../shared/framework/screen.dart'; import '../../shared/framework/screen_controllers.dart'; -import '../inspector_v2/inspector_controller.dart'; -import '../inspector_v2/inspector_tree_controller.dart'; +import '../inspector/inspector_controller.dart'; +import '../inspector/inspector_tree_controller.dart'; /// Screen controller for the Inspector screen. /// diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_settings_dialog.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_settings_dialog.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/inspector_settings_dialog.dart rename to packages/devtools_app/lib/src/screens/inspector/inspector_settings_dialog.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/inspector_tree_controller.dart b/packages/devtools_app/lib/src/screens/inspector/inspector_tree_controller.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/inspector_tree_controller.dart rename to packages/devtools_app/lib/src/screens/inspector/inspector_tree_controller.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/box/box.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/box/box.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/box/box.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/box/box.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/flex/flex.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/flex.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/flex/flex.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/flex.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/flex/utils.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/utils.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/flex/utils.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/flex/utils.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/arrow.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/arrow.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/arrow.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/arrow.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/dimension.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/dimension.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/dimension.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/dimension.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/free_space.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/free_space.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/free_space.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/free_space.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/layout_explorer_widget.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/layout_explorer_widget.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/layout_explorer_widget.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/layout_explorer_widget.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/overflow_indicator_painter.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/overflow_indicator_painter.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/overflow_indicator_painter.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/overflow_indicator_painter.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/theme.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/theme.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/theme.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/theme.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/utils.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/utils.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/utils.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/utils.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/widget_constraints.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widget_constraints.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/widget_constraints.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widget_constraints.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/widgets_theme.dart b/packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widgets_theme.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/layout_explorer/ui/widgets_theme.dart rename to packages/devtools_app/lib/src/screens/inspector/layout_explorer/ui/widgets_theme.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/widget_details.dart b/packages/devtools_app/lib/src/screens/inspector/widget_details.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/widget_details.dart rename to packages/devtools_app/lib/src/screens/inspector/widget_details.dart diff --git a/packages/devtools_app/lib/src/screens/inspector_v2/widget_properties/properties_view.dart b/packages/devtools_app/lib/src/screens/inspector/widget_properties/properties_view.dart similarity index 100% rename from packages/devtools_app/lib/src/screens/inspector_v2/widget_properties/properties_view.dart rename to packages/devtools_app/lib/src/screens/inspector/widget_properties/properties_view.dart diff --git a/packages/devtools_app/lib/src/screens/logging/logging_controller.dart b/packages/devtools_app/lib/src/screens/logging/logging_controller.dart index 93fd3c08ed6..fa93986930c 100644 --- a/packages/devtools_app/lib/src/screens/logging/logging_controller.dart +++ b/packages/devtools_app/lib/src/screens/logging/logging_controller.dart @@ -27,7 +27,7 @@ import '../../shared/primitives/message_bus.dart'; import '../../shared/primitives/utils.dart'; import '../../shared/ui/filter.dart'; import '../../shared/ui/search.dart'; -import '../inspector_v2/inspector_tree_controller.dart'; +import '../inspector/inspector_tree_controller.dart'; import 'log_details_controller.dart'; import 'logging_screen.dart'; import 'metadata.dart'; diff --git a/packages/devtools_app/lib/src/shared/analytics/metrics.dart b/packages/devtools_app/lib/src/shared/analytics/metrics.dart index a1be45f256e..772c5ba1938 100644 --- a/packages/devtools_app/lib/src/shared/analytics/metrics.dart +++ b/packages/devtools_app/lib/src/shared/analytics/metrics.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -/// @docImport '../../screens/inspector_v2/inspector_tree_controller.dart'; +/// @docImport '../../screens/inspector/inspector_tree_controller.dart'; /// @docImport '../../screens/performance/panes/flutter_frames/flutter_frame_model.dart'; library; diff --git a/packages/devtools_app/lib/src/shared/console/widgets/description.dart b/packages/devtools_app/lib/src/shared/console/widgets/description.dart index f7006f910b0..107cec45a7b 100644 --- a/packages/devtools_app/lib/src/shared/console/widgets/description.dart +++ b/packages/devtools_app/lib/src/shared/console/widgets/description.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -/// @docImport '../../../screens/inspector_v2/inspector_tree_controller.dart'; +/// @docImport '../../../screens/inspector/inspector_tree_controller.dart'; library; import 'package:devtools_app_shared/ui.dart'; @@ -58,7 +58,7 @@ class DiagnosticsNodeDescription extends StatelessWidget { final TextStyle? style; final TextStyle? nodeDescriptionHighlightStyle; // TODO(https://github.com/flutter/devtools/issues/7860): Remove and default - // to true when turning on inspector V2. This is currently true for the V2 + // to true when turning on inspector. This is currently true for the // inspector and false for the legacy inspector. final bool emphasizeNodesFromLocalProject; final String? actionLabel; diff --git a/packages/devtools_app/lib/src/shared/diagnostics/diagnostics_node.dart b/packages/devtools_app/lib/src/shared/diagnostics/diagnostics_node.dart index b149944769e..9f07dbbdb40 100644 --- a/packages/devtools_app/lib/src/shared/diagnostics/diagnostics_node.dart +++ b/packages/devtools_app/lib/src/shared/diagnostics/diagnostics_node.dart @@ -13,7 +13,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:vm_service/vm_service.dart'; -import '../../screens/inspector_v2/inspector_data_models.dart'; +import '../../screens/inspector/inspector_data_models.dart'; import '../primitives/utils.dart'; import '../ui/icons.dart'; import 'object_group_api.dart'; diff --git a/packages/devtools_app/lib/src/shared/feature_flags.dart b/packages/devtools_app/lib/src/shared/feature_flags.dart index c30e6be29b3..f4ac7be3d01 100644 --- a/packages/devtools_app/lib/src/shared/feature_flags.dart +++ b/packages/devtools_app/lib/src/shared/feature_flags.dart @@ -72,8 +72,8 @@ extension FeatureFlags on Never { /// Flag to enable the new Inspector panel. /// /// https://github.com/flutter/devtools/issues/7854 - static final inspectorV2 = BooleanFeatureFlag( - name: 'inspectorV2', + static final inspector = BooleanFeatureFlag( + name: 'inspector', enabled: true, ); @@ -93,7 +93,7 @@ extension FeatureFlags on Never { memorySaveLoad, devToolsExtensions, dapDebugging, - inspectorV2, + inspector, aiAssistant, }; diff --git a/packages/devtools_app/lib/src/shared/managers/error_badge_manager.dart b/packages/devtools_app/lib/src/shared/managers/error_badge_manager.dart index aadfe082177..16950eb15d6 100644 --- a/packages/devtools_app/lib/src/shared/managers/error_badge_manager.dart +++ b/packages/devtools_app/lib/src/shared/managers/error_badge_manager.dart @@ -11,7 +11,7 @@ import 'package:devtools_app_shared/utils.dart'; import 'package:flutter/foundation.dart'; import 'package:vm_service/vm_service.dart'; -import '../../screens/inspector_v2/inspector_screen.dart'; +import '../../screens/inspector/inspector_screen.dart'; import '../../screens/logging/logging_screen.dart'; import '../../screens/network/network_screen.dart'; import '../../screens/performance/performance_screen.dart'; diff --git a/packages/devtools_app/lib/src/shared/preferences/preferences.dart b/packages/devtools_app/lib/src/shared/preferences/preferences.dart index 06ee38c5f8b..4583884eda0 100644 --- a/packages/devtools_app/lib/src/shared/preferences/preferences.dart +++ b/packages/devtools_app/lib/src/shared/preferences/preferences.dart @@ -107,7 +107,7 @@ class PreferencesController extends DisposableController final _extensions = ExtensionsPreferencesController(); // TODO(https://github.com/flutter/devtools/issues/7860): Clean-up after - // Inspector V2 has been released. + // Inspector has been released. InspectorPreferencesController get inspector => _inspector; final _inspector = InspectorPreferencesController(); diff --git a/packages/devtools_app/lib/src/shared/ui/icons.dart b/packages/devtools_app/lib/src/shared/ui/icons.dart index 979cf15a989..9feaa28877e 100644 --- a/packages/devtools_app/lib/src/shared/ui/icons.dart +++ b/packages/devtools_app/lib/src/shared/ui/icons.dart @@ -13,7 +13,7 @@ library; import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/material.dart'; -import '../../screens/inspector_v2/layout_explorer/ui/widgets_theme.dart'; +import '../../screens/inspector/layout_explorer/ui/widgets_theme.dart'; import 'colors.dart'; class CustomIcon extends StatelessWidget { diff --git a/packages/devtools_app/test/screens/inspector_v2/diagnostics_test.dart b/packages/devtools_app/test/screens/inspector/diagnostics_test.dart similarity index 100% rename from packages/devtools_app/test/screens/inspector_v2/diagnostics_test.dart rename to packages/devtools_app/test/screens/inspector/diagnostics_test.dart diff --git a/packages/devtools_app/test/screens/inspector_v2/inspector_error_navigator_test.dart b/packages/devtools_app/test/screens/inspector/inspector_error_navigator_test.dart similarity index 97% rename from packages/devtools_app/test/screens/inspector_v2/inspector_error_navigator_test.dart rename to packages/devtools_app/test/screens/inspector/inspector_error_navigator_test.dart index 82b2f1fce4f..0d339af4902 100644 --- a/packages/devtools_app/test/screens/inspector_v2/inspector_error_navigator_test.dart +++ b/packages/devtools_app/test/screens/inspector/inspector_error_navigator_test.dart @@ -5,7 +5,7 @@ import 'dart:collection'; import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app/src/screens/inspector_v2/inspector_screen_body.dart'; + import 'package:devtools_app/src/shared/feature_flags.dart'; import 'package:devtools_app_shared/ui.dart'; import 'package:devtools_app_shared/utils.dart'; diff --git a/packages/devtools_app/test/screens/inspector_v2/inspector_integration_test.dart b/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart similarity index 95% rename from packages/devtools_app/test/screens/inspector_v2/inspector_integration_test.dart rename to packages/devtools_app/test/screens/inspector/inspector_integration_test.dart index 2e5a7faa4f5..bedc41560de 100644 --- a/packages/devtools_app/test/screens/inspector_v2/inspector_integration_test.dart +++ b/packages/devtools_app/test/screens/inspector/inspector_integration_test.dart @@ -9,8 +9,8 @@ import 'dart:io'; import 'package:collection/collection.dart'; import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/ui/utils.dart'; -import 'package:devtools_app/src/screens/inspector_v2/widget_properties/properties_view.dart'; +import 'package:devtools_app/src/screens/inspector/layout_explorer/ui/utils.dart'; +import 'package:devtools_app/src/screens/inspector/widget_properties/properties_view.dart'; import 'package:devtools_app_shared/ui.dart'; import 'package:devtools_app_shared/utils.dart'; import 'package:devtools_test/helpers.dart'; @@ -80,7 +80,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_initial_load.png', + '../../test_infra/goldens/integration_inspector_initial_load.png', ), ); }); @@ -110,7 +110,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_after_hot_restart.png', + '../../test_infra/goldens/integration_inspector_after_hot_restart.png', ), ); }, @@ -128,7 +128,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_select_center.png', + '../../test_infra/goldens/integration_inspector_select_center.png', ), ); @@ -170,7 +170,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_implementation_widgets_expanded.png', + '../../test_infra/goldens/integration_inspector_implementation_widgets_expanded.png', ), // Implementation widgets from Flutter framework are not guaranteed to // be stable. @@ -184,7 +184,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_hideable_widget_selected.png', + '../../test_infra/goldens/integration_inspector_hideable_widget_selected.png', ), // Implementation widgets from Flutter framework are not guaranteed to // be stable. @@ -202,7 +202,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_implementation_widgets_collapsed.png', + '../../test_infra/goldens/integration_inspector_implementation_widgets_collapsed.png', ), ); }, @@ -238,7 +238,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_hideable_widget_selected_from_search.png', + '../../test_infra/goldens/integration_inspector_hideable_widget_selected_from_search.png', ), // Implementation widgets from Flutter framework are not guaranteed to // be stable. @@ -267,7 +267,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_implementation_widgets_hidden.png', + '../../test_infra/goldens/integration_inspector_implementation_widgets_hidden.png', ), ); @@ -525,7 +525,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_errors_1_initial_load.png', + '../../test_infra/goldens/integration_inspector_errors_1_initial_load.png', ), ); @@ -537,7 +537,7 @@ void main() { await expectLater( find.byType(InspectorScreenBody), matchesDevToolsGolden( - '../../test_infra/goldens/integration_inspector_v2_errors_2_error_selected.png', + '../../test_infra/goldens/integration_inspector_errors_2_error_selected.png', ), ); }); diff --git a/packages/devtools_app/test/screens/inspector_v2/inspector_screen_test.dart b/packages/devtools_app/test/screens/inspector/inspector_screen_test.dart similarity index 97% rename from packages/devtools_app/test/screens/inspector_v2/inspector_screen_test.dart rename to packages/devtools_app/test/screens/inspector/inspector_screen_test.dart index af99662edda..2423517c983 100644 --- a/packages/devtools_app/test/screens/inspector_v2/inspector_screen_test.dart +++ b/packages/devtools_app/test/screens/inspector/inspector_screen_test.dart @@ -8,9 +8,9 @@ import 'dart:convert'; import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app/src/screens/inspector_shared/inspector_settings_dialog.dart'; -import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/flex/flex.dart'; -import 'package:devtools_app/src/screens/inspector_v2/widget_details.dart'; +import 'package:devtools_app/src/screens/inspector/inspector_settings_dialog.dart'; +import 'package:devtools_app/src/screens/inspector/layout_explorer/flex/flex.dart'; +import 'package:devtools_app/src/screens/inspector/widget_details.dart'; import 'package:devtools_app/src/service/service_extensions.dart' as extensions; import 'package:devtools_app/src/shared/feature_flags.dart'; import 'package:devtools_app/src/shared/ui/tab.dart'; @@ -29,7 +29,7 @@ void main() { late FakeServiceConnectionManager fakeServiceConnection; late FakeServiceExtensionManager fakeExtensionManager; - const windowSize = Size(2600.0, 1200.0); + const windowSize = Size(3500.0, 1200.0); final debuggerController = createMockDebuggerControllerWithDefaults(); diff --git a/packages/devtools_app/test/screens/inspector_v2/inspector_tree_test.dart b/packages/devtools_app/test/screens/inspector/inspector_tree_test.dart similarity index 98% rename from packages/devtools_app/test/screens/inspector_v2/inspector_tree_test.dart rename to packages/devtools_app/test/screens/inspector/inspector_tree_test.dart index a8af4293244..feda195f583 100644 --- a/packages/devtools_app/test/screens/inspector_v2/inspector_tree_test.dart +++ b/packages/devtools_app/test/screens/inspector/inspector_tree_test.dart @@ -3,7 +3,7 @@ // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. import 'package:devtools_app/devtools_app.dart'; -import 'package:devtools_app/src/screens/inspector_v2/inspector_tree_controller.dart'; + import 'package:devtools_app_shared/ui.dart'; import 'package:devtools_app_shared/utils.dart'; import 'package:devtools_test/devtools_test.dart'; diff --git a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/arrow_test.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/flex/arrow_test.dart similarity index 95% rename from packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/arrow_test.dart rename to packages/devtools_app/test/screens/inspector/layout_explorer/flex/arrow_test.dart index 587958b1752..2b5bf8cf887 100644 --- a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/arrow_test.dart +++ b/packages/devtools_app/test/screens/inspector/layout_explorer/flex/arrow_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/ui/arrow.dart'; +import 'package:devtools_app/src/screens/inspector/layout_explorer/ui/arrow.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -11,7 +11,7 @@ import '../../../../test_infra/matchers/matchers.dart'; void main() { const relativeGoldenPath = - '../../../../test_infra/goldens/inspector_v2/layout_explorer/flex'; + '../../../../test_infra/goldens/inspector/layout_explorer/flex'; group('Arrow Golden Tests', () { group('Unidirectional', () { diff --git a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/flex_test.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/flex/flex_test.dart similarity index 98% rename from packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/flex_test.dart rename to packages/devtools_app/test/screens/inspector/layout_explorer/flex/flex_test.dart index 9c64239ce48..22099522a70 100644 --- a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/flex/flex_test.dart +++ b/packages/devtools_app/test/screens/inspector/layout_explorer/flex/flex_test.dart @@ -4,7 +4,7 @@ import 'dart:convert'; -import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/flex/flex.dart'; +import 'package:devtools_app/src/screens/inspector/layout_explorer/flex/flex.dart'; import 'package:devtools_app/src/shared/console/eval/inspector_tree_v2.dart'; import 'package:devtools_app/src/shared/diagnostics/diagnostics_node.dart'; import 'package:devtools_test/devtools_test.dart'; @@ -19,7 +19,7 @@ import '../../../../test_infra/matchers/matchers.dart'; void main() { const windowSize = Size(1750, 1750); const relativeGoldenPath = - '../../../../test_infra/goldens/inspector_v2/layout_explorer/flex'; + '../../../../test_infra/goldens/inspector/layout_explorer/flex'; Map buildDiagnosticsNodeJson(Axis axis) => jsonDecode(''' { diff --git a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/inspector_data_models_test.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/inspector_data_models_test.dart similarity index 98% rename from packages/devtools_app/test/screens/inspector_v2/layout_explorer/inspector_data_models_test.dart rename to packages/devtools_app/test/screens/inspector/layout_explorer/inspector_data_models_test.dart index 6c8302d73df..a8e0cd0d86a 100644 --- a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/inspector_data_models_test.dart +++ b/packages/devtools_app/test/screens/inspector/layout_explorer/inspector_data_models_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -import 'package:devtools_app/src/screens/inspector_v2/inspector_data_models.dart'; -import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/ui/theme.dart'; +import 'package:devtools_app/src/screens/inspector/inspector_data_models.dart'; +import 'package:devtools_app/src/screens/inspector/layout_explorer/ui/theme.dart'; import 'package:devtools_app/src/shared/primitives/math_utils.dart'; import 'package:devtools_app_shared/ui.dart'; import 'package:devtools_app_shared/utils.dart'; diff --git a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/layout_explorer_serialization_delegate.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_serialization_delegate.dart similarity index 100% rename from packages/devtools_app/test/screens/inspector_v2/layout_explorer/layout_explorer_serialization_delegate.dart rename to packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_serialization_delegate.dart diff --git a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/layout_explorer_test_utils.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_test_utils.dart similarity index 100% rename from packages/devtools_app/test/screens/inspector_v2/layout_explorer/layout_explorer_test_utils.dart rename to packages/devtools_app/test/screens/inspector/layout_explorer/layout_explorer_test_utils.dart diff --git a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/widget_theme_test.dart b/packages/devtools_app/test/screens/inspector/layout_explorer/widget_theme_test.dart similarity index 89% rename from packages/devtools_app/test/screens/inspector_v2/layout_explorer/widget_theme_test.dart rename to packages/devtools_app/test/screens/inspector/layout_explorer/widget_theme_test.dart index 7e3bd1a671f..95beb1f9181 100644 --- a/packages/devtools_app/test/screens/inspector_v2/layout_explorer/widget_theme_test.dart +++ b/packages/devtools_app/test/screens/inspector/layout_explorer/widget_theme_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. -import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/ui/widgets_theme.dart'; +import 'package:devtools_app/src/screens/inspector/layout_explorer/ui/widgets_theme.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/packages/devtools_app/test/screens/inspector_v2/utils/inspector_tree.dart b/packages/devtools_app/test/screens/inspector/utils/inspector_tree.dart similarity index 100% rename from packages/devtools_app/test/screens/inspector_v2/utils/inspector_tree.dart rename to packages/devtools_app/test/screens/inspector/utils/inspector_tree.dart diff --git a/packages/devtools_app/test/shared/managers/error_badge_manager_test.dart b/packages/devtools_app/test/shared/managers/error_badge_manager_test.dart index 69b74f5b25a..e5f17d19665 100644 --- a/packages/devtools_app/test/shared/managers/error_badge_manager_test.dart +++ b/packages/devtools_app/test/shared/managers/error_badge_manager_test.dart @@ -4,7 +4,7 @@ import 'package:devtools_app/src/screens/app_size/app_size_screen.dart'; import 'package:devtools_app/src/screens/debugger/debugger_screen.dart'; -import 'package:devtools_app/src/screens/inspector_shared/inspector_screen.dart'; +import 'package:devtools_app/src/screens/inspector/inspector_screen.dart'; import 'package:devtools_app/src/screens/logging/logging_screen.dart'; import 'package:devtools_app/src/screens/memory/framework/memory_screen.dart'; import 'package:devtools_app/src/screens/network/network_screen.dart'; diff --git a/packages/devtools_app/test/shared/primitives/feature_flags_test.dart b/packages/devtools_app/test/shared/primitives/feature_flags_test.dart index 762e03cb9db..9bebbbe7105 100644 --- a/packages/devtools_app/test/shared/primitives/feature_flags_test.dart +++ b/packages/devtools_app/test/shared/primitives/feature_flags_test.dart @@ -19,7 +19,7 @@ void main() { expect(FeatureFlags.memorySaveLoad.isEnabled, false); expect(FeatureFlags.devToolsExtensions.isEnabled, isExternalBuild); expect(FeatureFlags.dapDebugging.isEnabled, false); - expect(FeatureFlags.inspectorV2.isEnabled, true); + expect(FeatureFlags.inspector.isEnabled, true); expect(FeatureFlags.aiAssistant.isEnabled, false); }); diff --git a/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_bidirectional_horizontal.png b/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_bidirectional_horizontal.png deleted file mode 100644 index d4db9f0be339d19dfdcdb7d0bf6b213cc65ef7ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17607 zcmeI)ZA@EL7y#f4qLfuW2AK#W44oO90&3_sR&cJsT5x=pc7;M?H3PAwAk-29!**M; zY*V&n23&x$jJgkcDHQF636{YCquGkkB^IGBZ!+2L0l=6=j=1rOg0z$!%50!MI%l90n_#$ zF4E|D4#hqWQx2U#kRT*Jmcc2hz1QvJWREJ&E;Zk$II6(_0T2KI5C8!X009sH0T2KI z5C8!XSl0rI;bYG@ngK}A@*p#X3j+i|00ck)1V8`;KmY_l00ck)1VCV22yDCeFp)S5 z@Pt3~-s}=X6E=Z($eXgfz6_9l=pF0TtI1{O7KVI$>XkT=e7$(o(FMtyYr!DRW^?BYaE+5c~*l;kw#{k4*w z_laC@yQ8m&Sor3Ge14H?pHu{kZZbW|Vsnk&!j&$DVMvx#A>DV)0)gfXrUMRy#rDkp>5l0T>XVcg`Ryc;IQUf;$^#=tFdo``0 z`AI~E;u0pIrSX_Cc#0=gYvoR=x1h@89Oi1gRZ8PbGSl$a(FMKyqU~FHd;j&|!)GNX z{YkL{tz?%2I{CyT-|$qYS z##fe?Xxp>OGbCeEJID>F8nPPsf+mmlY4UK1us+l@EGobmGO5ayq)UH)H%pAQ(IY#Y zW|D9&hT2-&JGx`Yc*y4+D$U4FJ{rkI7amP9@q9cHmtpc7j5c*;->v5z>q)L8)?MH; zsBHcf4I5qVt8!iLJYYIv#?2$WG32`HvIm(lvT?>dcX^}Gu*k7A?DgB7Nrv-^+nC|l z2Q-c+eicE@#drqRVe4#fyS9f+srpWDjI#t9ezLGa(~}iDrFuGB&lc1ctl5sDLR~70 z`5G2x-|SKOZKL^&+stZ#KHOZ<;G34{ruFAZ%6S%bXZnw8xBGW%?uBCB+n;SSw()-U6_H(paKf^$a`RAz3hRs4l7V5!sRgd}Vf{BE#mj(V61HT!g3=-MK zn#G=n^Q33`u7c3gp8cbW)oRzbc9CJC0z5$g1V8`;KmY_l00ck)1V8`;K;Ur#f7iSf z@n2WtPr1b934J99fdB}A00@8p2!H?xfB*=900=w<0d3V#ko}r~49C3yPvP_M$@MQ# vX&qNME~eObdwK8?g*-y=xIO~RuOopaXNpCfS>KSga#ACHe^P8ywD9P^sf0ru diff --git a/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_bidirectional_vertical.png b/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_bidirectional_vertical.png deleted file mode 100644 index dd855d25754e577cef1e7a53a5c06157c718f61e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21466 zcmeHPYfKbZ6uzwM3J8d$C@mT+kJ8r4f<`00p&)FffCeKCC|f8Hq!a;pcBvC+Bah93 z%d-WghPK!g*yUwdP+3!fSagZC2&BAf!%IM(!Bx?AW_IqZfBHj92u;rYv2*9_-E(Ko ze&4z0-Z^vAy*=Fw_21M-2pJ08U5+56Cq!tKt}c(1)OS4Lk_VlbBW}*9Qng`}JmJPT z3w(6RBGUad4WUg);Ns+yP(0qV*VE^)8S&>|Ue3XRL1UaA2Ef2ZvKI= zn>>GFOWwtAQ@BN6nCN>ayy2KSyXR(Sk0NH~eB4Y(3#l6sy|J|hRD~{Cr|etQRkyB> z2V)63A(aJ*i-NDIPEglJmw_MD_AT`dro!V}+OZ6&Gw=FMckC*wDd1pPSM1p!@z`!o z`Pkq#EJF{YqTEDvs^;-QRutDUZE^qSSV<^f56k4?MlELhEsTZF{QFj7p)hKOP@g=X z)7{2)F`khXB))CMDZf3l5jP{Q#?Pmb?P|IYt-!Kdab{!>Mxp#QSYqE+H2he$s(7MA zPKgtC$U^v31;y7Zh86uaRJH3}S*S)xolPClqnlE7WT~@`K9U~?td;B)r*VC;7@b3_ zaedQkLh2&u;=*|!R|$85wYo7V2eW7_0B8XcFO#e^ym2Ro5NH>d3c1=l0kH<& zU=xiU04I#Q13&;E5U>H*fDpI>a0TEB7*7CfU<~n6W5Wkw7lUvv06+<#L|Onw6%7nt zibud5;0|yHmTxE)EKkP~*eQuH=B2!&|EuJuv%E`1yi2W$FeJ6T*j)C_l=SKJgSE>) zK@0nsB|0iCFOSk`ZRL{*J?-gdBHIg|uBZCmU+2Xp0HXT$AXN_kA+Np`k2NgSab49% z^j}DHC^+|`M4Oo$KUy*I1uSvjOkAAk%)K_iWb?yz09L9~%PL_|4NDy{FkMP{Odd zg6kVv+R8S%Vq0U~^kevrBm+uRJ{vYif0b|}S!%JlgwigYTv(A*IWi%U1)iq96S#W1 JR5}Y&{sF^Pcy0gy diff --git a/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_unidirectional_down.png b/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_unidirectional_down.png deleted file mode 100644 index 6e864b5a7e85d2b8b6933f554b3895a51b3c7400..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21240 zcmeHPX-E`N9DjS1Ys+TZfpo}b+I?u$l7ZyvmJaA9QE8Fwc75qIx5&(usVF*;GKefC zDDy)mT2#`Z8x=CpWoco;$A zqB&OAXK)`vh>nXh%^}3sN{Ej})7za=R@0$&pA@z^vC*XX&QO>8LT!uY=4#wWre^sr zLiB_)8Rw=Sd-J%|pVt$$@pxB$sZuvFDz8pAqeHp2ulpAAIp2Qn?)4eeY^ciUq-XJP zSbR&EO@bAJm>m`3P%?X$I+>Z|0MRmAA7E85+oT-NOg@h9#q544oVfyS0a_Rq5Jcb> z2@9ZHG!_yR(1xOGAwdB>E_6gCD4+|Ck%a^W47e~3m7sv(Ic6;+C}3jYU!7Pet3AJr z&Yv;b%j&>%1>=s_U>*aP-}z1stb`JYlj>8eVDMr9n(Yei*sjH)_8RsEuV z3K4SdH9m+>7rv&qF(CboMHg20pE@VsFhtV2__kr$oe?eX-?pc9QH4%J;YXJ&@gqs0 zkOZB`TJAyBGUSadK_E%3MsltM%AmsVWEYUKm;u;w6GEs&_7529Q||A1OF*2Ua9+066cwH zidV`M=m_zS5s>T&2KYoG1poqoAczJsX7s6*gaquN`vQ0nfyh8)ATp$8f*=|Y4TuIr zgWCh30#E^{08{`fz!VFOf*w11Jin>Zux6%Wz|Pr+;);U{xTA_>$G9-%2z^0(3@0cL z1a9>YyrvC_oG{O{BIM-B%{#QJCaW#si~W91(d*ZRwoc1r>c7Npo5CIHwr^Z$HU! z(t}UA{LGlSF|s4kbM5|J_k6UFwzs7wZF|L3y8WVfd|tO`b-3eFpgoYK@E1Qs2yX{9 zo_^v=VQIwY)dsENq01Q~r|fGE7a9k))GW;qpO2>A!{)8Lc3O3)LJEeHZErTD2x|w_im}V{Xt$DBIC>kO^JC{w*2I^ zNqa{%p1$c^&&np9tMgwjNyuyqvwI(@|HMb?1N9inunWd KHWf!(w|xg}SzHwW diff --git a/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_unidirectional_left.png b/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/arrow_unidirectional_left.png deleted file mode 100644 index ad28c36593f09b05eaf0f92e6e52ec0cda57b288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17379 zcmeI)SxggA6adg^3v{RgB`z^4P>HCapv0)r5)>W6I=7Z!n}wbNuqzlm*8(cb zAr`qAfbg6>YZ8(mKmY_l00ck)1V8`;KmY_l00ck)1pW(wIrfn_>MX!-eo#jLsg<=$ z-$wX4b5gjouRb%aD?Q4~J1v=8D=Js%j-W$J{6n~Ca548Chd+xaDvvfVV(4NbBl-Lp z;a5=MJ&Rq)^=(t+D7*3lr>WDk9p8wc1%2#4-b^uW+gUGgR|j>J$qU=tj`tUS9bRRV zlR5kK`x+MAs^lDVDm5@3RL{qDNtIsJ-c-tPULA@BXbbh9q;>3ypK0Q1(09irYpSAE z5Rov4s#b}Un^i61^lLeiSg&sKNQFBhI433>x+Q5%kyOUmzSwfNDOM}jj+tdt66wFm zB8shMyWrO04RrF#=LROxgFnU_L*BbLTgaJdC#yKgbz0r_-240J$~A94GKn|V{ffql zu%+LymZ<0@Q?20{H=P)bl&Ps2MIWiI;~`ylt6-JN*{YD=WDj>{*}P#dRbG z=nE?YHlcJUeORioB43=Yi?XW(vkx32U3IZSi0w4eaAOHd&00JNY0w4ea<0tUiCw~vm-R_;U7u7(300@8p z2!H?xfB*=900@8p2!O!22qf7E3xco|1#=gb$WiO76Kb7?+uTA?PIf?1ZV zG$`9hORbh9o0LdG3Dz|=osy)rxvgR5TiZ46w!TCk#6ZsZa_>F&zjOZgw|&`RtRyhN zhoWzyj}W5x9-{^$q!){jE}5*O$ndavEyaPv2=?(rjqi4RQ(R~DW% zRz7+MhCzS;2!H?xfB*=900@8p2!H?xfB*<=2m$NKIe+4}0DpO)I9Yj2s^J(a&+m~` z8_`PNIGEPhlvbt$`_;&(RaJ)Za^oS7=1Q#o=4*>!zwQJlzwXZ_(#o&rhjVJhyqTq3 zQHJQHY|5=?@u%d%>V)B+<|zHn-Yvq_l~E%T_jIch<$O1D_nAclMUF+;?;@rs%cRgW z?1&4Np59~Sc^xmtj6HsYw3W#0-Lk;#!rJLFXB~aDWd|eLA2x=&tt3_;y!>ixt53x` zMKR20CjL%TmNt<#9FWqVWJj7s%i>jK1?O_7TiZe;5#n8H$>tztTXs~;cK-ddVQL#Z zo!Zn$OXrMnhiwEJMA=gVLXpQbZ;;$qA3Hqt;su2lYuqn015U?zMNO(}-=L z0|n_=JoCl;>{!MlhWId96xh!Uf8erTJ$1H72;zfdPVfY@7m2GEu z*-6zCjXrS1%H$Jbx{FF0RojPUa*tz0Pwh6xDnAMzTIg|$?THN2=R1j#tQBFAD3qDh zE)NS(mDCX>Gr4WFyqb(+wfE`P0(M2TG_uJ^Rnbe%iELn>NWQDK?CQSv=B_T10-^=- zvQ$-8CgB7GKmY_l00ck)1V8`;KmY_l00h=ZfF+yk`28)kVkOzCfdc^oAOHd&00JNY z0w4eaAOHd&00QeKP?gj779mYP{C@$~ttmA6Q=nB>cQ-y{C|u@CeHzwi+yG_%hd@5* W$DnI$$imz1wr{y)$!P z_bm$z>8Ts2BZTxcEDR1KL~A6Zn?|GNB_)+#RQyGe5Ec?d3Y>%A^Iud6L56S*-%>T} z(g_J5hTwVODJNXDvqQs|`*W|~E)9xVYid;1l87@!vD!&@vYw2xs*cQ!yRVMqCLYc` zo~Fv#?x$OpGGO|iwpsV9YHbPblSyu~gP)slFA^{J5ISNzuqDvpDSCLv6~iPXDyz_x znGV z$A_d|ahAF2Wl>UP>(DnB6D_fNEt6R{^m6#m8R}zfk9^sc361e?&a?jHp_+18g=_x- zQ|6-)%KS&}A#4~|n*1r9A6Hzns0))lO!DV7^orH@W|F}2oXL(dKV^PKz5M)KX zTd;Bh>v9V@+3G%+9A=R$0JMNalnd}JaJdu;2o{K;EJ7l+K*mL}fJ782G=&0I7Fcjm zC}16m_DLI38bLptc`y>!c@Pci4NuWdr1Q-Mu1Q?0|ES;Gl z;2z-~!G@o*;aR~DapSIs``W3yO>Z>fK%=ks-q?efnh`dU3;{s=EkNj^0@_no Syn8!NP+(XP8e9-$O#1;VRrT-y diff --git a/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/story_of_column_layout.png b/packages/devtools_app/test/test_infra/goldens/inspector_v2/layout_explorer/flex/story_of_column_layout.png deleted file mode 100644 index b90085042265b88c004ae6df987c93a07cce5b72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244186 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©TOYQ3Q70@RXF6*2*bdVIOJ)Hgp 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%0A(h>bkJPEc~mF40|s@JA-580U~2Z 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%0D;sXTFREwsH6(NYzbt^5`f_@l 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%0A1>F3V)@RubydtjQ3sR8&A(Q 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

r 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 diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_after_hot_restart.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_after_hot_restart.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_after_hot_restart.png rename to packages/devtools_app/test/test_infra/goldens/integration_inspector_after_hot_restart.png diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_animated_physical_model_selected.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_animated_physical_model_selected.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_animated_physical_model_selected.png rename to packages/devtools_app/test/test_infra/goldens/integration_inspector_animated_physical_model_selected.png diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_errors_1_initial_load.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_errors_1_initial_load.png index 3c50814ca9c1729dfa54a79628cc2043588356cf..5904b379b54b68c7504a811371f817b89c6e4255 100644 GIT binary patch literal 36377 zcmeFacU+U%+BO<>)EPTUQE7WXic}G#7Yl*{0xAediGql9=>bA<+)9UyNUw@W6A+MI zfqLLIz%Mg9f~wT~Nx`sMAfd*BmuUiDV^*ABZIiWgCt4NRl(<`=t*S2ccx7xveC z-YC>RP*>$IXkcO{`kXO(CeCN3OcaC@9ZvN;6Fc$HQ^fC5l(@(v`hE8v-LXhOE6XYM zh=@NDIfZM!*m*MQU;o^BO<5;OFiFIddzo7~rPi<`LgbLT%k^KCQ;&Il^UI~_$+5ua z&?`p;-!GRt>gWA&p$_vZcyOg$Kz|`-wshJ#u;D>NokU})^-FC&deW~m%h|^nYZV2; zgRrs;%UIcJ!hS`wopn2Wm4(l1QXu4l+UO{+BsJ0-x+>X!y8* z!}NqF;ynIwl94fG*XJLcPuy8JaZ>X5-a|~@3k#Q9M3u+Z zq*(kLvBR_EG_4FDwChwPM_$qRUb(=4=yDnc^jtTlJy#X;iIPmqedxe}s*fKZyelYB zJe&IP*FeQfmo7C846rJP3k2LdtCQ!x|H;LP-XdXo0lnk={QR2Z44yMG3!O&6jUz^* z%}IHxyJ1Wu7*pKe$K=REyAOG~g9i_4vi@s0Fk>K)8HOcCNgVKddUpRmV4+CyR%;hy zu+2U;Q_2S7rhTtIB|due2y84HW8>wQ_>jrm$|{gUIjlNUzl8W}Zbf*KI(Jp02X$6E z+wcid-c#pJ)62_Et*x}K3lpghJSY@_u44c^4&|xD5mE!wXyYF^YK?dfQn zI=8i~^*n*8m98~%#pA(;NnFrY(@LP!Gj9&@^*I0?+OHctQ4nF~Ya3|x5d-~qRUyDXE} z3~BPxY3cB^cr^~oLrzR#d^$(Lq$I}7&!JGE>4TJ>kbr;y{J>h@HS+YjyP~|j-oy9H zHudMG1y+B6pD7TKx`y`tP%awnrCXY;feKq^#q!kBl zefgVOwY5L zd++k{kcl+<^5Kc`yvIid>lNG5F-`Nhvl(`3js1lX40uw5!VMlyz1oR?{kj^1j|#62 zrw*l)qXwKcUqN2@I5JDewfspd(@(6N+1qTYcYMx-z8Y<7N2!!seOyTNtyK%r;TV(ThkprmgF z9xGzxaU6B^8OdWVk(HpSRp!<`llrROUN)Sb?}6X0y@#q^UiMR(TK`vhd3lZj+Nx~6 zQd37NTB8mb#KTH$+S|Ch?gczRO^ckOY^M##i*4N*v;5E??r`Jp@yA{#*JC@u z9t|Q66JE61>Dt-Z9XNETy0cUJ)s57|YB?PzCpD(8tlmhv@d{XOYfZC8 zvip-5L=~t0<@%*+F{>c38ZAEUw|8E4{vO{*z^&Fk{W{fuEL?x#srZ+Fh6bx}n#Z24 z+mAOCqEINribvGW^0j`2S_%j5#AJyzsis&g}m3Ph?@ zmn~97;#PWd@8h}OqU>~d=9kL)ZL=;+L56=_UCmw%IYFdBdR8l0&uN8uK-%Jwp}f42 z(ItDQMR}g^+He`V0}ruRlaWA5k2lPIBj)AxbZX(`t}`pfXCrf7=b}&v_5|BC%R6`e zVO2`DW{XuNaLJN`Ad4KQp@H0OQ+d$i#9`@gci=v6KAqU5cve=H{>jDPVM3XtF=vkY z$RlAEq73++yt(;!6}OdQ@$dUJI$()=UB*pFQUlAX(&IXfzRH67tdT05)dT|R(OwpB zDwT@C^R`#P-D(Plqj28U)lY9HAFwk3gN1y)^ih#2Fop9_)U&HEAz804RN8zx&D9}! zF5#&!-Vkg#v7A8we5r9HQ9H)$pO;aef@`D=5;`%@4J*<4=2}knj;aHBc)HkHqmj(M z;JOhzUoX!@rDS2_pf{nlLrQUm`#ifp-8&mxJ7gBS2Qr^MSc&ZVvYu-5J?$k8u8Uypl$w>T8;fC&Y8W$JyE0ZAbyE{_$%Q>qssa$9%i9 z8oxffXfxm@=a-#LzMcFlA@q_*h#aLUhz@_yVSze@7+;mHFg@c0~NtCYA|+Xe-KFB3Hx(s03somR~kEH`jCQLU2-+w->AXDfm8Z ziPLmo{OTYV%=XJ<6Kf`EaoV2zKIYiiSYtJhJ<^%le5(F)Wwt|~Fg-o}Cy}eFVTm_w zh9ga?(lpaw78RWakYyIjbH?w~Q6HZ!ia!)E`avCY&*hHSXZH0q6=5lg>T@;w5rlI8 z1&kOHQTD?xFTJ^}hTj#e6W3{I_A?0h>j|(L85!-Py}Ku=B~`o3#Q{6*IuIn>u+)aB z7LKDKk&LoU8si?Anfc=V!c|sdceZ2!RJSUbRJQr>8&_4FjH}_jdm^HilmhYj)|)R& zN~Bb!Cf_YB5!PkTMyh-_cMs~w6z0o*^bt!-%RE));a8A|d`x2p$bkg}-F{n55iv2m zaQt#z;qq`0K2Ao49NB1pTKyL`HbVrJc62a6;Y41+t-EGh_Vkh0rUx{~-=QKdq+UvV zS>*W}(^c8{pyA=yIopLwtEKgoKzER4muE!hHuQ8CsVG zw5Tb&&kwOU4+eMUCUYq$+S#;R6H|l)gq=@kB+X~7Cmv^H^lMSorDI)R;-^v58*jL; z>uf>;6SYU2Piua+!(KXoD95Q90@p5dxF(VbV)etKseV^HJg8`J~IP&MIU z-EC|as!VIl!NId%+Bv^!9#w(B0Qf8=B{9ftf@ITUiH@@ED|ag+L~x$b9h@!7v37)s z%Mq-Wop#0v4UIQJfvU5HQjgOUV2D&%w!XasC0?wQg@Zz1X>DM=Y^jqV%YvKN%?cc< z4ZnsJ6$E75SH>l3-G9^?OG*k>Dc*5Fm>*(hv4c6+KJW3dG2*$b<;jot&O*F37@zxG zXuC4G&JqxCkenpwCVTSaNyElC8FICl0n5NjzrM};-6LQP&L3VaY489JA9DMh6@&ff zG^5p0?b1v*?j(3_7{4yP+|v8QPzkbwk-d8-LKs-B4?s-Ck3lfgq4<0Nj28SR(--PE zG9)YNm83DY;4AWOZk)&*64TQAuaDF27!JV7LI7Sy-ha@Y*e~m5JTZ3m_KFQHk z@Sl$#UlJ03(2DOe1W3%{W^bZHuIPPro(6S?!c;q7z<^uAlPg)N+?mB=mgJ{mdM8a{ zY@nimI3VYvYqfk&da=j^zndXOYsmjm<<(P1oBsUs2pGvxpLjFl6?eW_$tIhy#TD!Fz^{XpR$nFVb?C(oJW zL`6k2mYEtMyS-`|P04Dk(kh>6>wIT=Q(k&m)=sFpx;h?%ixF615kaXzHc3oP&7N?K zjjbh3l@x^k>0vB<8R{)5NXrtzN=Y~9VzGjSpI0$+OWs5 z@5?okwCr87wpkw13S+`q^>v%p?~RZR@<>;B#D=P{Pno0W%FExpX|&oEUnWspOg&9q zu$Ge+;?d>NWMD8@$|)Rt*1@=A-+lG7k^XX2l9&Q#hy<}U6jCj9YFd`5%feA%_A#mL z^XEH*vqss@vtd_jS5{UMwfT6ko;<1P%GGvpvoXLFWZ$o^B@KqC`4$%!YZq8q>N&JY zA(7X%NKemsDEehlm#fD8_L2d&YZIN>iGxcFWnaaT&&88;z$9*}N^mqtjKp9jve#&? z$MEpLn+YUF#w71ZyJNw}nyO*mH5taQ&jhCY6(F5kjdgXAphW)c5O^R^Hm7dD!UIQh z;2`sy0!_pXGyfPwXT>AK-OP)(n2xzx-&KAKXb<+0Nds zeu*Q*-N#~n6{nys53bL@g{=giLeeF`Xrp~-)cw>l*TrI+J*YGFf%6nyC|vdeRxube{a-}Y1#s?IeN_kQBbG|l~FfNkF14=njT%+4m*2gw!-$1R8m zqjx9{mmWB?GTB!m23G->WV$H_piv!58o-?hM=wy)2Im)9S2RkAbPQF$@y658&>TZ| zWM*XrJ$?H0>*Qp{r>CApmRPLx!c-r_0T~yT#LQorDu>T)ME*w1qesa zaRp{`X(h;wM^dtzgcqa)Tpj0pjd9O`fb@0JjSpzU#G<0*&YZo&{*b~~7UmTsV|{n; zr&sB5WO1GNj$!WAJWHcHzf(O5e&h3^Jh#gtqXlx5RS|Vhp0Te$ZeJsq^Lu#n~-BObb!1uHIVH$Fn5GdDOn661F3s%81&8f$e&fklAd`q#V= z1y$*LK!99Ym>ysS{5CdrBe>=jd#w9va%SdK=fW=$bTiA?LEGhzBX$UPXJNsIpgDjj zE#;E{cRNd*tRX-`x(jhfr38L2daat(ARyrV7+mG{qRuE6!a!e~r@7Dd^8_Fs2tN(%+#P=7sR!;kGn{QC4*`S@5 zx85a;!Sipu(@cg$x%odfuXcjrRgQ2?x+lAi7djBbqCuqf!&2w$8Oz- z&JPcM9t2k5v+@9Vlc=aD2tAW2i%qb+;%Ckr0iGR+#*oV-XZE5{5qXE)I6vLbh0i3d z3pVC^2(f&K5{d2fsyYeU+_Z)WqYpu>tjw)iaX(C31V4;_Zec+IJQoa9t!E?=Ocn_U z-oSw`z_Uh&P5zkB^XL47f)s&rm6x}-w^wmyojkqU7mRhYK0wHPy?pp?t~MHtMre~~ z9Li8UYvoNt^?}gu5ZIuEyso)|ba;SV9(@Px2&6s)%MrPe+WN{NWFIZUllPbPJa2$+ z+&s?2gjCU0ImWeVq95+UAg89L9srpQOn%zj##0KLLZwbwSut9k846Lj5yP#{NAHJ> zDkUpR%oZ%=3@Ni@>M3B2SmQkB?v`6s4juYZi9Ms^<9@Kx+W8hbu&gx$6g?(btn<>kN_A<70MDTk}}Dn@gwOF#U4-rwK93KE=oEEmwfOfF4+4FP*uFmK<8 zLc|p&^$e8TRTs3hv>XGAfR2RvEjip998M0<o-r*3HG&yfUhJ#=$`#9NWtl&MT9A z@x>X_ueFJhQ*Kajs6d>lc!!YbEfDU#g%*45)Fyg5baN+R<*FKDrP!nEZ%Mb=!FM_ZdOkZV%i8e0AS0~9h}`;aW6OJOX*Z2l7F?AB z(Ex}ndJ9trm)g>`2tgjJB-8Qre;&J4ed(}_p6%*rvK&$rXxn1ttMClyqfp$+SV~-5 zoSyUL?Wfg3uQfa)?LZ}HWVy7Z6Q45n+f_xFXO+py&ZlNZS#kkH0TeJdKd&i$ZuZfx zy@0xkh&zG0LS7M;K+Hnbs0eljagX~Ma7cUh?uCbHmlOlLl7PRe0o;Md<@C^lBON~; zalD)5$B&2o+S}U^y8=6}f#pYx#0(th{0ZcuA|h4azCG-+R8&wvEP*F9Dy;X%?-Fi} zjg28((8rG-NxOZaLy*@126(5z)XXd`<$Tk~nT_k`URrE=1|AEQNyaSVVs`Ks5DGax zL$*b5xA?G_jVrc~jgPa3*Iu^8Vtd~i!iRK7Y`OSC-LV9!R0ju#mS@L)e6{s9L=?pR zngfL30Y5QO?r3I`$u{woKmL0}0p~t28bh$-+anOG&Wylc5Z+z^2f)YF(U$ua9duBK9`l!?#(YxA3ZEHr*1R!DKxJEE`3MU zWiVKgII8C10>d-4+_;-vP32)Z3ty8Tmx6yLQ2t-Y3aQ=*)l%5*ymeXB>=hn1!;Qgs z7Tv!mP8>PhF1bIYD88ehRdU1OBSKZk8}0zV)QJ5{wz@GSicqEY4i2HTCGKk!?L4!# zSH^p7pA;^aQw!6@7Ab#-e55#yf()F-B<0uM5ZKBq0Y zUmtaKw{O8TOQ77cyY&PMOFV5so~wAi<6(jc%W?nc2GgK$0qd9?TwGinbZt3CqEwUF zw>#Ma> zoia>W%eNY7R(fTmS>P`<>?mIOHQ$ZWC8DxnPkxDVgH2y?UbYSC^-(rnKXl$$D?-Tv z({6gxN>xjb{JM}b<`fpXVUut>4PE?hUtp}VUFOG5cUX4i7&nv3^?uJ>a<>+tj)cD? zm!KsKag{jg*iuM!N3~Ojef7l_nT=%!1B=nHd1NR-T?Wj_!V)z6V%PP8=@CW$YloP< z`zlG~qP=@bz9G6MY%-hAhD!K!|J8YNW`D2$J8&&Cb3TfMe9xv9AU>$XV{SlmbX>wD z_C%_E@#~%qV8A1G3Hrvu&0x7H8U1l(5*19>Ib(=l*Y(?0R`vK#g3`r0jY+=yeLC+uo<64(78 z4(OC^yb_**wMb8w&KeQ|nIUs2*zs7&Cd*JUMy6y|R|8k+#N`Mxu8l{8yPb^6=Bdz< z%{YCCT7$QlJR#`a-}K?R(Byp0(luh*B>b`x%hmK5l$I{hzCe`(e z^922}qNQoK%HY}&V$6`GjiW1PrgYJ{?z1(KD!-vTPuM^#mSZ;WQT^Fuq?4 z+Fc!`eC2t|j2r~qz4}^Wv~g8@pR4%`9-o{f# zke#3RoUJLO%vM_z*k% z=zZa6%mQX~ruy{CIAAF~0kmx<5Ck*JqyB1_W#w+!VmT})F3r#Scxz|B6y8`d?tzto zg-qwXEz2`z;AY8z4!1VWeeL-;&>Dswo-<~plVqSxp;4H*Xcg`E{ps(qFXclJd=np z@C`sJ&p#i}x9B=MYJ<)^qJ_nYom`()Zd&TgV#*%)g7$D&y-G4Cm6%H!y%>$#0a@be zsq{q_>J_*8R>vP#^ZcZ#m!KW!;r{SUu@@oH`Rn=C$(3aqqmWB`4Hv&*uv72f7ZL~C zBd;6=2Y$NW%X$0tnwoz)(KaeGfz%4}ITDBk7=Z(NI|D+q;#| z$6Z`qxnyMBE=WS;)w{KxEOg3k^s2lw+!+`ipsHCeO?ONj?BttzpGRr|Q$>oQJ z#I3sy>pAS^=^&{^Htk!(|RHH`oAQKVRo0F%QnufyBCxH6X zwO!p@MFQFeA59!fAJF;vas&RFJIZHFui1Q469_bK#9WvQq<`&inx$6lg|;_*qu(TQ z({#(RP%U>9yiQ{$$4m&dYOeQtv1pIpwrIcgeleyZtU!ZKKfOtT3Gq{iZX$n3OwIGH z2lq7n7v}2=FJE4*%r`aF)3|kNCyWXjB*y2uWI=m!=P!x5swIv(2T+Ei07!QL561aF z2H;sV_{EF$P$k{}pneq49EWN$BJt!&c6VdVj9kwsUfG!|88?3n(NiaNVkdsGr$A9l zOY3U(ct=){W_p}Uiwl$)E-nkzZi{Pt;6l)#pFnCRMF6Trqgzjh%2kIo>FevuzFYb9 znPJBp9pTjT+0eU+b#fO5bgM={@Hf7SC>^rA zuBFAWK93&obDb(OX{J1S^d3RE>6tEyP;w(&H`>%}^I=fu1HOAY((PXrUc?Dp8^0P-1+HCImGqbrm{@*eBwp(JXQ-=50~k(9#o zL zfh0puLYf8p?LD;iqCq(^uYJRa{sb^9ijWO$u`q|<%UVzZf;dehVk1kz)3>|;51eg~ z5_FvCyuR?XL2kWt>GNJ|f5d7KokCUg!0I}FW~dgLgdLfEz zH0W9rcKvG$p|jBDW(_$xo*L6x>TL9+Yim``FbA6cg10>dLN};r5gJIVLk^ET0n}{= z4$LWX-eg6ZZ&u~YuM0o_F$=X+gU0RcB@&6q-igP&yh8qCe?!oS%ybOGpMs)94PhO8 z{RAkLFp1fwv0FF16Bp401Y=H@#l74vZu^2|HH%EpuRI@;Rkpb75sX$Il`2b9=jhL)FQh zJ8^*=Wu6&r`%_hX$Nlf_yy$I-n~h!f|1l)>HzIUfc5)|7;x!Fz&@FF_xKqEgD?-@a z&bJ;Y7oV*|ONH5QeGf{MZBG-D>Du}asM!xf0SVffAVUU}Sx%kj53aw@mB9#YYel-2G`(oa8Zd%R^WzG=-e8nv`r zBlk4D^UJ?wn8VW?b`s3~j^tb7TJ+AyN;Ao=&B|q^OrD1{M`^&l6*nqBU?J(hF>FDTCJR2EI#-xwZ{cacTq38Z{Dm8!2?0}y^s;$O_M__F8NN7D86zK4DP4wtHyZ@x(ph3pQ0)(ghbCA zSzrExVarNT;sSMGol31Rd2ViNH^T-z*4MHf#@h=ga%#<DSORmbqR&_o#e)weCj zdA54r?LO&xa?;g;JiM~gR7_a8N#%mLtaF^uvEfg%7MX(*Evp9iy^3s^hLz$%qo!9j z2HhG*^Kbh#ek#S7?R!@O-P-bQ(VC*b3Yx=E>D2%kE+xT z#k+>ft^+HNuKb8Yq(s&=b$DJi<*BWwJA?kak49=Fh)YW|>E>hE`xna@*`n(eoSd9` z?HXkefKI5WI1lPO2O()`Z0An={}C@YT#hW($L>6HqczI>%}h|n_+E<^l`(b(J_cG% zfJmQ!-3Xb2I%kEbKkecKjBcgXEYVNU$FgTiK!O0vQ(YaPR-btLFQEKW{pcp8{!;?I zGZiiNH*&6e+mt;?U8SehrRhiFR+_JH9t#Ph+vmk9vE6+WKfBwPhWvq{{2wPzj&bob zo;VSZ0(*OWe^j*GKQG?bMK8#saE++gg64Ryy4=zp%iPJ?T_F8xL(cPJUimU(I@`=r>-0T(hsw3n_8SOUFn}m&$

TMX!Q;5d)_?Hiik#i;OF(o$fIPE2+>`--eFZia3KK4X zn5)ny_>tUR{xj~UUrA;D*W?zqK8|xg2O;Q<&g{$s3yU|Vfm^>g!@%6J+ZPe79bSJp zTSZ!##>wSd^_>jYchtE$DF!`}_qVJCejnB*ntZURgC4?BuPv5BRyWzoaMz zRtul3uN!x8k{xj#E^Vw+yprIB%%!^PfuB0F940??X1OJH{nVMQIq_3xR!QLIC@K`{ z5Qf^?|w(TZ{rl-Rba+cy27BWEE z_q@>E-Cg!|vdO2gt?wSuR}l2|@Kqf$ zn73lk{j9w;(3H*2$tl2R23dyH#usx&IBG6|qrf}lxN zHJ_|n#yVZTVnC!A5ex!J1oTxskCBF0kRI~dxV@x69vKPn5!;ogp=Cu}*er&oII4m@sg9KEhqy4b(MyUUk`1};O=!cnG`s<*(M zXIf~cy=Oo|*7U;|nH3w@y_2^zrnN34OZi#}J01En?fHJpCj2wyb{yywK%YkLGzvmm z?-t$fPRC(q;)%Ry)AYZ6al5JiJZ8sF=x*=;xBCSs$zdnhl_Z|nE!#q+>Ar5>A?gcB zluNag2HJ5zK;9S?SHA&&QYjtLKI04w44ime+3Y~e# zIXuEjrHzf1iVwKtW#A9C?@+s$xKXIKOt=?2TXD&vqE?4pc4>^q1N}>vx*xJ_&Ci?b zV~{JJK&hZLNYu*I^MNk9xXavw%b5@pzol697SgE6%xl1=ft-aOKRSP|$bHS_6)*GF zdZ1Ed_WYD>pQV5GBmycVg{aA<-rJt6gagtSwqyU_{M(p^`SbN_Dk_Ms>SZ@*cfWr9 z%I*5v>@9ZDYIR@{ht`&E1}YOZ+_2M6zg+K@ACa&+|cs3)*u*IeG5L$ii;2@y?`qKVP9X(Z;o#sG zRr6a*r!H_#IHAz8C;#ijMCo)9WOYr#z}nOzB9#X1;LDDNduPe3vwgsi;Iy8-+5X*l zbLb)U-(brl84xtLfZmd_Ug5WJgdSy*?kurg&9Gimgdmo|gj*i2InKOhnPjvDYtOf( zL~?OwUIsZdzpf}WM%IteAhlag*EL>3mxXBa=-ek8^YJil+GlRe+gb7Ljy<#{_wN%y z?iSR#ooy}n=+=Bk!1xGLeI>jnwju$F`?0Uw1@dTed?1uIFINcF)k@$+n=gz#9jiKD zXiKsh;q&LuZjEbe9p{0*F0>oTjfgB_rlEn-ot~avE0BSno-MvHi>a}p-$#Q-b78{_ z;5weSuM6+;wTZt_wRdz>;s~fC8OdYm1g&-mphgcKU^M$O_190*(15n$5EG`n%5;b4 z{H>28q^ST#^QqeUhA@uJr)bSdV^!}3h@c0$_G>cGNejV@XB2%L+3z#fGO8gWRzMqh z1l7rHo104}WM(Q6HlD(>Sbct%FCGXysClP#aJEBA{;+MWDN&L4*)|zscDcBDds;lZ zZ-%SElY=3!6|068$wpS^=YK7C&gIK0qsdfs%W2d;+?Lar#xdeDTW)cnZAL;vxxuiF zvbJ%F(2?K%ZBlLU+>Q$BwtsPG;h*GA&-EbWv9wiH$peYUl{N|T7LapdN;Y`#3|kj5@u@ee|)#E?I~?>~OBSWGc>OiI$Rs;X+JY92rL=3Gm* zksyIg%6jvcJKf(yTL4lA=vFVvh)GHoPi+eW65`tGJc)@w`ARj9wx;D_sqfWPx1%FV zgQuZ9mc*$4Jp_o#;f~;z>(%jRw-*0Ac>8f0F10vBGNow_!k?ekDB;Se(zbt~%!0VM z6{^Ow;tQv>q_-v=g-?y#f#33)`no#lcZ-KTmW)7cr)j>7eer5})5A~+ajkWphNq6p zWB)abMgj(dJ*Aj!M zVxXOyn=3s6L^@slcA9QW$=pi|+RV~*YHBD6822iWz%j|Vh+JR)_)(okOC~g7`1)8! zr9$1-Jt`EQWo|Q5sDy>%KO@Wk4JVj5LAti71wiKEyF>7pT3HFqEU$hdo5a`SKYX~@ zTV!Wq3>y@XT^mo1Zl%ie4rx6*@VO=)47+xju!YxVyn!b|xCJ1ttPyI+=die;95fZYIuyGTT*|iJjU*?L7ETqB{<6m4F z5YUAIh!RI0F3(_q?&r*ua~NC0EcPuP?O>H!uw{~?DiJBL4;Xd<>HCZuG0S=ZZob{A zJoQ3a#+^ke9+0?8De^(y!^4a=f^DP$ta+dE4-2gbM-b)E5J+i@zJfx675mMv&|&-* zgcgMt-wI|^HL8Z|qe+n_aX##d2ENP7PqYmhJi2PP)(f?c)<48eEkmzUJcwnB{pb_w z{@!pUW*nu>L+dR4mLq6n*eC6>_{Gi5i!{*{WJCze!UJjzB11>0y3u{XG0AAlH_o@s z{DSue7Rryn;>rh-OQbta9t>HhMK3Gq{_Tr@MWNf{f?A2ZA7U!fN#M~OJ+(Cu^}e&A zhu&TXI}o=a1|Ylhjcdb{2#=n98nPvK;QCecaD|2H?b0Z99(TgVm@M=Fws%751TyWB zMzlA~h0BA<)0#Z8AJZQN8evzSTU!qn6U zL7s%-6p#4 z1l;Jz)aSJrC@*7U_&F`wx4rfY*+-EzHjY1)3a?X@*C<)zYsj>gpnv*lG^&GBiIjOoUdXE9UO zMst_tv1_qT?Y$duxi=ls6Biek(Zh#lu3G|gdvz~u^6S@zHa4ei+#p2q@rP!)x4@=v zq7T>6wqXVaQo9!`r~9NJC7hLdrk!HluUNz~Un6TIqfslH9u_m65wV!0J^#&}KK=HB zN!}pet&D*ImlaBnwc@KATOnHWzfFp~g#G*X3qfJMjQzdIJh>$mRIom;Ur(gXZx)#+ z4zo-Iym;~Dmr#7$G_0_{{{fE7t<2+Ti)0vpq?bWq>edJ%@JvbSloJk6K_YaUkCr)d zhWL!c!=A+T)v{;zc5g0(=k0K)=#*fGNdW8mlA_I*4`||tC%7u8gGi8nLrKLmS_NYrJAf2sHLb+Yc&wnJMv=JRcWjf60y;MmB@=3~wyvGG;9*7cWV(N{F$ zRg*#Hn)LCXs0xMP=-2=`M+Z&GO$xmA31C@1r2A|k>e@&N<<&BTtp|ZDGPi^EwjNcT z7wU(tcc|95V(cG=sbC0nO%7>w^ED#*d6yUKqm7*>10KqZg}7C_q=dQM;+N=%UNkmJ z32S_D+m=4PeR=~wr%0>)A0}Yr)_<$dA>@5a;pF6e3Hs;jmLS-LR@56NK|a1J;Q7jq zpI8=0axEdGG4PsO-z}>aaw!3F$ngCf;0d#_>_hmP*u9~}iou>N(nwkcx zqphjjw{>-mY;Dg9=oizjEKUb?b#-CZ=8xIHo|V0axK%fj^&5aY+3z$OC@OsXLq|Ip zT5{V}e&k@wYmr-%mg24{m#|dS-{1dre7t132sZZ|XJIKfDFX#ZbMuYTZyz2#u(n1! zSh=`J8o15p!QlmmONYNyDjH%}4T=7H4=+^z`DdAglIG7$Pex=Qv#UfPtB3Jl?)3K} z(V=nM;^yA~U}eSkm-T^@+{zf5J?xH1**9L_9`2!KCo&Fv^+iHJ9%RR*dh4e=VOwM( zDh<5dTikg@eiI*x{uFdCD``n?UJ9Z5q%R1u8F;K!x#5T>wm#=ptv|pWx9K%j_wNtC zDDzmVWCiU?#_igX{T%gM!38z{3P#KR{vX80tJFo4MA%-?);%|8KheKt&7rhu!YI^y z5(L!6$sPu+EQ1XDZI$ik{b}y!$w+1dD%C$ojwJx-uZWl!e>gn{kDR{Y=qQTptO!-& zz;J90@U!2T%lYi0A_*u1Wer>>1Hh4a$64Lxa4=d3 z-~{Sd;hYDcdC(HniQFP>ZEf$aE-7B~g9k?+n3|@lU);J!imHQD0%l=i8o_k{jzaT5 z`d;X^;us^fI1-u%IKb;r+3~)j8YR!FQ>5{8tt8}wv?s2e-ma-E>%+R^1{-*%Tn|840{~?JnLvyj2TqWU z?WMXm)XwB3Qjns2)kv-o0$c!mG_}q5%BbDgtlzMGkN3JlL0@Pw&&(`kXh^h0>cl;J z+)ubJx(nN^0SWAT$*WvH9|mAi)%ay*hzy%0uIYJpUbKV$;@Mr4**(=5)IM_xaIcZ@E_CdDX0aM9Z=N( z#t=SNcIh*N4N!cD>0SI{J#sVEyFOZsAlxW@Ofj&Oc6N4udilO>1s|pm(ABCdjyk_y z2Drde{sub&i|E#Z}22CKpBAS+6S)d>ekm1 zih<0#lL)-H4Y7(5(!L=`wL$}TalnRMVwOi)WTCr_&5JkAuq|VCQxe%(IA(i3`^E3f zz_&ESCJo)D;b}jS80@dtJLxX4O|r=el6ekvaXf^ZI`WV4ItdB328Pm7zQJ ziyBPQY!^~af$i%QV7JDnJ_+{{VtZNQ>S6C715k(h!eP|@Kcwh?NYVe0qW>X9{~qJE z;n06b(aog#A5!!`q$rY3J)ixT&cJsfG%S3Umk{qJ%7Cy5Qm!V(8IakbXGy2DT~4>9 zTJ5E6j9b%3I^B8#1vx0LTP&-ZCj^!;5rS~f3aKFK|IruL_G)}VKlOrs;h8J9T2Q=K z^T_Gf$t=_G!43Z2N`+qK`6aP|+lxnkfSzwdfOu@2C0L;?Eh*)M-^;qnhM+0n$H40RKjHQLMXH;V_?9dAZUMQ*A zCgBzQxjLT(VhBM2f#>HAqn`T?*ldi6Q44AeQIS{daI6h5pU6b8+;#<}MJJ%h2M@lz zy_(jMp<4jQ2xV3wrNn>N)z`g!8?jm=sHy52n#!>-e8*eCNJH6Rhl1e_{4;dGCaU&dkPe z&hw{3YZ=k&!#<&oR*>k)`4sd=`C-fdl_DFfdKu2u4gPJ1X8@a+6r;z)SlSjtl(HX4 zIc3zRQg??CyI3L0oS5WO3WGBN(ag{axg|80jt=4btj z%)i&S{V%$ZwHlHYiBS;|$T5!cdC<@X*+=$wQW*{@1?k5i={rBgrAF0)17g08I{)rY zX^Dp;c=(kaw}zdf2~R36A#nl@TlFz>b#b|Mkh{OkRZKzAgVDNtIT1N70($d>_MQkR2B1jJM1tf%4yJUzXzLfeM1w zDEY(wy~sHsZAGJ_qnP=&4mf^O`didy?i6N`?qs}lX>pia(@l{O7!gqzQ&=7mmv>)s zgOvHposj-I95nDUH+Qyt1P-6-kl7Bot+~LhV`*I%9Tg>GZ|8+I$}QFSY)wc-CDPZk z#wPMcMdhTo505Yq#c(Imw6`g`6oh&t4%QrN>hCW%vvhIk{)wZbJq?L(>vevT4E;TX z8(v)dX=epYoG|R=oErtn1ITqEBO|>Qs9z3y_}fe7neoR9J{N(|zVT`eK{^4yJoY|3 zvoa7Lu-Wj>c3s4Ua&METt>N3!le|r}5nRGkFa=yd5g-tpM9 zb%&<6j*j_*EB{}0-LDiK0X^1_|3?6#srpUTj$wZM9TjJ zxq-F-#H)zN6KP`8&^)<_oT)`%^^j&`lZ_9M0P!G#q5(@xIX@$Awh6|6I8UWZvG3H{m0oT1aNP1xNJg$o8Dn@ow6o5}q_P6KX&HftLa zms6QIyAjoiu9nb3+4e7XDNkHeo|Fx;d}<+$yqE*dHbBvPFNXL>z385Vsvniik&R&ujjP z`nKL#65S@=D2%F{*1o~#&%8V8vc4upH~M%~te@CHj`XD?hTZ=ZXr4pu(|I0q;rBaI zwSOr8Zu)yP?LG-ldy|Xr4XO`i|3h9s#qqo^2OM>B`kIh%O-6ihmiby~^Q_S9)nBdL zHd9_jh)n1s;=0TFnp_a0SpS+@f_U|D!SW>%x!=`8x-M_aJMLJ;icjng{G-EQWqIjq zA}(-t#6zSZZjHM1`LSF897o)DH)|UT+tnVUB^>AF2%6Y1%4OpP)H zww>l%Vt|U?nV_dCxNk4q>$u2Aux9X$ZE2UBd zdoXs7IIq?7U863{CzTUtGPDIGiudSQzWhie!iF^TwB?p z!k-g5Y<-~a=)F4)b8;qJ7B<>u=jV%ZhWuacU0G05XB5sj)@iMZGdR@&CCqeOI#ZE- zhgg>~j%aHupvV#hgCJ25BLvJ+eTWtXTPjSVLMsJL!~}~h29wZKX>f%|WM(L?2U1U!3Q!j>gpE{{bq8dare9A(nImcG$Iw8cp{1q8r>Tt3 z&#B+ZD788oDS^`$65e9-t}hlG0Er~do^qMzS5W8)4$2u&ATS%J?2>(O%#+|ZA5Ts; z#SPAsl+?d|)!Y=SjZ=HT`)wbj^Ba8$Mz1oyg$Vu{SLXxS&7c-~tB{b^KXKsTL3Sn` z)Gj+DlHf^`?*@UiETNEL$%>;=se?1;Yw!l6=ub*pk%z3uA*VNpwsw?tP;fY$?lPia z_oaZdwe|y4IdmyVZv;WD}hz1tka#Y(dk$XWiqN&vW zMmAR`h|WrnlF;EN`)Exns94a32F;E4NFhP{C08eNqpl+brRn>}WV^SRPyfT85^R&$ z^T$UvB|+D13j6-WiOo)i1((sJffv+_@$Md_K9)AA5|4T`tcj)1ylm?*>6Cg<7B>pv zrC+~&ArC2KM^vq0w1#eOQ0gQ24}TLFFS#{1o-}24h-nEhtu{~(n{h_G?hnb(U+Kn; zjfC|?C>KwL5Qr=nk8eXb21m-X#YpAEFOc5FB|(){L%h4+l^gS?aNVwg(SVf7St&03LY0;B?8J3H>;&X3qUCqyDQwa~hi$7UmpQ=4@ zIJQ+*bzH8e95pYbuy3{XVK3N598+yQuDuJ6CxH9N)&=&piA%1u4fFQSJC@e9zy?7% z$;9A7k-*r60)hRXpg>@c6%+{UDU1Sv*%K59=l5uSO_Lt?ak%AqyLNoBA2uy91BR{% zX24J&Faw4Hff+Cq2+V+?Kwt(81>$`gFwAHzY%<|+n9)KBi5V>vh`%>lKF2tvvtq3Q zQD{_rqn%QD%8S*@mYg3Hjy@(?Da9lUCEFdBv7||wGa5Zy7Z^a+s8f8;PWUf`g|@Vt zgE;d$)vL`(KfhXQ)ibEuZCJSpB=FRkqAmlXHlk?C6hQ;-&JaP`3hM@U_xf5%h~p($ zU!+TcrVus|yW1g8mkXU6Lj)SFHhtl;dLdjkJT}&vRLK*MRR@7UT3to+6zy*Ko!F(T zrVNHbgP}^u&-$_5I%DFYS+PK)(KzJFykLeK@^;B}da?p?9LJ#>X|}(w@9ok=Cs9=* z2O5So9k$-|&=-WVp{2;3M2^G$Fgd9Ln*Y2pfLaK%=o!)@ELsJPP8if&5Y^`>bgC-y zX;jC&Ex(F9G&?H~g5R`)C55l0(COll8Te{T2B_v!Qc}K__KX)y)eu;qu(mV7 z3ILPrM<56WPS2*~de_Vy@xB(OsiLH&-jmPYc&wnHKvgv&$;|2%85ub=^Q@OEnn9hc zfK77VkdPxM*%bvX{(jGMC3L&%?C4OQ4c4kJ!LW?7`Xl?Y>u-W82rrSt5NXYR$(4~R z=+6|7Dn3ki_Uoye3!dUfn>pe!V=kU>g5rx~{$z&_RzmeobMJK#kLonowOF6m7{fWWvxR(v6!z)3ae-@D}6pd zu!JMgOp}fh9WgX1^uD&|ZtD=ROht)a=j5aw7)V^cL^1{)y$0?BJ7AV-ouUX?`CM6L zb#+8>^X)H-_bq2hwccnR{#-P$o>ak=lfJF4u7+vx#*DDa1WK-Yf~K7tmgYY_N}IEY zU?iA%bgSyqd{|=B51dl&??hPoa!7AYa%U@{eQ=eGH>>e08xkgI)M#T#ruHU`y@KVn nW?7P_gDT#gYo5EDmv_vJ+pm_F8{A%S5wLdc+`EInjd<=af97_j literal 35122 zcmb?@2UJw|_U?F%dZSUIAfU7aq$o&{F3my_sR9Z}4Im&zq?ZB4#He&4NUw^3^Z+8A zu`rBuk&YCd0Y*AQ8_F=eeE`9m|9$Jd_0~IUB_UJJ`ITM1@7wz~f!dlXhYy}Sh(e(b zt6ovmL7@)vp-?~k{qOzoiaoz}2mEJ`tB%SgRDKKV82rx6w85BazRg+;@1s{Jpj7kF4GIbxZ#C{xe>*(kR*#D=a_}1C1piLH8r)8wAUf8Eb%Q; zU;gCo4BMmbJQ%Yl+uq7*_^w&2?#3KU%W}HEJhEtAsGpMlb!sYjb#*mGl1nfs3>VDF zY0*8MA}KK4$9DPhyS9%XS+SIHeKuzkO9{RsbaX0OT3StUqP!Gkl3)PFyDyLRq%hp6yfz9a0i%#M!pJPy$v zDGuJ}Tf8Cso7~j(3BJRV7yDv*h zl+ML5V;5e(6cHBwxw^W#@a~tlS9l^j!}h{sMT1~T{7y3bX7};mdm=C2=hQwp(}>d5 zeX1RhoSgh3CntDxbkx~|vQFnK`U;*+TMox4j5j#kV`XIx!IV+vo%^yfYjI4~<{d@X zl2rWs{2n)3Thgc=2ULDzw0Cd_*>{MsF5je*z*qbldEPA->S6c~>V@99xR8~35`Ols z1gvA7V>Lx#w)yMCM7U%Xt)VD^o{MvQVuBbiNmXU-!TiGRJFB2#HXmc5P`cIA`kahe?%QCq5tLb

    YFP>6dusJ8vS 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 RrQ@^Qwk2}2P!Ft diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_errors_2_error_selected.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_errors_2_error_selected.png index 80f0bf9c286436d821b025d3787d38fb58f250ed..d64b611d80f89b6d579273d87316737985c9b793 100644 GIT binary patch literal 47663 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 literal 60687 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

    O6QhtIWWw3sbWf5`=A`rluYVxd~m`_Ym9h5CeE= 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 NXc}siUcP?&{{a$^W!eA$ diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_hideable_widget_selected.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_hideable_widget_selected.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_hideable_widget_selected.png rename to packages/devtools_app/test/test_infra/goldens/integration_inspector_hideable_widget_selected.png diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_hideable_widget_selected_from_search.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_hideable_widget_selected_from_search.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_hideable_widget_selected_from_search.png rename to packages/devtools_app/test/test_infra/goldens/integration_inspector_hideable_widget_selected_from_search.png diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_implementation_widgets_collapsed.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_implementation_widgets_collapsed.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_implementation_widgets_collapsed.png rename to packages/devtools_app/test/test_infra/goldens/integration_inspector_implementation_widgets_collapsed.png diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_implementation_widgets_expanded.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_implementation_widgets_expanded.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_implementation_widgets_expanded.png rename to packages/devtools_app/test/test_infra/goldens/integration_inspector_implementation_widgets_expanded.png diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_implementation_widgets_hidden.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_implementation_widgets_hidden.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_implementation_widgets_hidden.png rename to packages/devtools_app/test/test_infra/goldens/integration_inspector_implementation_widgets_hidden.png diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_initial_load.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_initial_load.png index fc7ac52325f91c5be4b2b2c331459492cc8ed6f5..26d0044cf97d82b593ddbb5df6802292a2d8d62f 100644 GIT binary patch literal 27511 zcmeHwcU)81+HRB)XDlEBg47vAKtPa=RA&T1siQQhN>zIA5FC%v;ULnRf`YUly%z^U zM1%-P2_--xATK0s?`YzNxNq8v;2Y0D*k>_Ip}z#z9E;Gx+C-$8EJ=Ah2$ZS@6qu9>3hw`yL#D z-&==4AU{HGs{E|yo4zm>8A}VgQzGv%N4V>BFz4iL`C2gLp ztg!I#z%TAw?`J&XkTW^D0-28AyV9!j^4!k%v=*OL&&wj&J31Bxa9deffeS7qb*hSN zEZ~yw>=++?q1j_}REA_l*k>nC+8sy4qg9y#X zqNh*4c=%;%QXl&IcAR$J{P1<$%O+XRH==Z03qk9Jc``gab%`S3FxbVO{z}P2VRP0< z7E!rbh4A=eOtD;wY_+CJy|bUgA$R05VxB&II?T$4R|u63Od6$$y6HGbY>S`(@( zme$oCcR`IOzGLT>FKx)MK*BBlqZ5ecv*9YjrZu0&Js^~VDCi+2Di5}wJn%;nXK&Wu~k(An~e@7e(!2?PYJ}t z#;QS~P)|=!6%UWqHLlZF9G>5L{S}9c)e~gq3JI^(vQ*?AU>}GZz z)@#hg2V}<7FKyp$n7TZV8MN?wc-P81m=ap*M3k|@nv_JcG;gXlmyryQMzprJib+dz zWn^T;X`Y~aSNp)zQxe$L5|4q$Y4SNpyObJ5(Hy61Yw%mOTpF#FN@EH6pt$-`0=R+| zxCYn?(sC8CC6nxTG~$Z<55HUs`d;AZ)G{!bJaZ(RI=HJI)1L!>PCf1&D8IhoCrADo z8>~F7#~Sj{wj8gFBfA#`&PLSCc{N{sIP&UC&+@V>7_?E1>!bJ_S2~A>55rX>&mrDD zK91$}c~qhfdXq(3uq$;$iBGD8+`UKM+3Fb` z+(?6(MNLmntLODejL|__?iTm1x*!b&6SA8rDXg5F z;bCEkiM2hbtIB78D77^dt#;foRduagmggQoVltI%<_$Mof$WI4$siviN~9 zpK%#19sza#uq9IW)#eT@6QaFc(0EZSLt9nJ0_AagHrZ3otOr*yFi_irMw@#FA4}Q1rlQh7CQ#(i6tZ&u=5;>1)~#xIB#R-_M-DEon4X@V6aJ||GcfAF zMq+--(9S9?jL$qh<65{yp*U^^NseTOqI^#!nD-@Xb-$j6ATmxj$5Jn5rzoY0)S8O$ z@Q9~qqO2OYp5IX>#@v@SHz6oZexBQ^GZjp*w6w&$BE7zy4`9?r(Z#NHeg(BG@g?YY zPlD$(cdKKdnJjx|sJr>dvkvQu>S}mTjv5uOn7g2(RKUU~Ru>TyM&vdKoG}^Wl%MZ< zG)xivV7LVthrmy4p|iUI4-%`Cc-Zv|{`P{{OForyjP zX3BE@!of2>!6ggZZ(7AZw$DsjaT7azyBy5Tyh-%I%dItA(;M0*%KcF(-C3_=V%AwX zIHI;zXOa{tZZtGB%%tF2;u2Epd@nmVU)@A-5|v$=45f_6J5y{54a}J8eU!lzOIb-f z8gY+QIf>Q>gJuzzs~bRradC0JghEl#dZhx{r}a3psi{~0{0EpaFx9Pj&g*_V!u?HI z_U#RyR{wtMb#{LKrKh2x$e~D(*vnC~nNXpGTXCIJ7_X9g@e@xhdE>)<$L7shuvqM` z!sjl;sXq^5*mRVotarJPuYb%Kx$R9F^MNXn2PxZuC_*`YwBIq1%XUPpVePeOG%{#O z!e-F0P*DIl)PMG(=;kAIX(@iFiG;%z6v7myu2z;$ayUy-C|OkJ7y-@^ z`?A-8Ew9i>_{K}!&4jntm9k=yP;w+bK1+dtduO89#!NwR5JuB>cZK*sT8X|KkIR|8 zA}7ZN-Ol5VvMgod-fSV}6c-m4xtY`3TR>s^UPajTDggXw0*oD-Vi$8mriGQ0t?;*``;Aa*i#>U2$*4Dfr%6SrQWt5S(`~!%V zt`B5`NeM|!_qs}on`F`3p@Ukri%Ur8RkF=sY~Es(T>5J@V0px?54nwIHEvQh$U^Lxm(E$x{d6Oau^#0><$ z@>c#(V}K8^E=7=shdfuJ#3dRu+Z+MRSu^=m3;)5eDZAZ_=FX*ak@#X4MJ7NiA}olN z{i3Y8A7?!9uSJ8diZrf0D^OZHspo8I$ zf}3(PkT^nNf?MK`&4aj9AaCkm5=sK$MMlTYO=u?GQVb}r?)CV4==OGYZT{>lDUC$o z7!6TUC5Sjm%VW^dsIUk2sf>+{L2)0ZR+z_6(8^Z7>YGhYP7VVw+QS`+NLpH#r@gn{ zX)Vq?)_oKbvXargRXsU5x%pm=OeJZ7+kH^R3l}ahFo^jqjc$GlB`ak5&&?W@S>KG7 zr`68YO%AgxWrbUc#c;}>3s>PuO-;?#6NFDp+^eXp%rJs4TC-R`8cqcbg6IhhoRJ?7 z2Q&ii)_OV(a4nUWx?y>l{(^uzV6EPdJBaTz}@ujgr3g+u&2@+#$R~`dK`ek+N4*9Yvh^Z{3TE1leiAabZPrRS>iy_a5 zx09mszHepf>T+?Tm@?RFw~2c?ysKO3%V%6~&3fiy5-QzmO;Od!NAKC%h^M@ta+esR z1!-{Bv%5KHR>LC3RD>J4ZpTdp6u4p2O8+Ks3%1o6WF$Rw6KRDigAG+V1#|__YQw;= zhlY#-zg*ys2IHVamX?;vdM_C5#8U7bzL@Z=_BNIKxh8+}_<)DTD{sD|$3zI3vs;i? z3<1NC<>6^Zc;F481WKEO1u@NS_H|O*WBOouI_@RLry+fM!sh_ZP*7TlYmTD2MFXK2 z$|_{gz*|?Z%t=`q*9tm$4Fbtk102^Bwo*T(<#VmH(BUSB!Vr6YAo@f^OFm~a!S3Rt z>qk^WB-D7~!T@(`Zj=7i2oI>)_1-Q0AS*BsmnMySs5COe6TRNX^7=0!)0EPcN@isp3f%5ji}LDLMH1^;Ud;37S#VzbBIV zA(aM?R8xXXJ$pK{tE**1nl>?;pYxQ?r)csmH4#_wqLdY*ooN?yuEoVgi7~nKI9gg- z?a_fPKnEJ}+!SnAPj4>=i@ERp(O@E{+gDwSQ7^;l5S}v(48X}^A3b{Xz|k>EdGqmj zEY(74T&SykPDgar^09^4S0DY5t_iH1m^dBL4yq|Y*D|UyA#XBn=QA-fG8*W72T7*w z&xC5^^-;&5sHjLyI|;YoU@n7HR9@ZA7dRK$)7QrcDiLzb<2sEt90`qUZ}8(Rb)WiR zREoLys{m8>%b%E=Nh2=dz_0XAhRiLFH!IU|&PC$!rlZ~?i@T`ME>i^`L9eTc0j|Sh z(IBWq$d|v6DL*(iEH@~ar~8_UC(EG}6UTA#2EHdYn3v1{>r22m@ssqFBmja@$GL_W z;FdqJu|1>CX)CqpGH(!Q+L;nkfjko1o-|{DVU5?h1%LoVf>oNT?-#%M@X;Tj{%?-`k#rJXK zK1asn%PU)^a29#MnBe?Y7KDQF-JO&^2OtiLzjte z2+pjCaq^;r84H{QZf< zn8=k@kSiKy6lK&vVYgXAA&BxM*oUd`FhobE_~HUwV$xj5*c4}mi6Uxg9-qHM^U=&q z12gdsZM4NeuD?`_MOWi|tU3v>1EoLP;# z^;)p$veqt`5KM2^H(31b!i5|$am#)<$`bGbYB9{*Ph-b-L=_S;>mfHY4r^HXusH)I z|2!JF8h}}JY5qy1_RF)duub3-Og`wX6yGT!3x*OXsb6Y|)%PcmPNqMmFwT0)oej5^ zl$1<2;v}FVi=!DB;%-T)fZFC&U;gR8S8 zzNTUrsFEedc+!~xF{P$jR&MUtV<*q42qr{yiVz7@{8k{Xp+QP>TU%dmAK&T9!}ev7 z(^8z1JU&Vw6+rrHwHegW)YNoPo+$%n1RY{ym%tNBpckrK#<>`f&E2LE;o-k~Kt=O} znrKhAlz?OlB2Euq1B1QB4_VcBCO6l~t8&PGVoWmMUI7d|zrZ}ug0cwGD^4%W*WNc5-bF3COa8~{3ZuVT70)p(*^OAk2hV+QUJwZ z%-Zy=02)K3vaDfrRFsO6G6Qhn@mGk@r%yrd{z2(lw4@|2c1jfL2QF)`^Kyww5VBx9 zefo6i{nl+jwv}T5;sEG&!$#v`63;<%Zd*WC_;Inj>>UbcF3A`O?zRE52Xb^0e7MqK zpB)wy7}c+r)qKrP^2?xo^9azlSGS#*V@=9@?*~$d*gMYkb6zFUh2}o~B}rg*OMUU# z>aY8NnA9gG=l_vAqUAa8@l4{Ehf`GS2Gx6nO=n_%gDAuv(_20GiemnGc-T0nvXapD!RcBMZ+wT*+k5XW&G*h$n3(*+*|?HW zlJ2e=3o3kpgxnLVkbV$c__){|c!@$VU@MqZ2lUz6QQwal@-oB2!#pX0lRqlEdTa2W zrADBq4|Mw#_khOh+xla0`jCzrYHA>`mPF{Nq!HM9Xp6+%ZqwY9n;R5_i-X2c*+lk} zlRV7GV_`tY3I~WlHu{e5JRpPv162j0z5tvbI5$03}a0apLoEP!|;y-do5ZPe;Ho024D!r`4v$2te&JCFWp3 zs-XcZNS3hE*7B!$Aq^&hCr(`@Ab_|lXAF3dPutQ{xbAziv9U#jg;iC3aM7ZDj+;?d zJ~NXs({0$&;b%shOahdh1LQzJa9o$9E9Nv1V!G2JuZweh53PmWzK-!-K73 zKn%lRhohsTsbx0Mf=W7KLL^K8Q)~^5Rk5?P)0#G^alOwW=P7XF$uC;dG!tv5>FE)h zn>DUHkZT#T6soEU`TRRj^DMj5bNlG{Z>ThE!bKwzM9ml|M5v4WVr^3u0f)gvT6puM zvm)sQZm0l9zX4FAHI!bh)JS2G^Qc`eDE+?9%X0u^1eMxn>uziD^D|j{)CFimTGQXX z@JA}FYFd}0j2e9Ld&-X6zOrKgY7FYLtgz`1oH9(x{Yw1DT!2pm>=5$mutTMeaIBh| z8aCc1Q2Lzk*C?Tq&FGsW+M}4QEuaPE0OjR@i%TRZp!(*yWUWAjtGo}^B#?OVKOfx`9+6nO;l@hnx8Jo68tWQx836HgX0 z>-{=-A{EK~R&!n6mCn@9IE;tos2#V|?n^fssFbX$OKbyl9ykji^i-aEoNldc4+BJl zH+;}Lzj6pQ@5E}rL zzfC|Oc95Cz7v#*wLbXfjPk%#AZJzeo8Tl?GWyb6LJzFVB-U}Js>6^M9f(c-7`h#55 zLKKu&&ENBaC=T0Hz2}DN1^)1>uyM`AtJQSz7vEF8are;8|Dq}L$1e~_deC=FyQ(Ag zR7fhL?so^D*=t{8IQZqwRggdbI9^QuOE=w4VB(hd7N*u{TY*X-Y?vb9K;iBiC+jI*;3Qea%yY+az{WYJ4&K6reWs5|B0G)OqdQIKZ6}_Ml3RfLj8o7RcOyLE<0S z+fxf=b-wxf%^lHZ`ZRzsAkJ{Dd*gjm2$<}XUw)#B=<^SNz(ws`V$yo z`SK+dCIi0`Dpnb6zj;nxT z^2o`{&o>!^32Jc!#F#3tf)9b(?>da;P5?m{xaq2*;_2;u1CaiTh2wjDvVW;7paKMW z6%}ESKR(PqXg;f(4$9l>p>(Pq9v&alWJ-d^K*Jv`f%YT@WR%Ermm`3j*jLNX$Cq7F zB1)w+fZCVLj_y71N=6J=r9i}RMgl2NO)w#~!s+(4Qebc$omdk&8VE%5K9EUhj~}<{ zcy>|BWb!Te2*{=t6%_!20{{-~J|@JUZO?8WI|ke|nn zD=oj=+(OdpNlrJcCc=*^xjL9_NL;yc2IVLXgk@lo>}^W$Q z=2ic-2T`%H2n;+@$5c(8L6-weHYjj+p>N{{;LVR=HJAe5x%@mKwp9#^1?xC@y?U-G ztEs68Zq+@BIv({iCsoNnumJ2LS7L z@7`S+58WSa$^%ebx-CzRC)m+MfVt%7+Oz>e2!77c!n{Y@ptw%J8yDQLOU@8g zP9vQ#i*j47o#jyF^r|fjp!1aa;F`+j4NHRkMgwqFW%Cz!q@5d-ychi)hy7ERC_2@S zem?wk#oBIO z1yTI^<;$OdG87dZt;nwH=m z1*nOE*aF9bA7DX5TSEt&1;>>>;G@(f!ZKZfnqpQEvCM!o$ zLE`|wc+FTrGjF=_G6o4izCiC!o$G)cgRU?TUDbJQ>i`~vNN9ud1W$7P=?~!^RT+GtaQklJs(=bz^L2>HZ z&^;JywXztKJkg`n;YSt*hC+F9x4U+H&Zekyi|12r{?RN%woji!cVTfcy4a*TQNP}K ztnTI!I5D8it?vSvU9;r_$E=c@z)K~*G4w0;m!iLD*a zfjqGGEKuK+DweSRd00+ncw|Iq4#3a;VPA|1!MM#2mc(kMNo&;>*VoH~3QcLY^tgYS z+v4>g{)}>dlQ0MFxyS&Rsicj%8@7GkY7mC_u;kYIlu+t4vMw%ISZGl>mrX4c%jOHu z-+8EGQq>?2B;6op!nX`vY2XC}wnCwSqPr4PRm7!wm);GUT1!X2SIVhP0XmY3JB0Y| zw4g32w>y1a_~klS@{Bj~k6r?!7s$OZ3KvySJllx+r6P*%Mr&MFMuqfMIaWo~FM;^k zxS_JLVy?wKJfhwvWsu}WNotq2hYM@FO3zpPl1ao!18^5{VSwWHA;O15C!;)m(SM%*o;4;+9i| zaxYl#e8*t%{NkZyiU)EjN8 zl0erMH*CwB_n&8}NH_34dvJO3&t4iwnzkCIWxe~_YY5LebD#~fHd=O8;!45r2&3kr zT63pww&;5S>tr&op1z20j}(m>$zqMjAl3S=sY|w5-g`E!mtSC--?>10K+F4V;MR^VsGRcj+H3P)aY<(s!m}&QMDM@AVl>&xP6dmFCPF zN<%CM-H%H-@V5{NGx!lW8jT*R^K!UbIX_UG#-!WO%+D^P*vqYm`du{QY|7AoDt!8a zPNitdox5zT=dE}!y5~9n)!`#ChIs2w=)|G}suRqNxaHU8$gBKt56t_wl^q`%lAk86;qavqbLssj5jZjP5MsUv6< zQ4!N1c3@Rf2W{Vb3OXBg>9;V^FHf0^dm8O{`97pqE5=8$8&qU!JLpY-I$8JEAi0c) zz@||<3CnlCbyF*C=8OY}cg-!3ec?;!H$-GA1_-iw{H!79Y%y{kH)>!`;w+hqI%%ve zB!4pnWW|Q<{v<<5+x~(`%Z(*OC#)H)d&2b%8(|Sk2mO(~(|`Hc=JaYRc1VjIJD?#F zOU7fKOJziNY;H0OS(3`8{VVqqB)CWOah=E=-?7xBHg?gbE8n~o^?u5u)caw8=|D<2 zyJ3}T0N-6?;z1iB5C1+?@8j|i2>23ZtNdAk;@%5G3~4ehnQdfww4s@@ur~rwZ9xZWH@@RviVtVp%k zR~H8T^+$>KEDpMV!}c2*b$c=&X9CpP3WS+WKg^`s`SvwDIn!};O&z*seX?2LmbImt zi?sKeEf$t{15;I*fq(j1>rVIJ;2>B~Xj(AuoAvy%+IKfAA}~06VcWhvJreQhpK?_Q z>h*thuz84ZwF1E_#>CmrLRIm=f3DQ)aq2G2%|%E#3;_ANiMW)uM!E)LHQ}0#&BdV^ zwdkRwSF5%b9$KTHJQg!BX&f^}}FLwOJS}}At zbgIr+1p4z<6*(5F1svRPExO+({C9xKbx{X>fY^r09b-bw|21Wu)#VU<{ts#Ftgfk| z=$)i}1O^XnS@?T__e6#d`aGD440jVKl=2E^=<^EuDAQ4O6@;DP2-`v1S6V@5+nIiD zV{vbd82E~oILm0$J(78|9i%Irygx-HEg&Ne+jE6h$V^4%=-L+-nX5|{qkNo&O2{#W zUhT&&=Ottuz%RsBckFhEi&Dwen6U~m=f*E9U%5rK@AjdRqhc*ec?LusV1_0KeQ1$< zGcW#Ru-NZr10Hh{yUzdA(he%ZrT8q`REfnQsS06}ky7JkV^U%FjNtf$H(VxWty~8gnprcmcQc_!#|~0Irm~icq9Ef{Gj{Rdx_kOoC21${j4D7# zhXBcah2Z+y(OyYU$nfk2c>oslMs%sxz32H)@M!iD>gt(LJpw4{yT#g@B3SSNO#Znw zqsHwiH(cWgwJO^`k{5wbd3$-mQ>7eoN4>{`Hng^be>9A`42IU{gA30MZ4U1BD=(?# zbGEM&;W8g&UL9RJ|Hs{sZgu_ROhWi4d1~1*CSi#^?;gmml*bS7sU6P&TvSv^@vMnK zRe#R6Ec~Kie0{aj7>j!}tmRtXH4wjje{}XgB@zEMjEPyIsCI!4Qfll*9g(*!MwuPky03SK^KHr52g2 zK@NoTFl)8ByWd(YOJ32eqh>pz#E4-&Nouh0@`1tbv3>SR`F(z%ffwzIf8s`Dyk1(a z%o5AhaYH04vQlFNTh^^PT2pp;Sfazf>YL|lK5j!d25599iDt!RC~tj7ra!y22bwhi25Q}tIKMtT48(i|CfA4RFN)y0cZGQv)& z?m%8?dOx*dvyrNucOfgQdt2|zDkIn?B+)MRxhX3w%%-yrX!UxM2bDs|3IIL@XVNyI z6y(NB)m}b62!J8{itE>Oq(R8wUU{rrpQP4GZpehl+*6mFM}319h6zR}MdzWnNY}E;b zlC`mb?AghZEKl@;11vl(6&4vf=ml4(4)_+~61V%0z;6Xk&c=Q1I+tzZd4(-zXW><4 zN6)*j9p^BSIR`UrFFu;)|4w7{)Khv=7nH<|C)l#Kni+t`=8Dg&e;5w z#NF@8`GyujUJI!5ylgR+idUF*K)k!1ruxV61>H3-rYg$5 z!D-8>0+SQVT{BXM(lqJz;v`cp5*B{RL5@8hj~6m%+qUT<*zfKQ+6CZbS}(KQtTwyYP1 zN-s#epcO6<0e6r!BW~bgSCPufXT#enV)kwek>~(K<#+cd2f+UiiR3SW+y5l{yq;@p z{ZGjUW;B0JC-BGNnhRgM+GEg;qlC}uqg6ngd0X-D1Ad>5p)J53mcU@S`8#n)9qNu; zR)nklA9_L1=3PMzhxt*kM!74;!ynNc?}Wvcf3Z6tv&qI|MilmCas&T^-N*xBRY;Yd?n%l#_C~jC*Z70H95~6X#S*TuVM>qj2^8fR8-0o*t z2ind(d#@h^=)OdhPQ{TQY%eMHtSt}f82^*{)|vZh}iP-d2Zz>nJn%0&cRUZj7gGR`T?1QwB;)N zx;Z!D`+@Gj2i~&r9g9%A<9%=944&uMemL3wh9SaMo315$yU0 z8;nb3wK4xQo98K@SZ9*54b zYlcH)ICO?xN1*;VbcRD`ICO^p?qP7@cmJI~_5vKv=70CuJeRh zc4t}$d$)IV%vS~@>Kx8R!ey^sMNRB%55BG5c$b{}aD4~tg!kQA@m=3pTB^r_h1c>K zBoc{u_pThZYNfH%TIYaHYu1n>m*A*Z{AuLDC%U} zB@HCykiu(w`*T|;+l$rX2o{ULs{!PkSS1d6ZYAS+pQ8F{bR!ZW+PqU&x+PQlR4taw z3RbAgXK>>bHwEA2)`cyXrY-+K3dyH@CKl}OM{q;M1A-kpf{c8+kjfNECE`Ng|586% z{zI$%dqVC0^zKeIl!KEqI!QFv4%zHau+Jf$w~AsBHIK^4X|_dXWj3L|f<5LnO5gpl zMsL_gA}Yrmrw>k6gyPUM>|;n)t3X13HFmO9t$aq*QU?Mtr9Y|)aQ2gZC0mIFg>vVp zL1Dj=XM3rPpAFQ95XX1bdPs2iR$I4Np-D_JdsjkVc6JaF1?n+JxJxVnJLEuV89 ztr1(_*ckNx4I`=LP_pNSA@l8whg$bxHr#W$L)hQ7!yz@=HNznXpqk;(84jJ{KcH;? z9{D(2N~Aj0A;?gza0oI~D;zq*t`!cQ;m{clGtMCFghCE}nmbKj%(q9o0FjwL`=3T|M!X_QU?G`DV=J>odB|LI-#wm&mR*+<`A0y)F~r>|+j9EeRo82mF^3}gJ$%OQu2>|6NIT>FOjuk|j* z;~DJWFA9*Tewk^*GU&CWp;_>Yg-&kqZSVX09v9}_4 zaj&J&!^g)kzT*pO9(>!L$Nnp~&>}=Y#XD>9e1gAO&^XQ?ywnq7n1dr4mkcU13vh98 zd?t~Cyv#NE3#0ZUur5czr6ew40L@s_o2OX z+SUE9*jh%^HZ~Tc91XPkKEEiiSIQdf>WZ%R0R!F%fz8iNPv?Ta8nN0Jz`@NuXj%HE z$|RXCYcS66!l2Ab*<#;>`_att_17j|}bnjyjKQOg)JQ`66rllM=Dwq~KR zcn)tjH-?P;H`BeRR#wV@efkuKC-9M5f#yyl1O5H|A~RqhzCEy#l0v5u=-PUlS}cWw zxH6@2Pke7uhB8VlnhgfMq`((SDg~TiO3TfUkB_gbuP=mKmKL4|9WyVQa=+U-Ri>?@ zQ}{3y+Axm2>ey%w#-wF^WA7Q8W9K4Oiwz2KOFgMgI3ieDU+|QLgd|}W7K+f#(B^ru z5SFjti|j6Gb41_hY2@bOngd_&C&d*zzc^Ce)3`VI3B$U&x&pBHE~lti+}PMi*>Ya4 zE(8q#1I=SF*#q-l8Ch8fY+FGA_!N9GVZaGy@FWa!uMZ)w5cS1fws*iAS z2tKecM=3N$kij>fg6~iao?WGV{BuTnI@pR(6w9qV;Hv<>0(iR+tSCcg_rJ$);;M9- z))*Q+;NJ)XMl44yxIl%d1r3={2P*{6A6cvdSAfCJ)xp3s=XQ1)XdjPntZae#?whRu zhMw=s)9IJgibi1NWM$v+jUAte{UjSZ#Gyp9PR}}+?Ip0a0g;&7GuCRV~l`R6p2af3F>svElT0q8e z40xGUI?Z$Jub;d0NNNEGVLL@D#TIQZmoZ>1zBNgp98s#7B;^H$7*fr3Q&n39_RGEB F{s+WObMgQH literal 29367 zcmeIbcUV*D);Ao>$czP!M@K~vW=0e%h=6o(Y=~6p9TcVa4grGWQAR)*L5h?_ML@br z?l7ngP+)(RBMO-ZE{hUzkteY;vR=@wz^zU(EJfDpC51i zi9-E?Qn>WHrf1v~0Ug)t<}1j=H#FIvEADD!r?v^bmWBWNMd92I#V~?x z7@;eEiE-z}l?%~bQ>SA|l(`RwyOzr2h-9?6yT@4~*+v$3AwxTDWOne%s}D9GmGYmAZR3;&FZA#Z5`hg>gwqNiF5_6$NRU zCsH)o%TZ@7ntF3`emt=mg{ts$WbQgzT~Tq~8;usmFjpVg|FHN|X=$lKSV%|+e3O(D zz}ttlkRE#RzUwPIXU{0;EVix!M0>omeT>J z>yrBguZ2y0S{kYt42hTUbo}Meq3NX&owC*Abhr2ZgUEc|-e+w(({u9jLZ(YM9et>u z5sAfOA74vsh!M4U-m?jX@;_d`Bo?i^Iq;0cPZuf{|Dm>ZV!(~lbbg#n#Fe7y<}9WF;=7 zCgs<<2TEt|3|+xsFtG1z$ANcygQ_0bv%$e6?IjUS2Y)*DZkX@KO+y#Y?|vD8zwKX} zqMwnJoXmgv^l2*x2i^`}q7z9c`*!_ZuSOd`(bK!O{ldX5{#UvFN>`lIvQ^>mAWqJ< z=SFQpSy|amc6M{-s+UU0yPwiCGEVQVQf zoQZ}HUGE_u^6(S&^tN3E6>g+^Uj&$(#p!@iaP?br{E-Z0-2bgWj61 zm;J`YLMKTThXtD{qI1B~SCb#bVOA6_Uc9(e!6qAxVUnc6_@Yew^!jLdM8!fwdrLWu zfz_UO_jYh?H>XjliRI{Z#n;F#OC=pj6w^o23^~k*Ams?k5O}vrl%2hJMm&4f3TKn4GZqg+MzMv^^%mEp?k`Fv>{{)TtT)) zv%Mutb+MOJ{@2N@l0k)fNe>UXu;OxRd=c&S>bxTRj$?UwD$R;nx>y4ijd#9|<$n8G zL>-8;?$21Cu6pfJYF7E^pFQ@4BZ8DrRzcZ}FTt_WVE!)e>eHF!{pE|7mnL*ri6M25 zI^r7gSk%f}U?F zlbNh0kD1zCVkKS;%bc~*uUC!11(?%j2(c0_qwS>_M1h=YyqVx;Z#z1k*>AEMwv$6g z;@bjveWrulQ)*Pc`(#Roea&Y{C`=MVn zhT)uj;G9{Z)fd3a^v#8MBaosTj;kjluI=)@hFI^SYK=29LqB8m zSpZL6fb2qxZC{B*GL9*%5GJ>hO&?ik!yIMfU>}aL(I%}@nz=?Y?;K9iPAi2_A+v)fHX}F58R3@S1&_0hZFl%N!uDNZj3{ znW0_JptI!5mOC&Cx%$3!MK@nZuaH@xaTumo_|1K~{zG~xnktE{ixMA<2n4HmS;kAz zpnazs3Q5eV-T8JUL-nehYD!__Z3e9%z}9}##DPRp|2<&jO&>q1S?9*ExFKYozZ){L zYG7hwVqY|_3Xz%eI+SslHr*4&_e99-N*`lJ?!y)i>FCQr`yM*iRJ82m;DCcq0*zrY z8OQf-e+*)4K3ci3uXp{W{GBzWuq=odt4lb{FLJ8`ktNf1}Y-r*PFlG%QY``5{w;zbb9@3L`>CdKx}@~-x?>LChcV_3{p9EUmW5bSpT zb+*fO_o=aKDe6LZf16#X8>wmQY;0`YLqMP>x6T!Brk$s!xCen6vHDKX5c@>f!W=wJ z#{}m7ar36QCqV+2X?SxPIi?V+iGX@|#4d5rd<$&LN}rbWfP zwM+)1D`&jS)!qGE$tve;fqsU&WfJ*_V&t#~hVJos&`&k8SeIsB`$z$!n7q8shFCF& z=LSCPFPTb4NP(48?lQxM0pD$2niS9}w`y2A>Hi4KU0P z0e&iXUgLXuqM9+x&N%Ohl&)MG9d;h>5BGP$m=?19Mn*;wlj+&>EuntLK)iazw6>)g z4|07oYxVLIaORit*=rJI&@^uS&ZW~1UM_tLNnEX+oiP^R7z&q0IV|v*Gd}a-He2`J z;j4|4aCu|Vj8%#~ce485!^VTLiHJtb2kIC;dHc57;xy{Y4C3+tcyk^&(7-0=>0;gx{Rp!dK=qooF$sV6 z>{*;!XRFUbLO!3IES}IOTX`z^%mu)iUd?ExIM+EJA+j%7d8tmPEDRP!FCnoSu`+0v znnNB*`iE3BG@Ovr(|xA)0no#IS2I(YiDxaBp3-x^*0(y!<=kKKHr>$cw)@m4iI&rw zl{iDQ`db$RU&aURzg^Rm8Q0?19lekX)*9DdD4ytCC;^@m@af_1mH@fc79S=hpU0^u zA(X~#7F%)addkkCPlz)=e5RG+P<2!2vq(8GiwRy;CylXHLHiGRI~b>RAZ|CG;EpzC zE!(J{DnjiX$}kkL7^(X?VDo!rWo56ClbGXhvJh*qW3>K%y>S|nvshk;?Dd|sXl-o` zGb(l;0kCk6xL8dn1ZY8Nu)uoj`le`Jvq|F^zL)@RZhppt^?TXuJ5vhrx{RYWL6s{#EA<8@A zZ1soK{XLaCOcwu;W-T?>|MA0)u)VF|+&xMs59yV7Iw3AbFWX$%HR#L{%@Y^9N|u;A z0h;!ecpZii!1mLtUu#v3Ei!LgS}xYGOazLz?K-o48{0`MyZFA@ zf~KabLULK7+Z5*3$;-CHGGP)H?GC=e>XKj?f^&KNJSYETXXiG7vunWqh^UYVsE|Ty zx1jmuk-B zb0;O4w^{2465>8eoxBJnB-4$0w z#KcHRvCLV8d=r<(iIUY39SAzVz^E{ed|*{F`}`IS12B?cPCF#B$unLVr)a(jKGMNCf(`dfw>1hOF9uAcbv(EKyVA~p^is-Bd{qXpd zVcdmhXIiFV%!EFbg6m?xn=uF5pB+{f8P zCX?wiR>|93;^jgK+h0EW$}SNn;5W!;rGw9Gi0gWkmzQTY$s=yxZk;Q=Y^e%i8DuZ= zWuoD=i9WuBQ5I-4AVCTf&bkb$77vH*zg?S>JRC|~xl^(bI8r$K2W8?Q{h@=O6w7rb zUXL21bLgDQ;GXTd`WZCMyB_4ec<^~iN$TJWk4N#c+S=P)ZRy*h_kuG7-;koYO(R7U zvdza3wr_!S_Ye-k2IKw#=l4M9%$dLX`uZAha+v1^oBS?-dW5}5NC3Eb=lJwMKt74H zS={P*59+8yRy}Hu4IrzCYa?oT7M7L>DtID;?kwPDb(S*%AU)+j-DcpdP8tLzs}9g- zIA4#)6c8jvU1h!&>^#!Zpvt6jMl0kbCi1(E9j*QN@#77TJax{7*;gYL{hm6#SEo3$$;v;FEEld*!JXh1!XSR_MYp`G^7$OCQ|da8Eph3=^&@RK9X z5*Zm8R(5vrV|ihGZ0y`u!9w9!Q#-5y&y{j~wgZ%@;oj}{L_|dsbx(ziN$NkNiRk3P z9Y|urSfM8u7D@o)q*`bQI7K5SCPw|(-YY|XFp<(rz&)C29l&di_P@Og$mqkucpJja z>MCd9v=nT z1Q7WJB(0~GfrX3C!FsB;_w`{RMLLdFS{ugl66o3T@-p_Ef#-Ywo4NXph$X{07rKx_ zR&0NTyTUJnvr<)6g?%9K!JHflsTO3okN9fA6M%|~9IaV9O8=HK($aB2ck$Jhcu_(; z4^1m`232RceyblU+I{b0H)o1ej8=)E%iy>4XwDobu+ZHT}Ud5k|1*Kw`IO7Z@}(=V6$vD7f;tt119Sl z5L6KUB~GlY>5Bhc`kf(Z|(?qTs9a#-9kp#gfU?>)`!DRK6b|aHCEsbM)Ctq^o7-C{k*`{y* zD4L`Ukz5>KF|nx~6E|?HXh}eQ%8H7L1S*<7qijM11jFU4#KpjR-W<4hWpm*}o`jZ~ zFP5ob!a+vaXQe)hgH`6_uKD;t}7 zNMa!Wk3%#Q1Vw7Ag*EK5bZ}?}4Oh?5=HfAcL;{cZu(U>hQM(gBdcAQVmO)J0i!kMg zGUvjPJ>3MU2%zWBXxxkg{5|Ap>M0^eOV_5XxCDs$8h}|~4|q9%rp!}uRfREY;=zUN z{$cOBGdqDEl+<^EoE-wp9s&@z6;6l?yL%V1VJ-lRPpWqYD8;rr=QwWhJwGmQ)Kh{z-Go(Th@Pgp;RONNDy^)EdCW<^xO!OS8)F?qhC?$B{3M} zJcDO4ZJ0xD`5b9-aMxP(0c5wW0g0fF+)Hrh=+CaO_BJo?Xx9^`jw>XqNv77v}CMpBq9Aj@AlaiPv2W>d#0bm%nWBklFVI&Fc))C(jSG5h0NfP2HU&|5m-Gn-ns7hu6qa9j=10R zja^S(^_D>3QuOlejf`@244tZOY^r)F#W5^a-W49tcAq1yID7K^%#`F`s&bO!=u8_~{;Pm)cFLP05Z9gzug(a60FmTzz;3B04^LiZ08LzVF zJGEU1V(7CB6NkoyEEeNB9o_$fV6%e?Myt&4vW2<94CmLSqCyl8vmZM*n8n*0mAR$T zYLXb6B#&`z@4m_Eo02{gSMKF#k|~v7CfyAd@a4MFRiJd;)1$e+Ab5QpsG|W++mEpa z*B|(L7s}N6KopcC9qkOO*MEizuPoTQxA_S{S^%;6wadTunMmuM{9b3p&I|*O_jXWo z3h?!9N_U?5_q`#iq^ENXCz`cP4h*jH;X*^%ayoeNx5xP*&dh-Tp#nGTZi+S$AbqOq#vT|Fa$n zgjgu9e+mr5mQa+NcdIt+!3+qrzhL3xMUIi-a8;FOY6sfBIu_}!JUas=oo|q9k&wwC zWW0?ClVOybrjymwnyAQ8Y)3Zj2>ZA`yki_E#s8*`jt%_TX z3&9T+IMt*r+$rDMLiH7^5_Z@6)A_duMQ-xFoo#I{pYWuH6Qq!Mwu9X)iR`+XcHXZG zMxF7lKK(TM@Ydb9I??1@i^fP_&QzCj;n<+U(HxrDgk6dB>MZU4ME!{Ri3o4r2S8mF z0zl^c-QwF3q@Q|@Cq|ir7ufYsA~EA}ESxP-*TjSofD;o-&Ut9l>3j(i6v`^er2S)b zqGEHyXd@kORPH{_?_7Iif9TUS4~`6ZKqmZL2mOsjjycOAv#tk+zV5v(RX+WRR7Nzt zbTKDgJjJbdWkUkk?iWbzm=-A`#iFKLjE<7&qchmIw%x+fd=eJgE&|a#ag)ts9~wpn zFXeBT+v;P5Lr@TU(pc5&*_6KfVd-?9B>qp?hDI~PwGfUhMFTg^w(es5uZxYFtMx)^ z4>(yvXBu2yjcquiMXPXur=L1HA|S+e zXrZfq*5Tf#25ABm(gaCEysS%k4n!(m29SEw@Fue48tDW~%=b>!71 z^5|_rv>tOTlz9dsn^G9iNn&ISi_L{WEsvm=(UZ~*3kU!FwMr{3vnffL-a#0ui#YiP zNK`Qg&F*fUE*M;*q6y`Ai9Hv+KSuny?d6`Eajl5BF9)*9g@pb4U6+z9+x1O+z!ZN-8%hwM&z$E%So5c zJ5>kg0Y!A1+*eu~y5-OE<+SoJkCGuHg)oG74!H0DO`8H{&!oG%`)JOFp+?t%9Oohp z>}!kMCPNA`l9NfVvPht<;VKgiIMx!Iu(TmU2u2FX2n(C%@GBr+0GY?hlR3&DvrJVa zQ-mp`X5OeTm=#$M|8oT{wT9h){HdAT{N{XTe>?wHg;fWhEotSaIeJy$bq8jM}Yh&nv9LDhm`#7kHza&E-r*9 zbYhfo%xQx>5$TyX^#YA(B3i?~VBoX_V*yv|!02Rs7_15k;BSNuec66Z zIH1NV{SEW3cqug#T}xX(=< znNEV}uDVkueoNu@L6ei9X*N-@#h|sl)$erPaxaZH8Xmb3a8#Eo;9o9Ie=szYnSCm80%ar z@M+-r>Yz1fJ_cVRX@T{+;PlZI60?D`nbs!$Bq`r&-HctVlj+wTti?SImO)-46bO4d^H?tNa96d2bj* zutQD;z{ZE$1Azj~ASv25&;w}!i8t`+Dq%>no8?&*0fZ442mAr9sCpGq@3pH!Q|R{Q zK(D}G1~riKX$&Gp_oM3TWj;6aLzae5l_HL1pe6X7=eO zP-UkV%o>x<&A+R9?#5htsuI0z| zeq?)kOLlCmQ-4xfJ3EynV$ zLTYDo5|HhCi#Mho>iKEE+7$G~fyI z@d=ooDMC*yW+@8OcxMaSyaS6yMJi+=*OS*j=(vg;L5+1sY8tT9^HqX&kV>}9`}mO`1U;ETht?BmREUL!z*EmYFVdlNvA?b_?hG@@ z@Vt;hlN@W+410R+Dny7+;qO9$jc-^OKOI0Yf3Oj9Ra`aTxIzu=3y**+h7=ii>11yD zrA0?5o#0l7lRxhbX$6BKxJQHcH+I?xvTJAqT;62D=;&UZ<1H71DL$~4O;}RUAA@bc z%GhXbAYuQZ4$zdZ38z^%LQI)AO??P5cD>Go&KY~-#drIM@38TFSR&!XtbNz34;6D$ z|JrdZDWy*2TOAnlje69)88?IhVNc&)e_uvKWgSNkqTg z&w2I)eSV~i1?WeIVb#W6(mcf zWtYrLd|>Zr5kjC=onEaAeeQ9 z=Y3&G=t3L8Ok$ZK(JAx=BNM1>96SxsI1#KTcbId?>j1;=%GuFNK0IGHXnOXaYTTb! z(4C8`17Cc*>ka9sf^}}C&GvgWtTHH|XG1TSbIWBx&sL?tG;O1J=v_%$DL@L?P|2@O z_Zx2&Mq1cDqjMPK!;vUMLk|YNoJlU6NX3WzA18)3qn*2UA#;vGQlN{_zL}Ys7k{m~ z@GBA}I4$BHrDgdUL0t9hPJFr^nEO5Xo{Ha>r574d1~@Rouk`jtot6@V5M!cx%i!zQ zP-jL1_Yf*H^Sr64w!Mq05|jqgt+~O=P#<0Kk)6FmS9bmO-Ub*EX0B_<0d(+gDd$)U$q=;B3 z%``*{nSE{yUmMHc>DQ;?fiW?GNRI@F+=beaC1pJg6nv~plZ2GA^3m7pc5OPb8%_-B zIv`yg3s8%Z{4*7Yqho1cDG+(GZ1%3hDJ4 zXrwoEgXGg^>9%Tj=hpzx1oaM(G*l8&p_g`rc4*f_fDkE~A>MUP-2izlQ zfBTz*-mm8KF7W4*Z@j4!hwTl3;5lde$#HBFDR&`8)|RyL29muL?NI5Uo8V;;n?R)e zJji(V#gn}{8AXz@=Lk9;p*DEG-=Ykioe0#2-T4kCSk`LL!Gn+?f5{VdG7TS5C&k*Y zFBME?qRpT~JYyGi{S+&PUEXcmD)HqXFj)8Fmg`cBu0xR3RX9=GJ|7H|K`eKAKMht`0m9@UgjAtF?*lZY0v|?B*r<>pD86I zBhU7jP`?Gi-*D?hPQ?TJx*zs71D=5_9v-P!pHamUqDV9!bQUp%nj_cmM+Nsj-g&HZ z=-YhEqIV;;@=qE5*REru;y?aIqti)Hdxwr%fhZ{5LkBiD_kkN5LB`RQ-|+lgtD;~d z&{hWzwzX?2rD)b6<^tY=aNUMnNa~9NgRrtb!DE(OyG%7{fNo>}+g~#JqDjEtF8_*O zcPJGt@s69S9$DJiHEQXUO2W~e0LSUu`4%xh#NB@O%b4{Yp6UAWSf|y}d_CeAKOoNA zOxJSWr(!qWZ1B9VFAF^MiXKI#~>j03O3}L1PsmH@iZ>-vU_41|)6~gqVXJh!! zUZeNAICN$*GzE&reo&23Z~}}1u*uhr*JG_+efb_bBCN22Pq&X6Z@Nj}sHEDp!!j(#Szg{k(h%;qKmgaFTBFfwDXJmdVwM@2l z)6v~-mw&zY=M&*_=WPuoS`$x|{96PR z&mVtY=q27DUCLvoJ<|xI2XG0~-rlZh1h?70_++V>+cSNTmpALMeA#su7YZ->XQ*;~ zxuhR#4fI{e#xXofmnX`JE`ftEf|eX(y!Q8y4FKVb=Uzaa)XPT~G{vu6wj(SrEiWXq z(*2keRx0!ozkgb@5nRe#{ZE`;btJWZM?mU%q<)=wX~AkGGD)bJ>e=j=e0h2 zze3K$=Bi127CuEIIWpHBn%n7H1A~Hs+?cC^FxVRb6DBd{$&-}S)RvZ(gS;$Tw_-wf zHmT7192s+FWMRRTP*(bCN)MlDWUylg!>~MQ-@chsXhy=++^!`rp4*`gADT6^a;@5~ z;Lm^DI1iltvU&m-bn_YE&>Ad%JmYm9ocedEv?Jbe|k5q+=OD`vp(`eQvk$|3&jV zZgy-71UH`!ofQN+VKS?n`N)FQ%$moFzwWT^piP%c8O@c_1+=s9X@!M_lHLotU<=*F z9;&$V4VlXp&S3Tn(WB$zGiqyV(JCt3pn5|!CZGR_Au!(GtdOQ14 zWqzN#p`@ycAE_tnFqp&d;cn~vo?Jiysj2XVmX@fToJpy1mVk+0IXteG);7M=b;DyG zc>FWxu`-C7bl)_XBc9W__=)xu z4Z5$Gu&_%rv8KA(+Go{8RFv8?LG^Y6-A+w~bXQwTi%{S+G?Sg0Iycwc`RS9c3F(Wz z0~k|%qs4Ws)Az!Axumvn&HSDWL?xhA48-NG*2wBA`J0QG1y1-ARA7vU9Yr}&9nO728 z@G@)n&GHp`Q>_bwHdgniOO?x~)>d^wiC5ab{rkbUz;quzNb)DGkNoPlpZ4C3jEtO^ z>N05uWk@m3qF3a?Ggv@tsjbj4(}y1oel=r^$8>jY?yHZ@R2%CX15I!6I$Cz!IoEyG zJ?X1J7|gz}M2laQ`JxHO!rdl!m7+azdk)j3rM}uFtD4fR+CJW9v7G1Elb7K(H<)-k zD=W3gb^JnxNjdWwZDVcDB5dH7-xL%qzUJp=VoHt4W?6r%7smYgAAQr6_vfB((nqJw z8>z@IDo;Pj$EzgAG!hy6ML3CTcO!y zdarNM^zxo#+eBjFmcspp zrn=ffUrk2HW^I_=hz+~<`nV|5k=_6K1U8WF`=7pPiWI-|+xh_i;Q!Bo8ye!iT>qzI z{yqsJB)~cU?Zw5adav-c7vOKU{#^_qO47}3Mj{0-)9$}@ z^WFR`wkR{}7gqz5r~PQl;!}&;X`EAKPYr%n|3}gep`f20Jdr(ruP>!sNo1*v%4&$K zk1zgl$>~df?fGwG`S7=#{r6uWO8i|Uh!pms!UdFq3@YwmjpsMmtZf@@2QW;Fr8kg)SAwIal ztAF?w5yfR!!blffLaeY!R;Qxs=LRYRoIE`XvcEofC*XB=gMs_&TMAX;8*1+Vt6vnB z2KB-EDsDUb_(-d$s)>H_NG)g*VGxM$=Yrz7|taQOREpvBRI*7vuz`uMkR)N#)zOVg{uVtAt{Y zA;wBV7iDF|?e%-dwqc)Q?! z+M?1Hlq2;=gvOM83kA4p=fd6zoL-xVUFkNIf7;LzMXvfTn_LsN+=bLLH&|7lQD)X7 zN++|MJE%G?NFt#L2|46-QYcfl5)sDvN_KUCr+1uR{3$*+T50ZKPuqG^EfPzpL)|Ux2{Aiv&>{|8FVn?;`mw z5<~)@ukXr$h~c|^d{>6`zJl+{@Ld_cE5mo6_}L2n2LMQo-^*^JQ2&%c{*8ct%YDBm z5TF9z0TN;d|F>e|VsiXSkCnASrTA)N*^9;g!)~(zH1i>^}WgT zixzxu3-}_4@8S2mgG8aecS?TIg6|IUztll;i70FM63O1|kcwEOkXNi@Mip$f-TmFo zh+c30rJiZzU2u_WXF#QOk2{_MtCN

    TMX!Q;5d)_?Hiik#i;OF(o$fIPE2+>`--eFZia3KK4X zn5)ny_>tUR{xj~UUrA;D*W?zqK8|xg2O;Q<&g{$s3yU|Vfm^>g!@%6J+ZPe79bSJp zTSZ!##>wSd^_>jYchtE$DF!`}_qVJCejnB*ntZURgC4?BuPv5BRyWzoaMz zRtul3uN!x8k{xj#E^Vw+yprIB%%!^PfuB0F940??X1OJH{nVMQIq_3xR!QLIC@K`{ z5Qf^?|w(TZ{rl-Rba+cy27BWEE z_q@>E-Cg!|vdO2gt?wSuR}l2|@Kqf$ zn73lk{j9w;(3H*2$tl2R23dyH#usx&IBG6|qrf}lxN zHJ_|n#yVZTVnC!A5ex!J1oTxskCBF0kRI~dxV@x69vKPn5!;ogp=Cu}*er&oII4m@sg9KEhqy4b(MyUUk`1};O=!cnG`s<*(M zXIf~cy=Oo|*7U;|nH3w@y_2^zrnN34OZi#}J01En?fHJpCj2wyb{yywK%YkLGzvmm z?-t$fPRC(q;)%Ry)AYZ6al5JiJZ8sF=x*=;xBCSs$zdnhl_Z|nE!#q+>Ar5>A?gcB zluNag2HJ5zK;9S?SHA&&QYjtLKI04w44ime+3Y~e# zIXuEjrHzf1iVwKtW#A9C?@+s$xKXIKOt=?2TXD&vqE?4pc4>^q1N}>vx*xJ_&Ci?b zV~{JJK&hZLNYu*I^MNk9xXavw%b5@pzol697SgE6%xl1=ft-aOKRSP|$bHS_6)*GF zdZ1Ed_WYD>pQV5GBmycVg{aA<-rJt6gagtSwqyU_{M(p^`SbN_Dk_Ms>SZ@*cfWr9 z%I*5v>@9ZDYIR@{ht`&E1}YOZ+_2M6zg+K@ACa&+|cs3)*u*IeG5L$ii;2@y?`qKVP9X(Z;o#sG zRr6a*r!H_#IHAz8C;#ijMCo)9WOYr#z}nOzB9#X1;LDDNduPe3vwgsi;Iy8-+5X*l zbLb)U-(brl84xtLfZmd_Ug5WJgdSy*?kurg&9Gimgdmo|gj*i2InKOhnPjvDYtOf( zL~?OwUIsZdzpf}WM%IteAhlag*EL>3mxXBa=-ek8^YJil+GlRe+gb7Ljy<#{_wN%y z?iSR#ooy}n=+=Bk!1xGLeI>jnwju$F`?0Uw1@dTed?1uIFINcF)k@$+n=gz#9jiKD zXiKsh;q&LuZjEbe9p{0*F0>oTjfgB_rlEn-ot~avE0BSno-MvHi>a}p-$#Q-b78{_ z;5weSuM6+;wTZt_wRdz>;s~fC8OdYm1g&-mphgcKU^M$O_190*(15n$5EG`n%5;b4 z{H>28q^ST#^QqeUhA@uJr)bSdV^!}3h@c0$_G>cGNejV@XB2%L+3z#fGO8gWRzMqh z1l7rHo104}WM(Q6HlD(>Sbct%FCGXysClP#aJEBA{;+MWDN&L4*)|zscDcBDds;lZ zZ-%SElY=3!6|068$wpS^=YK7C&gIK0qsdfs%W2d;+?Lar#xdeDTW)cnZAL;vxxuiF zvbJ%F(2?K%ZBlLU+>Q$BwtsPG;h*GA&-EbWv9wiH$peYUl{N|T7LapdN;Y`#3|kj5@u@ee|)#E?I~?>~OBSWGc>OiI$Rs;X+JY92rL=3Gm* zksyIg%6jvcJKf(yTL4lA=vFVvh)GHoPi+eW65`tGJc)@w`ARj9wx;D_sqfWPx1%FV zgQuZ9mc*$4Jp_o#;f~;z>(%jRw-*0Ac>8f0F10vBGNow_!k?ekDB;Se(zbt~%!0VM z6{^Ow;tQv>q_-v=g-?y#f#33)`no#lcZ-KTmW)7cr)j>7eer5})5A~+ajkWphNq6p zWB)abMgj(dJ*Aj!M zVxXOyn=3s6L^@slcA9QW$=pi|+RV~*YHBD6822iWz%j|Vh+JR)_)(okOC~g7`1)8! zr9$1-Jt`EQWo|Q5sDy>%KO@Wk4JVj5LAti71wiKEyF>7pT3HFqEU$hdo5a`SKYX~@ zTV!Wq3>y@XT^mo1Zl%ie4rx6*@VO=)47+xju!YxVyn!b|xCJ1ttPyI+=die;95fZYIuyGTT*|iJjU*?L7ETqB{<6m4F z5YUAIh!RI0F3(_q?&r*ua~NC0EcPuP?O>H!uw{~?DiJBL4;Xd<>HCZuG0S=ZZob{A zJoQ3a#+^ke9+0?8De^(y!^4a=f^DP$ta+dE4-2gbM-b)E5J+i@zJfx675mMv&|&-* zgcgMt-wI|^HL8Z|qe+n_aX##d2ENP7PqYmhJi2PP)(f?c)<48eEkmzUJcwnB{pb_w z{@!pUW*nu>L+dR4mLq6n*eC6>_{Gi5i!{*{WJCze!UJjzB11>0y3u{XG0AAlH_o@s z{DSue7Rryn;>rh-OQbta9t>HhMK3Gq{_Tr@MWNf{f?A2ZA7U!fN#M~OJ+(Cu^}e&A zhu&TXI}o=a1|Ylhjcdb{2#=n98nPvK;QCecaD|2H?b0Z99(TgVm@M=Fws%751TyWB zMzlA~h0BA<)0#Z8AJZQN8evzSTU!qn6U zL7s%-6p#4 z1l;Jz)aSJrC@*7U_&F`wx4rfY*+-EzHjY1)3a?X@*C<)zYsj>gpnv*lG^&GBiIjOoUdXE9UO zMst_tv1_qT?Y$duxi=ls6Biek(Zh#lu3G|gdvz~u^6S@zHa4ei+#p2q@rP!)x4@=v zq7T>6wqXVaQo9!`r~9NJC7hLdrk!HluUNz~Un6TIqfslH9u_m65wV!0J^#&}KK=HB zN!}pet&D*ImlaBnwc@KATOnHWzfFp~g#G*X3qfJMjQzdIJh>$mRIom;Ur(gXZx)#+ z4zo-Iym;~Dmr#7$G_0_{{{fE7t<2+Ti)0vpq?bWq>edJ%@JvbSloJk6K_YaUkCr)d zhWL!c!=A+T)v{;zc5g0(=k0K)=#*fGNdW8mlA_I*4`||tC%7u8gGi8nLrKLmS_NYrJAf2sHLb+Yc&wnJMv=JRcWjf60y;MmB@=3~wyvGG;9*7cWV(N{F$ zRg*#Hn)LCXs0xMP=-2=`M+Z&GO$xmA31C@1r2A|k>e@&N<<&BTtp|ZDGPi^EwjNcT z7wU(tcc|95V(cG=sbC0nO%7>w^ED#*d6yUKqm7*>10KqZg}7C_q=dQM;+N=%UNkmJ z32S_D+m=4PeR=~wr%0>)A0}Yr)_<$dA>@5a;pF6e3Hs;jmLS-LR@56NK|a1J;Q7jq zpI8=0axEdGG4PsO-z}>aaw!3F$ngCf;0d#_>_hmP*u9~}iou>N(nwkcx zqphjjw{>-mY;Dg9=oizjEKUb?b#-CZ=8xIHo|V0axK%fj^&5aY+3z$OC@OsXLq|Ip zT5{V}e&k@wYmr-%mg24{m#|dS-{1dre7t132sZZ|XJIKfDFX#ZbMuYTZyz2#u(n1! zSh=`J8o15p!QlmmONYNyDjH%}4T=7H4=+^z`DdAglIG7$Pex=Qv#UfPtB3Jl?)3K} z(V=nM;^yA~U}eSkm-T^@+{zf5J?xH1**9L_9`2!KCo&Fv^+iHJ9%RR*dh4e=VOwM( zDh<5dTikg@eiI*x{uFdCD``n?UJ9Z5q%R1u8F;K!x#5T>wm#=ptv|pWx9K%j_wNtC zDDzmVWCiU?#_igX{T%gM!38z{3P#KR{vX80tJFo4MA%-?);%|8KheKt&7rhu!YI^y z5(L!6$sPu+EQ1XDZI$ik{b}y!$w+1dD%C$ojwJx-uZWl!e>gn{kDR{Y=qQTptO!-& zz;J90@U!2T%lYi0A_*u1Wer>>1Hh4a$64Lxa4=d3 z-~{Sd;hYDcdC(HniQFP>ZEf$aE-7B~g9k?+n3|@lU);J!imHQD0%l=i8o_k{jzaT5 z`d;X^;us^fI1-u%IKb;r+3~)j8YR!FQ>5{8tt8}wv?s2e-ma-E>%+R^1{-*%Tn|840{~?JnLvyj2TqWU z?WMXm)XwB3Qjns2)kv-o0$c!mG_}q5%BbDgtlzMGkN3JlL0@Pw&&(`kXh^h0>cl;J z+)ubJx(nN^0SWAT$*WvH9|mAi)%ay*hzy%0uIYJpUbKV$;@Mr4**(=5)IM_xaIcZ@E_CdDX0aM9Z=N( z#t=SNcIh*N4N!cD>0SI{J#sVEyFOZsAlxW@Ofj&Oc6N4udilO>1s|pm(ABCdjyk_y z2Drde{sub&i|E#Z}22CKpBAS+6S)d>ekm1 zih<0#lL)-H4Y7(5(!L=`wL$}TalnRMVwOi)WTCr_&5JkAuq|VCQxe%(IA(i3`^E3f zz_&ESCJo)D;b}jS80@dtJLxX4O|r=el6ekvaXf^ZI`WV4ItdB328Pm7zQJ ziyBPQY!^~af$i%QV7JDnJ_+{{VtZNQ>S6C715k(h!eP|@Kcwh?NYVe0qW>X9{~qJE z;n06b(aog#A5!!`q$rY3J)ixT&cJsfG%S3Umk{qJ%7Cy5Qm!V(8IakbXGy2DT~4>9 zTJ5E6j9b%3I^B8#1vx0LTP&-ZCj^!;5rS~f3aKFK|IruL_G)}VKlOrs;h8J9T2Q=K z^T_Gf$t=_G!43Z2N`+qK`6aP|+lxnkfSzwdfOu@2C0L;?Eh*)M-^;qnhM+0n$H40RKjHQLMXH;V_?9dAZUMQ*A zCgBzQxjLT(VhBM2f#>HAqn`T?*ldi6Q44AeQIS{daI6h5pU6b8+;#<}MJJ%h2M@lz zy_(jMp<4jQ2xV3wrNn>N)z`g!8?jm=sHy52n#!>-e8*eCNJH6Rhl1e_{4;dGCaU&dkPe z&hw{3YZ=k&!#<&oR*>k)`4sd=`C-fdl_DFfdKu2u4gPJ1X8@a+6r;z)SlSjtl(HX4 zIc3zRQg??CyI3L0oS5WO3WGBN(ag{axg|80jt=4btj z%)i&S{V%$ZwHlHYiBS;|$T5!cdC<@X*+=$wQW*{@1?k5i={rBgrAF0)17g08I{)rY zX^Dp;c=(kaw}zdf2~R36A#nl@TlFz>b#b|Mkh{OkRZKzAgVDNtIT1N70($d>_MQkR2B1jJM1tf%4yJUzXzLfeM1w zDEY(wy~sHsZAGJ_qnP=&4mf^O`didy?i6N`?qs}lX>pia(@l{O7!gqzQ&=7mmv>)s zgOvHposj-I95nDUH+Qyt1P-6-kl7Bot+~LhV`*I%9Tg>GZ|8+I$}QFSY)wc-CDPZk z#wPMcMdhTo505Yq#c(Imw6`g`6oh&t4%QrN>hCW%vvhIk{)wZbJq?L(>vevT4E;TX z8(v)dX=epYoG|R=oErtn1ITqEBO|>Qs9z3y_}fe7neoR9J{N(|zVT`eK{^4yJoY|3 zvoa7Lu-Wj>c3s4Ua&METt>N3!le|r}5nRGkFa=yd5g-tpM9 zb%&<6j*j_*EB{}0-LDiK0X^1_|3?6#srpUTj$wZM9TjJ zxq-F-#H)zN6KP`8&^)<_oT)`%^^j&`lZ_9M0P!G#q5(@xIX@$Awh6|6I8UWZvG3H{m0oT1aNP1xNJg$o8Dn@ow6o5}q_P6KX&HftLa zms6QIyAjoiu9nb3+4e7XDNkHeo|Fx;d}<+$yqE*dHbBvPFNXL>z385Vsvniik&R&ujjP z`nKL#65S@=D2%F{*1o~#&%8V8vc4upH~M%~te@CHj`XD?hTZ=ZXr4pu(|I0q;rBaI zwSOr8Zu)yP?LG-ldy|Xr4XO`i|3h9s#qqo^2OM>B`kIh%O-6ihmiby~^Q_S9)nBdL zHd9_jh)n1s;=0TFnp_a0SpS+@f_U|D!SW>%x!=`8x-M_aJMLJ;icjng{G-EQWqIjq zA}(-t#6zSZZjHM1`LSF897o)DH)|UT+tnVUB^>AF2%6Y1%4OpP)H zww>l%Vt|U?nV_dCxNk4q>$u2Aux9X$ZE2UBd zdoXs7IIq?7U863{CzTUtGPDIGiudSQzWhie!iF^TwB?p z!k-g5Y<-~a=)F4)b8;qJ7B<>u=jV%ZhWuacU0G05XB5sj)@iMZGdR@&CCqeOI#ZE- zhgg>~j%aHupvV#hgCJ25BLvJ+eTWtXTPjSVLMsJL!~}~h29wZKX>f%|WM(L?2U1U!3Q!j>gpE{{bq8dare9A(nImcG$Iw8cp{1q8r>Tt3 z&#B+ZD788oDS^`$65e9-t}hlG0Er~do^qMzS5W8)4$2u&ATS%J?2>(O%#+|ZA5Ts; z#SPAsl+?d|)!Y=SjZ=HT`)wbj^Ba8$Mz1oyg$Vu{SLXxS&7c-~tB{b^KXKsTL3Sn` z)Gj+DlHf^`?*@UiETNEL$%>;=se?1;Yw!l6=ub*pk%z3uA*VNpwsw?tP;fY$?lPia z_oaZdwe|y4IdmyVZv;WD}hz1tka#Y(dk$XWiqN&vW zMmAR`h|WrnlF;EN`)Exns94a32F;E4NFhP{C08eNqpl+brRn>}WV^SRPyfT85^R&$ z^T$UvB|+D13j6-WiOo)i1((sJffv+_@$Md_K9)AA5|4T`tcj)1ylm?*>6Cg<7B>pv zrC+~&ArC2KM^vq0w1#eOQ0gQ24}TLFFS#{1o-}24h-nEhtu{~(n{h_G?hnb(U+Kn; zjfC|?C>KwL5Qr=nk8eXb21m-X#YpAEFOc5FB|(){L%h4+l^gS?aNVwg(SVf7St&03LY0;B?8J3H>;&X3qUCqyDQwa~hi$7UmpQ=4@ zIJQ+*bzH8e95pYbuy3{XVK3N598+yQuDuJ6CxH9N)&=&piA%1u4fFQSJC@e9zy?7% z$;9A7k-*r60)hRXpg>@c6%+{UDU1Sv*%K59=l5uSO_Lt?ak%AqyLNoBA2uy91BR{% zX24J&Faw4Hff+Cq2+V+?Kwt(81>$`gFwAHzY%<|+n9)KBi5V>vh`%>lKF2tvvtq3Q zQD{_rqn%QD%8S*@mYg3Hjy@(?Da9lUCEFdBv7||wGa5Zy7Z^a+s8f8;PWUf`g|@Vt zgE;d$)vL`(KfhXQ)ibEuZCJSpB=FRkqAmlXHlk?C6hQ;-&JaP`3hM@U_xf5%h~p($ zU!+TcrVus|yW1g8mkXU6Lj)SFHhtl;dLdjkJT}&vRLK*MRR@7UT3to+6zy*Ko!F(T zrVNHbgP}^u&-$_5I%DFYS+PK)(KzJFykLeK@^;B}da?p?9LJ#>X|}(w@9ok=Cs9=* z2O5So9k$-|&=-WVp{2;3M2^G$Fgd9Ln*Y2pfLaK%=o!)@ELsJPP8if&5Y^`>bgC-y zX;jC&Ex(F9G&?H~g5R`)C55l0(COll8Te{T2B_v!Qc}K__KX)y)eu;qu(mV7 z3ILPrM<56WPS2*~de_Vy@xB(OsiLH&-jmPYc&wnHKvgv&$;|2%85ub=^Q@OEnn9hc zfK77VkdPxM*%bvX{(jGMC3L&%?C4OQ4c4kJ!LW?7`Xl?Y>u-W82rrSt5NXYR$(4~R z=+6|7Dn3ki_Uoye3!dUfn>pe!V=kU>g5rx~{$z&_RzmeobMJK#kLonowOF6m7{fWWvxR(v6!z)3ae-@D}6pd zu!JMgOp}fh9WgX1^uD&|ZtD=ROht)a=j5aw7)V^cL^1{)y$0?BJ7AV-ouUX?`CM6L zb#+8>^X)H-_bq2hwccnR{#-P$o>ak=lfJF4u7+vx#*DDa1WK-Yf~K7tmgYY_N}IEY zU?iA%bgSyqd{|=B51dl&??hPoa!7AYa%U@{eQ=eGH>>e08xkgI)M#T#ruHU`y@KVn nW?7P_gDT#gYo5EDmv_vJ+pm_F8{A%S5wLdc+`EInjd<=af97_j diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_errors_2_error_selected.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_errors_2_error_selected.png deleted file mode 100644 index d64b611d80f89b6d579273d87316737985c9b793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47663 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 diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_initial_load.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_initial_load.png deleted file mode 100644 index 26d0044cf97d82b593ddbb5df6802292a2d8d62f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27511 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 F{s+WObMgQH diff --git a/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_select_center.png b/packages/devtools_app/test/test_infra/goldens/integration_inspector_v2_select_center.png deleted file mode 100644 index d2d00d92589a45789583dccf5ff184282148a1a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32018 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 diff --git a/tool/flutter_customer_tests/test.sh b/tool/flutter_customer_tests/test.sh index 3ab28912ab4..b8b1080dcc0 100755 --- a/tool/flutter_customer_tests/test.sh +++ b/tool/flutter_customer_tests/test.sh @@ -22,5 +22,4 @@ cd ../devtools_app flutter pub get flutter test --tags=include-for-flutter-customer-tests test/ flutter test --exclude-tags=skip-for-flutter-customer-tests test/screens/inspector/ -flutter test --exclude-tags=skip-for-flutter-customer-tests test/screens/inspector_v2/ flutter test --exclude-tags=skip-for-flutter-customer-tests test/shared/

    *;h9_nDXcT8S0xs+5UAvf6%rhV9ca?zP86 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 literal 54064 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