This commit is contained in:
parent
d021509141
commit
75baed585e
@ -17,6 +17,7 @@ Future<dds.DartDevelopmentService> Function(
|
|||||||
bool enableAuthCodes,
|
bool enableAuthCodes,
|
||||||
bool ipv6,
|
bool ipv6,
|
||||||
Uri? serviceUri,
|
Uri? serviceUri,
|
||||||
|
List<String> cachedUserTags,
|
||||||
}) ddsLauncherCallback = dds.DartDevelopmentService.startDartDevelopmentService;
|
}) ddsLauncherCallback = dds.DartDevelopmentService.startDartDevelopmentService;
|
||||||
|
|
||||||
/// Helper class to launch a [dds.DartDevelopmentService]. Allows for us to
|
/// Helper class to launch a [dds.DartDevelopmentService]. Allows for us to
|
||||||
@ -36,6 +37,7 @@ class DartDevelopmentService {
|
|||||||
int? hostPort,
|
int? hostPort,
|
||||||
bool? ipv6,
|
bool? ipv6,
|
||||||
bool? disableServiceAuthCodes,
|
bool? disableServiceAuthCodes,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
}) async {
|
}) async {
|
||||||
final Uri ddsUri = Uri(
|
final Uri ddsUri = Uri(
|
||||||
scheme: 'http',
|
scheme: 'http',
|
||||||
@ -52,6 +54,8 @@ class DartDevelopmentService {
|
|||||||
serviceUri: ddsUri,
|
serviceUri: ddsUri,
|
||||||
enableAuthCodes: disableServiceAuthCodes != true,
|
enableAuthCodes: disableServiceAuthCodes != true,
|
||||||
ipv6: ipv6 ?? false,
|
ipv6: ipv6 ?? false,
|
||||||
|
// Enables caching of CPU samples collected during application startup.
|
||||||
|
cachedUserTags: cacheStartupProfile ? const <String>['AppStartUp'] : const <String>[],
|
||||||
);
|
);
|
||||||
unawaited(_ddsInstance?.done.whenComplete(() {
|
unawaited(_ddsInstance?.done.whenComplete(() {
|
||||||
if (!_completer.isCompleted) {
|
if (!_completer.isCompleted) {
|
||||||
|
@ -46,6 +46,10 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
|
|||||||
'FLUTTER_TEST_OUTPUTS_DIR environment variable is set, the file '
|
'FLUTTER_TEST_OUTPUTS_DIR environment variable is set, the file '
|
||||||
'will be written there instead.',
|
'will be written there instead.',
|
||||||
)
|
)
|
||||||
|
..addFlag('cache-startup-profile',
|
||||||
|
help: 'Caches the CPU profile collected before the first frame for startup '
|
||||||
|
'analysis.',
|
||||||
|
)
|
||||||
..addFlag('verbose-system-logs',
|
..addFlag('verbose-system-logs',
|
||||||
negatable: false,
|
negatable: false,
|
||||||
help: 'Include verbose logging from the Flutter engine.',
|
help: 'Include verbose logging from the Flutter engine.',
|
||||||
@ -163,6 +167,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
|
|||||||
bool get dumpSkpOnShaderCompilation => boolArg('dump-skp-on-shader-compilation');
|
bool get dumpSkpOnShaderCompilation => boolArg('dump-skp-on-shader-compilation');
|
||||||
bool get purgePersistentCache => boolArg('purge-persistent-cache');
|
bool get purgePersistentCache => boolArg('purge-persistent-cache');
|
||||||
bool get disableServiceAuthCodes => boolArg('disable-service-auth-codes');
|
bool get disableServiceAuthCodes => boolArg('disable-service-auth-codes');
|
||||||
|
bool get cacheStartupProfile => boolArg('cache-startup-profile');
|
||||||
bool get runningWithPrebuiltApplication => argResults['use-application-binary'] != null;
|
bool get runningWithPrebuiltApplication => argResults['use-application-binary'] != null;
|
||||||
bool get trackWidgetCreation => boolArg('track-widget-creation');
|
bool get trackWidgetCreation => boolArg('track-widget-creation');
|
||||||
bool get enableImpeller => boolArg('enable-impeller');
|
bool get enableImpeller => boolArg('enable-impeller');
|
||||||
@ -202,6 +207,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
|
|||||||
buildInfo,
|
buildInfo,
|
||||||
startPaused: boolArg('start-paused'),
|
startPaused: boolArg('start-paused'),
|
||||||
disableServiceAuthCodes: boolArg('disable-service-auth-codes'),
|
disableServiceAuthCodes: boolArg('disable-service-auth-codes'),
|
||||||
|
cacheStartupProfile: cacheStartupProfile,
|
||||||
enableDds: enableDds,
|
enableDds: enableDds,
|
||||||
dartEntrypointArgs: stringsArg('dart-entrypoint-args'),
|
dartEntrypointArgs: stringsArg('dart-entrypoint-args'),
|
||||||
dartFlags: stringArg('dart-flags') ?? '',
|
dartFlags: stringArg('dart-flags') ?? '',
|
||||||
|
@ -757,6 +757,7 @@ class DebuggingOptions {
|
|||||||
this.startPaused = false,
|
this.startPaused = false,
|
||||||
this.disableServiceAuthCodes = false,
|
this.disableServiceAuthCodes = false,
|
||||||
this.enableDds = true,
|
this.enableDds = true,
|
||||||
|
this.cacheStartupProfile = false,
|
||||||
this.dartEntrypointArgs = const <String>[],
|
this.dartEntrypointArgs = const <String>[],
|
||||||
this.dartFlags = '',
|
this.dartFlags = '',
|
||||||
this.enableSoftwareRendering = false,
|
this.enableSoftwareRendering = false,
|
||||||
@ -813,6 +814,7 @@ class DebuggingOptions {
|
|||||||
dartFlags = '',
|
dartFlags = '',
|
||||||
disableServiceAuthCodes = false,
|
disableServiceAuthCodes = false,
|
||||||
enableDds = true,
|
enableDds = true,
|
||||||
|
cacheStartupProfile = false,
|
||||||
enableSoftwareRendering = false,
|
enableSoftwareRendering = false,
|
||||||
skiaDeterministicRendering = false,
|
skiaDeterministicRendering = false,
|
||||||
traceSkia = false,
|
traceSkia = false,
|
||||||
@ -841,6 +843,7 @@ class DebuggingOptions {
|
|||||||
required this.dartEntrypointArgs,
|
required this.dartEntrypointArgs,
|
||||||
required this.disableServiceAuthCodes,
|
required this.disableServiceAuthCodes,
|
||||||
required this.enableDds,
|
required this.enableDds,
|
||||||
|
required this.cacheStartupProfile,
|
||||||
required this.enableSoftwareRendering,
|
required this.enableSoftwareRendering,
|
||||||
required this.skiaDeterministicRendering,
|
required this.skiaDeterministicRendering,
|
||||||
required this.traceSkia,
|
required this.traceSkia,
|
||||||
@ -883,6 +886,7 @@ class DebuggingOptions {
|
|||||||
final List<String> dartEntrypointArgs;
|
final List<String> dartEntrypointArgs;
|
||||||
final bool disableServiceAuthCodes;
|
final bool disableServiceAuthCodes;
|
||||||
final bool enableDds;
|
final bool enableDds;
|
||||||
|
final bool cacheStartupProfile;
|
||||||
final bool enableSoftwareRendering;
|
final bool enableSoftwareRendering;
|
||||||
final bool skiaDeterministicRendering;
|
final bool skiaDeterministicRendering;
|
||||||
final bool traceSkia;
|
final bool traceSkia;
|
||||||
@ -945,6 +949,7 @@ class DebuggingOptions {
|
|||||||
'dartEntrypointArgs': dartEntrypointArgs,
|
'dartEntrypointArgs': dartEntrypointArgs,
|
||||||
'disableServiceAuthCodes': disableServiceAuthCodes,
|
'disableServiceAuthCodes': disableServiceAuthCodes,
|
||||||
'enableDds': enableDds,
|
'enableDds': enableDds,
|
||||||
|
'cacheStartupProfile': cacheStartupProfile,
|
||||||
'enableSoftwareRendering': enableSoftwareRendering,
|
'enableSoftwareRendering': enableSoftwareRendering,
|
||||||
'skiaDeterministicRendering': skiaDeterministicRendering,
|
'skiaDeterministicRendering': skiaDeterministicRendering,
|
||||||
'traceSkia': traceSkia,
|
'traceSkia': traceSkia,
|
||||||
@ -988,6 +993,7 @@ class DebuggingOptions {
|
|||||||
dartEntrypointArgs: ((json['dartEntrypointArgs'] as List<dynamic>?)?.cast<String>())!,
|
dartEntrypointArgs: ((json['dartEntrypointArgs'] as List<dynamic>?)?.cast<String>())!,
|
||||||
disableServiceAuthCodes: (json['disableServiceAuthCodes'] as bool?)!,
|
disableServiceAuthCodes: (json['disableServiceAuthCodes'] as bool?)!,
|
||||||
enableDds: (json['enableDds'] as bool?)!,
|
enableDds: (json['enableDds'] as bool?)!,
|
||||||
|
cacheStartupProfile: (json['cacheStartupProfile'] as bool?)!,
|
||||||
enableSoftwareRendering: (json['enableSoftwareRendering'] as bool?)!,
|
enableSoftwareRendering: (json['enableSoftwareRendering'] as bool?)!,
|
||||||
skiaDeterministicRendering: (json['skiaDeterministicRendering'] as bool?)!,
|
skiaDeterministicRendering: (json['skiaDeterministicRendering'] as bool?)!,
|
||||||
traceSkia: (json['traceSkia'] as bool?)!,
|
traceSkia: (json['traceSkia'] as bool?)!,
|
||||||
|
@ -224,6 +224,7 @@ class FlutterDevice {
|
|||||||
int hostVmServicePort,
|
int hostVmServicePort,
|
||||||
int ddsPort,
|
int ddsPort,
|
||||||
bool disableServiceAuthCodes = false,
|
bool disableServiceAuthCodes = false,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
bool enableDds = true,
|
bool enableDds = true,
|
||||||
@required bool allowExistingDdsInstance,
|
@required bool allowExistingDdsInstance,
|
||||||
bool ipv6 = false,
|
bool ipv6 = false,
|
||||||
@ -269,6 +270,7 @@ class FlutterDevice {
|
|||||||
ipv6: ipv6,
|
ipv6: ipv6,
|
||||||
disableServiceAuthCodes: disableServiceAuthCodes,
|
disableServiceAuthCodes: disableServiceAuthCodes,
|
||||||
logger: globals.logger,
|
logger: globals.logger,
|
||||||
|
cacheStartupProfile: cacheStartupProfile,
|
||||||
);
|
);
|
||||||
} on dds.DartDevelopmentServiceException catch (e, st) {
|
} on dds.DartDevelopmentServiceException catch (e, st) {
|
||||||
if (!allowExistingDdsInstance ||
|
if (!allowExistingDdsInstance ||
|
||||||
@ -1298,7 +1300,8 @@ abstract class ResidentRunner extends ResidentHandlers {
|
|||||||
getSkSLMethod: getSkSLMethod,
|
getSkSLMethod: getSkSLMethod,
|
||||||
printStructuredErrorLogMethod: printStructuredErrorLog,
|
printStructuredErrorLogMethod: printStructuredErrorLog,
|
||||||
ipv6: ipv6,
|
ipv6: ipv6,
|
||||||
disableServiceAuthCodes: debuggingOptions.disableServiceAuthCodes
|
disableServiceAuthCodes: debuggingOptions.disableServiceAuthCodes,
|
||||||
|
cacheStartupProfile: debuggingOptions.cacheStartupProfile,
|
||||||
);
|
);
|
||||||
await device.vmService.getFlutterViews();
|
await device.vmService.getFlutterViews();
|
||||||
|
|
||||||
|
@ -802,6 +802,7 @@ class FakeDartDevelopmentService extends Fake implements DartDevelopmentService
|
|||||||
int hostPort,
|
int hostPort,
|
||||||
bool ipv6,
|
bool ipv6,
|
||||||
bool disableServiceAuthCodes,
|
bool disableServiceAuthCodes,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
}) async {}
|
}) async {}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -216,6 +216,7 @@ class TestFlutterDevice extends FlutterDevice {
|
|||||||
GetSkSLMethod getSkSLMethod,
|
GetSkSLMethod getSkSLMethod,
|
||||||
PrintStructuredErrorLogMethod printStructuredErrorLogMethod,
|
PrintStructuredErrorLogMethod printStructuredErrorLogMethod,
|
||||||
bool enableDds = true,
|
bool enableDds = true,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
bool disableServiceAuthCodes = false,
|
bool disableServiceAuthCodes = false,
|
||||||
int hostVmServicePort,
|
int hostVmServicePort,
|
||||||
int ddsPort,
|
int ddsPort,
|
||||||
|
@ -590,6 +590,7 @@ class FakeDartDevelopmentService extends Fake implements DartDevelopmentService
|
|||||||
int hostPort,
|
int hostPort,
|
||||||
bool ipv6,
|
bool ipv6,
|
||||||
bool disableServiceAuthCodes,
|
bool disableServiceAuthCodes,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
}) async {
|
}) async {
|
||||||
started = true;
|
started = true;
|
||||||
}
|
}
|
||||||
|
@ -944,6 +944,7 @@ class FakeDartDevelopmentService extends Fake implements DartDevelopmentService
|
|||||||
int hostPort,
|
int hostPort,
|
||||||
bool ipv6,
|
bool ipv6,
|
||||||
bool disableServiceAuthCodes,
|
bool disableServiceAuthCodes,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
}) async {}
|
}) async {}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -709,6 +709,7 @@ class TestFlutterDevice extends FlutterDevice {
|
|||||||
PrintStructuredErrorLogMethod printStructuredErrorLogMethod,
|
PrintStructuredErrorLogMethod printStructuredErrorLogMethod,
|
||||||
bool disableServiceAuthCodes = false,
|
bool disableServiceAuthCodes = false,
|
||||||
bool enableDds = true,
|
bool enableDds = true,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
bool ipv6 = false,
|
bool ipv6 = false,
|
||||||
int hostVmServicePort,
|
int hostVmServicePort,
|
||||||
int ddsPort,
|
int ddsPort,
|
||||||
|
@ -1916,11 +1916,12 @@ flutter:
|
|||||||
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[]);
|
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[]);
|
||||||
final FakeDevice device = FakeDevice()
|
final FakeDevice device = FakeDevice()
|
||||||
..dds = DartDevelopmentService();
|
..dds = DartDevelopmentService();
|
||||||
ddsLauncherCallback = (Uri uri, {bool enableAuthCodes, bool ipv6, Uri serviceUri}) {
|
ddsLauncherCallback = (Uri uri, {bool enableAuthCodes, bool ipv6, Uri serviceUri, List<String> cachedUserTags}) {
|
||||||
expect(uri, Uri(scheme: 'foo', host: 'bar'));
|
expect(uri, Uri(scheme: 'foo', host: 'bar'));
|
||||||
expect(enableAuthCodes, isTrue);
|
expect(enableAuthCodes, isTrue);
|
||||||
expect(ipv6, isFalse);
|
expect(ipv6, isFalse);
|
||||||
expect(serviceUri, Uri(scheme: 'http', host: '127.0.0.1', port: 0));
|
expect(serviceUri, Uri(scheme: 'http', host: '127.0.0.1', port: 0));
|
||||||
|
expect(cachedUserTags, isEmpty);
|
||||||
throw FakeDartDevelopmentServiceException(message:
|
throw FakeDartDevelopmentServiceException(message:
|
||||||
'Existing VM service clients prevent DDS from taking control.',
|
'Existing VM service clients prevent DDS from taking control.',
|
||||||
);
|
);
|
||||||
@ -1963,11 +1964,12 @@ flutter:
|
|||||||
final FakeDevice device = FakeDevice()
|
final FakeDevice device = FakeDevice()
|
||||||
..dds = DartDevelopmentService();
|
..dds = DartDevelopmentService();
|
||||||
final Completer<void>done = Completer<void>();
|
final Completer<void>done = Completer<void>();
|
||||||
ddsLauncherCallback = (Uri uri, {bool enableAuthCodes, bool ipv6, Uri serviceUri}) async {
|
ddsLauncherCallback = (Uri uri, {bool enableAuthCodes, bool ipv6, Uri serviceUri, List<String> cachedUserTags}) async {
|
||||||
expect(uri, Uri(scheme: 'foo', host: 'bar'));
|
expect(uri, Uri(scheme: 'foo', host: 'bar'));
|
||||||
expect(enableAuthCodes, isFalse);
|
expect(enableAuthCodes, isFalse);
|
||||||
expect(ipv6, isTrue);
|
expect(ipv6, isTrue);
|
||||||
expect(serviceUri, Uri(scheme: 'http', host: '::1', port: 0));
|
expect(serviceUri, Uri(scheme: 'http', host: '::1', port: 0));
|
||||||
|
expect(cachedUserTags, isEmpty);
|
||||||
done.complete();
|
done.complete();
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
@ -1994,11 +1996,12 @@ flutter:
|
|||||||
// See https://github.com/flutter/flutter/issues/72385 for context.
|
// See https://github.com/flutter/flutter/issues/72385 for context.
|
||||||
final FakeDevice device = FakeDevice()
|
final FakeDevice device = FakeDevice()
|
||||||
..dds = DartDevelopmentService();
|
..dds = DartDevelopmentService();
|
||||||
ddsLauncherCallback = (Uri uri, {bool enableAuthCodes, bool ipv6, Uri serviceUri}) {
|
ddsLauncherCallback = (Uri uri, {bool enableAuthCodes, bool ipv6, Uri serviceUri, List<String> cachedUserTags}) {
|
||||||
expect(uri, Uri(scheme: 'foo', host: 'bar'));
|
expect(uri, Uri(scheme: 'foo', host: 'bar'));
|
||||||
expect(enableAuthCodes, isTrue);
|
expect(enableAuthCodes, isTrue);
|
||||||
expect(ipv6, isFalse);
|
expect(ipv6, isFalse);
|
||||||
expect(serviceUri, Uri(scheme: 'http', host: '127.0.0.1', port: 0));
|
expect(serviceUri, Uri(scheme: 'http', host: '127.0.0.1', port: 0));
|
||||||
|
expect(cachedUserTags, isEmpty);
|
||||||
throw FakeDartDevelopmentServiceException(message: 'No URI');
|
throw FakeDartDevelopmentServiceException(message: 'No URI');
|
||||||
};
|
};
|
||||||
final TestFlutterDevice flutterDevice = TestFlutterDevice(
|
final TestFlutterDevice flutterDevice = TestFlutterDevice(
|
||||||
@ -2226,6 +2229,7 @@ class FakeFlutterDevice extends Fake implements FlutterDevice {
|
|||||||
int ddsPort,
|
int ddsPort,
|
||||||
bool disableServiceAuthCodes = false,
|
bool disableServiceAuthCodes = false,
|
||||||
bool enableDds = true,
|
bool enableDds = true,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
@required bool allowExistingDdsInstance,
|
@required bool allowExistingDdsInstance,
|
||||||
bool ipv6 = false,
|
bool ipv6 = false,
|
||||||
}) async { }
|
}) async { }
|
||||||
@ -2268,6 +2272,7 @@ class FakeDelegateFlutterDevice extends FlutterDevice {
|
|||||||
ReloadSources reloadSources,
|
ReloadSources reloadSources,
|
||||||
Restart restart,
|
Restart restart,
|
||||||
bool enableDds = true,
|
bool enableDds = true,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
bool disableServiceAuthCodes = false,
|
bool disableServiceAuthCodes = false,
|
||||||
bool ipv6 = false,
|
bool ipv6 = false,
|
||||||
CompileExpression compileExpression,
|
CompileExpression compileExpression,
|
||||||
|
@ -1348,6 +1348,7 @@ class FakeFlutterDevice extends Fake implements FlutterDevice {
|
|||||||
int ddsPort,
|
int ddsPort,
|
||||||
bool disableServiceAuthCodes = false,
|
bool disableServiceAuthCodes = false,
|
||||||
bool enableDds = true,
|
bool enableDds = true,
|
||||||
|
bool cacheStartupProfile = false,
|
||||||
@required bool allowExistingDdsInstance,
|
@required bool allowExistingDdsInstance,
|
||||||
bool ipv6 = false,
|
bool ipv6 = false,
|
||||||
}) async { }
|
}) async { }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user