From 0b72d5ca58445e46dfd6e75bca87d6eeb28a35b1 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Wed, 2 Feb 2022 16:00:16 -0800 Subject: [PATCH] [flutter_tool] allow disabling profile mode timeline traces (#97622) --- packages/flutter_tools/lib/src/compile.dart | 8 ++++++-- .../test/general.shard/compile_test.dart | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart index 5ffd602c015..04ac530e898 100644 --- a/packages/flutter_tools/lib/src/compile.dart +++ b/packages/flutter_tools/lib/src/compile.dart @@ -177,8 +177,12 @@ List buildModeOptions(BuildMode mode, List dartDefines) { ]; case BuildMode.profile: return [ - '-Ddart.vm.profile=true', - '-Ddart.vm.product=false', + // These checks allow the CLI to override the value of this define for + // benchmarks with most timeline traces disabled. + if (!dartDefines.any((String define) => define.startsWith('dart.vm.profile'))) + '-Ddart.vm.profile=true', + if (!dartDefines.any((String define) => define.startsWith('dart.vm.product'))) + '-Ddart.vm.product=false', ]; case BuildMode.release: return [ diff --git a/packages/flutter_tools/test/general.shard/compile_test.dart b/packages/flutter_tools/test/general.shard/compile_test.dart index 72cd902baa0..28442b625bf 100644 --- a/packages/flutter_tools/test/general.shard/compile_test.dart +++ b/packages/flutter_tools/test/general.shard/compile_test.dart @@ -89,16 +89,27 @@ void main() { ]); }); - testWithoutContext('buildModeOptions removes matching profile define', () { + testWithoutContext('buildModeOptions removes matching profile define in debug mode', () { expect(buildModeOptions(BuildMode.debug, ['dart.vm.profile=true']), [ '-Ddart.vm.product=false', '--enable-asserts', ]); }); - testWithoutContext('buildModeOptions removes both matching profile and release define', () { + testWithoutContext('buildModeOptions removes both matching profile and release define in debug mode', () { expect(buildModeOptions(BuildMode.debug, ['dart.vm.profile=true', 'dart.vm.product=true']), [ '--enable-asserts', ]); }); + + testWithoutContext('buildModeOptions removes matching profile define in profile mode', () { + expect(buildModeOptions(BuildMode.profile, ['dart.vm.profile=true']), [ + '-Ddart.vm.product=false', + ]); + }); + + testWithoutContext('buildModeOptions removes both matching profile and release define in profile mode', () { + expect(buildModeOptions(BuildMode.profile, ['dart.vm.profile=false', 'dart.vm.product=true']), [ + ]); + }); }