Skip to content

Commit

Permalink
Merge branch 'master' of github.com:flutter/devtools into tool-script
Browse files Browse the repository at this point in the history
  • Loading branch information
kenzieschmoll committed Jul 26, 2023
2 parents 72b0437 + 048989f commit 8ec1ff1
Show file tree
Hide file tree
Showing 12 changed files with 91 additions and 15 deletions.
2 changes: 1 addition & 1 deletion packages/devtools_app/lib/devtools.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
// the constant declaration `const String version =`.
// If you change the declaration you must also modify the regex in
// tools/update_version.dart.
const String version = '2.26.0-dev.10';
const String version = '2.26.0-dev.11';
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@ class PerformanceController extends DisposableController
timelineEventsController,
rasterStatsController,
];

if (serviceManager.connectedApp?.isDartWebAppNow ?? false) {
// Do not perform initialization for web apps.
return;
}

// See https://github.com/dart-lang/linter/issues/3801
// ignore: discarded_futures
unawaited(_init());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:flutter/material.dart';
import '../../shared/analytics/analytics.dart' as ga;
import '../../shared/banner_messages.dart';
import '../../shared/common_widgets.dart';
import '../../shared/feature_flags.dart';
import '../../shared/globals.dart';
import '../../shared/primitives/auto_dispose.dart';
import '../../shared/screen.dart';
Expand All @@ -25,7 +26,6 @@ class PerformanceScreen extends Screen {
PerformanceScreen()
: super.conditional(
id: id,
requiresDartVm: true,
worksOffline: true,
title: ScreenMetaData.performance.title,
icon: ScreenMetaData.performance.icon,
Expand All @@ -37,7 +37,13 @@ class PerformanceScreen extends Screen {
String get docPageId => id;

@override
Widget build(BuildContext context) => const PerformanceScreenBody();
Widget build(BuildContext context) {
if (FeatureFlags.performancePageForWeb &&
(serviceManager.connectedApp?.isDartWebAppNow ?? false)) {
return const WebPerformanceScreenBody();
}
return const PerformanceScreenBody();
}
}

class PerformanceScreenBody extends StatefulWidget {
Expand Down Expand Up @@ -119,3 +125,14 @@ class PerformanceScreenBodyState extends State<PerformanceScreenBody>
);
}
}

class WebPerformanceScreenBody extends StatelessWidget {
const WebPerformanceScreenBody({super.key});

@override
Widget build(BuildContext context) {
return const Center(
child: Text('TODO: add instructions for using Chrome DevTools'),
);
}
}
1 change: 1 addition & 0 deletions packages/devtools_app/lib/src/shared/console/console.dart
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ class _ConsoleOutputState extends State<_ConsoleOutput>
} else if (line is VariableConsoleLine) {
return ExpandableVariable(
variable: line.variable,
isSelectable: false,
);
} else {
assert(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class ExpandableVariable extends StatelessWidget {
Key? key,
this.variable,
this.dataDisplayProvider,
this.isSelectable = true,
}) : super(key: key);

@visibleForTesting
Expand All @@ -25,6 +26,8 @@ class ExpandableVariable extends StatelessWidget {
final DartObjectNode? variable;
final Widget Function(DartObjectNode, void Function())? dataDisplayProvider;

final bool isSelectable;

@override
Widget build(BuildContext context) {
final variable = this.variable;
Expand All @@ -42,6 +45,7 @@ class ExpandableVariable extends StatelessWidget {
onTap: onPressed,
),
onItemSelected: onItemPressed,
isSelectable: isSelectable,
);
}

Expand Down
7 changes: 7 additions & 0 deletions packages/devtools_app/lib/src/shared/feature_flags.dart
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,13 @@ abstract class FeatureFlags {
/// https://github.com/flutter/devtools/issues/1632
static bool devToolsExtensions = enableExperiments;

// TODO(elliottbrooks): remove this flag once you add instructions to the
// web performance page body.
/// Flag to enable the Performance page for web.
///
/// https://github.com/flutter/devtools/issues/6095
static bool get performancePageForWeb => enableExperiments;

/// Stores a map of all the feature flags for debugging purposes.
///
/// When adding a new flag, you are responsible for adding it to this map as
Expand Down
14 changes: 12 additions & 2 deletions packages/devtools_app/lib/src/shared/tree.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class TreeView<T extends TreeNode<T>> extends StatefulWidget {
this.emptyTreeViewBuilder,
this.scrollController,
this.includeScrollbar = false,
this.isSelectable = true,
});

final ValueListenable<List<T>> dataRootsListenable;
Expand All @@ -52,6 +53,8 @@ class TreeView<T extends TreeNode<T>> extends StatefulWidget {

final bool includeScrollbar;

final bool isSelectable;

@override
State<TreeView<T>> createState() => _TreeViewState<T>();
}
Expand All @@ -75,8 +78,8 @@ class _TreeViewState<T extends TreeNode<T>> extends State<TreeView<T>>
if (dataFlatList.isEmpty) return _emptyTreeViewBuilder();
final content = SizedBox(
height: dataFlatList.length * defaultTreeViewRowHeight,
child: SelectionArea(
child: ListView.builder(
child: _maybeWrapInSelectionArea(
ListView.builder(
itemCount: dataFlatList.length,
itemExtent: defaultTreeViewRowHeight,
physics: const ClampingScrollPhysics(),
Expand Down Expand Up @@ -111,6 +114,13 @@ class _TreeViewState<T extends TreeNode<T>> extends State<TreeView<T>>
return const SizedBox();
}

Widget _maybeWrapInSelectionArea(Widget tree) {
if (widget.isSelectable) {
return SelectionArea(child: tree);
}
return tree;
}

// TODO(kenz): animate expansions and collapses.
void _onItemSelected(T item) async {
// Order of execution matters for the below calls.
Expand Down
6 changes: 3 additions & 3 deletions packages/devtools_app/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ publish_to: none

# Note: this version should only be updated by running tools/update_version.dart
# that updates all versions of devtools packages (devtools_app, devtools_test).
version: 2.26.0-dev.10
version: 2.26.0-dev.11

repository: https://github.com/flutter/devtools/tree/master/packages/devtools_app

Expand All @@ -24,7 +24,7 @@ dependencies:
codicon: ^1.0.0
collection: ^1.15.0
dds_service_extensions: ^1.3.2
devtools_shared: 2.26.0-dev.10
devtools_shared: 2.26.0-dev.11
devtools_extensions:
path: ../devtools_extensions
file: ^6.0.0
Expand Down Expand Up @@ -68,7 +68,7 @@ dependencies:
dev_dependencies:
args: ^2.4.2
build_runner: ^2.3.3
devtools_test: 2.26.0-dev.10
devtools_test: 2.26.0-dev.11
fake_async: ^1.3.1
flutter_driver:
sdk: flutter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import 'package:devtools_app/src/screens/performance/panes/flutter_frames/flutte
import 'package:devtools_app/src/screens/performance/panes/timeline_events/legacy/event_details.dart';
import 'package:devtools_app/src/screens/performance/panes/timeline_events/legacy/timeline_flame_chart.dart';
import 'package:devtools_app/src/screens/performance/tabbed_performance_view.dart';
import 'package:devtools_app/src/shared/feature_flags.dart';
import 'package:devtools_shared/devtools_test_utils.dart';
import 'package:devtools_test/devtools_test.dart';
import 'package:flutter/material.dart';
Expand Down Expand Up @@ -70,7 +71,9 @@ void main() {
}) async {
await tester.pumpWidget(
wrapWithControllers(
const PerformanceScreenBody(),
Builder(
builder: PerformanceScreen().build,
),
performance: controller,
),
);
Expand Down Expand Up @@ -111,6 +114,8 @@ void main() {
await tester.runAsync(() async {
await pumpPerformanceScreen(tester, runAsync: true);
await tester.pumpAndSettle();
expect(find.byType(PerformanceScreenBody), findsOneWidget);
expect(find.byType(WebPerformanceScreenBody), findsNothing);
expect(find.byType(PerformanceControls), findsOneWidget);
expect(find.byType(FlutterFramesChart), findsOneWidget);
expect(find.byType(TabbedPerformanceView), findsOneWidget);
Expand All @@ -122,6 +127,32 @@ void main() {
},
);

testWidgetsWithWindowSize(
'builds initial content for web app',
windowSize,
(WidgetTester tester) async {
setEnableExperiments();
mockConnectedApp(
fakeServiceManager.connectedApp!,
isFlutterApp: false,
isProfileBuild: false,
isWebApp: true,
);
await tester.pumpWidget(
wrap(
Builder(builder: PerformanceScreen().build),
),
);
await tester.pumpAndSettle();
expect(find.byType(PerformanceScreenBody), findsNothing);
expect(find.byType(WebPerformanceScreenBody), findsOneWidget);
expect(
find.text('TODO: add instructions for using Chrome DevTools'),
findsOneWidget,
);
},
);

testWidgetsWithWindowSize(
'builds initial content for non-flutter app',
windowSize,
Expand Down
4 changes: 2 additions & 2 deletions packages/devtools_app/test/shared/visible_screens_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ void main() {
HomeScreen,
// InspectorScreen,
// LegacyPerformanceScreen,
// PerformanceScreen,
PerformanceScreen,
// ProfilerScreen,
// MemoryScreen,
DebuggerScreen,
Expand Down Expand Up @@ -161,7 +161,7 @@ void main() {
HomeScreen,
InspectorScreen,
// LegacyPerformanceScreen,
// PerformanceScreen,
PerformanceScreen,
// ProfilerScreen,
// MemoryScreen,
DebuggerScreen,
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools_shared/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: devtools_shared
description: Package of shared structures between devtools_app, dds, and other tools.

version: 2.26.0-dev.10
version: 2.26.0-dev.11

repository: https://github.com/flutter/devtools/tree/master/packages/devtools_shared

Expand Down
6 changes: 3 additions & 3 deletions packages/devtools_test/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ publish_to: none
# When publishing new versions of this package be sure to publish a new version
# of package:devtools as well. package:devtools contains a compiled snapshot of
# this package.
version: 2.26.0-dev.10
version: 2.26.0-dev.11

repository: https://github.com/flutter/devtools/tree/master/packages/devtools_test

Expand All @@ -18,8 +18,8 @@ environment:
dependencies:
async: ^2.0.0
collection: ^1.15.0
devtools_shared: 2.26.0-dev.10
devtools_app: 2.26.0-dev.10
devtools_shared: 2.26.0-dev.11
devtools_app: 2.26.0-dev.11
flutter:
sdk: flutter
flutter_test:
Expand Down

0 comments on commit 8ec1ff1

Please sign in to comment.