Unverified Commit b81b1e28 authored by Chris Yang's avatar Chris Yang Committed by GitHub

[flutter_tool] add enable-embedder-api flag (#121895)

[flutter_tool] add enable-embedder-api flag
parent d5513047
...@@ -183,6 +183,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment ...@@ -183,6 +183,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
addAndroidSpecificBuildOptions(hide: !verboseHelp); addAndroidSpecificBuildOptions(hide: !verboseHelp);
usesFatalWarningsOption(verboseHelp: verboseHelp); usesFatalWarningsOption(verboseHelp: verboseHelp);
addEnableImpellerFlag(verboseHelp: verboseHelp); addEnableImpellerFlag(verboseHelp: verboseHelp);
addEnableEmbedderApiFlag(verboseHelp: verboseHelp);
} }
bool get traceStartup => boolArgDeprecated('trace-startup'); bool get traceStartup => boolArgDeprecated('trace-startup');
...@@ -196,6 +197,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment ...@@ -196,6 +197,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
bool get trackWidgetCreation => boolArgDeprecated('track-widget-creation'); bool get trackWidgetCreation => boolArgDeprecated('track-widget-creation');
bool get enableImpeller => boolArgDeprecated('enable-impeller'); bool get enableImpeller => boolArgDeprecated('enable-impeller');
bool get uninstallFirst => boolArgDeprecated('uninstall-first'); bool get uninstallFirst => boolArgDeprecated('uninstall-first');
bool get enableEmbedderApi => boolArgDeprecated('enable-embedder-api');
@override @override
bool get reportNullSafety => true; bool get reportNullSafety => true;
...@@ -234,6 +236,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment ...@@ -234,6 +236,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
enableImpeller: enableImpeller, enableImpeller: enableImpeller,
uninstallFirst: uninstallFirst, uninstallFirst: uninstallFirst,
enableDartProfiling: enableDartProfiling, enableDartProfiling: enableDartProfiling,
enableEmbedderApi: enableEmbedderApi,
); );
} else { } else {
return DebuggingOptions.enabled( return DebuggingOptions.enabled(
...@@ -282,6 +285,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment ...@@ -282,6 +285,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
uninstallFirst: uninstallFirst, uninstallFirst: uninstallFirst,
serveObservatory: boolArgDeprecated('serve-observatory'), serveObservatory: boolArgDeprecated('serve-observatory'),
enableDartProfiling: enableDartProfiling, enableDartProfiling: enableDartProfiling,
enableEmbedderApi: enableEmbedderApi,
); );
} }
} }
......
...@@ -967,6 +967,7 @@ class DebuggingOptions { ...@@ -967,6 +967,7 @@ class DebuggingOptions {
this.uninstallFirst = false, this.uninstallFirst = false,
this.serveObservatory = true, this.serveObservatory = true,
this.enableDartProfiling = true, this.enableDartProfiling = true,
this.enableEmbedderApi = false,
}) : debuggingEnabled = true; }) : debuggingEnabled = true;
DebuggingOptions.disabled(this.buildInfo, { DebuggingOptions.disabled(this.buildInfo, {
...@@ -986,6 +987,7 @@ class DebuggingOptions { ...@@ -986,6 +987,7 @@ class DebuggingOptions {
this.enableImpeller = false, this.enableImpeller = false,
this.uninstallFirst = false, this.uninstallFirst = false,
this.enableDartProfiling = true, this.enableDartProfiling = true,
this.enableEmbedderApi = false,
}) : debuggingEnabled = false, }) : debuggingEnabled = false,
useTestFonts = false, useTestFonts = false,
startPaused = false, startPaused = false,
...@@ -1059,6 +1061,7 @@ class DebuggingOptions { ...@@ -1059,6 +1061,7 @@ class DebuggingOptions {
required this.uninstallFirst, required this.uninstallFirst,
required this.serveObservatory, required this.serveObservatory,
required this.enableDartProfiling, required this.enableDartProfiling,
required this.enableEmbedderApi,
}); });
final bool debuggingEnabled; final bool debuggingEnabled;
...@@ -1096,6 +1099,7 @@ class DebuggingOptions { ...@@ -1096,6 +1099,7 @@ class DebuggingOptions {
final bool enableImpeller; final bool enableImpeller;
final bool serveObservatory; final bool serveObservatory;
final bool enableDartProfiling; final bool enableDartProfiling;
final bool enableEmbedderApi;
/// Whether the tool should try to uninstall a previously installed version of the app. /// Whether the tool should try to uninstall a previously installed version of the app.
/// ///
...@@ -1179,6 +1183,7 @@ class DebuggingOptions { ...@@ -1179,6 +1183,7 @@ class DebuggingOptions {
// Tell the VM service to listen on all interfaces, don't restrict to the loopback. // Tell the VM service to listen on all interfaces, don't restrict to the loopback.
if (interfaceType == IOSDeviceConnectionInterface.network) if (interfaceType == IOSDeviceConnectionInterface.network)
'--vm-service-host=${ipv6 ? '::0' : '0.0.0.0'}', '--vm-service-host=${ipv6 ? '::0' : '0.0.0.0'}',
if (enableEmbedderApi) '--enable-embedder-api',
]; ];
} }
...@@ -1225,6 +1230,7 @@ class DebuggingOptions { ...@@ -1225,6 +1230,7 @@ class DebuggingOptions {
'enableImpeller': enableImpeller, 'enableImpeller': enableImpeller,
'serveObservatory': serveObservatory, 'serveObservatory': serveObservatory,
'enableDartProfiling': enableDartProfiling, 'enableDartProfiling': enableDartProfiling,
'enableEmbedderApi': enableEmbedderApi,
}; };
static DebuggingOptions fromJson(Map<String, Object?> json, BuildInfo buildInfo) => static DebuggingOptions fromJson(Map<String, Object?> json, BuildInfo buildInfo) =>
...@@ -1273,6 +1279,7 @@ class DebuggingOptions { ...@@ -1273,6 +1279,7 @@ class DebuggingOptions {
uninstallFirst: (json['uninstallFirst'] as bool?) ?? false, uninstallFirst: (json['uninstallFirst'] as bool?) ?? false,
serveObservatory: (json['serveObservatory'] as bool?) ?? false, serveObservatory: (json['serveObservatory'] as bool?) ?? false,
enableDartProfiling: (json['enableDartProfiling'] as bool?) ?? true, enableDartProfiling: (json['enableDartProfiling'] as bool?) ?? true,
enableEmbedderApi: (json['enableEmbedderApi'] as bool?) ?? false,
); );
} }
......
...@@ -1043,6 +1043,13 @@ abstract class FlutterCommand extends Command<void> { ...@@ -1043,6 +1043,13 @@ abstract class FlutterCommand extends Command<void> {
); );
} }
void addEnableEmbedderApiFlag({required bool verboseHelp}) {
argParser.addFlag('enable-embedder-api',
hide: !verboseHelp,
help: 'Whether to enable the experimental embedder API on iOS.',
);
}
/// Compute the [BuildInfo] for the current flutter command. /// Compute the [BuildInfo] for the current flutter command.
/// Commands that build multiple build modes can pass in a [forcedBuildMode] /// Commands that build multiple build modes can pass in a [forcedBuildMode]
/// to be used instead of parsing flags. /// to be used instead of parsing flags.
......
...@@ -388,6 +388,7 @@ void main() { ...@@ -388,6 +388,7 @@ void main() {
'--trace-systrace', '--trace-systrace',
'--enable-software-rendering', '--enable-software-rendering',
'--skia-deterministic-rendering', '--skia-deterministic-rendering',
'--enable-embedder-api',
]), throwsToolExit()); ]), throwsToolExit());
final DebuggingOptions options = await command.createDebuggingOptions(false); final DebuggingOptions options = await command.createDebuggingOptions(false);
......
...@@ -938,6 +938,7 @@ void main() { ...@@ -938,6 +938,7 @@ void main() {
'--trace-systrace', '--trace-systrace',
'--enable-software-rendering', '--enable-software-rendering',
'--skia-deterministic-rendering', '--skia-deterministic-rendering',
'--enable-embedder-api',
]), throwsToolExit()); ]), throwsToolExit());
final DebuggingOptions options = await command.createDebuggingOptions(false); final DebuggingOptions options = await command.createDebuggingOptions(false);
......
...@@ -737,6 +737,7 @@ void main() { ...@@ -737,6 +737,7 @@ void main() {
deviceVmServicePort: 1234, deviceVmServicePort: 1234,
enableImpeller: true, enableImpeller: true,
enableDartProfiling: false, enableDartProfiling: false,
enableEmbedderApi: true,
); );
final String jsonString = json.encode(original.toJson()); final String jsonString = json.encode(original.toJson());
final Map<String, dynamic> decoded = castStringKeyedMap(json.decode(jsonString))!; final Map<String, dynamic> decoded = castStringKeyedMap(json.decode(jsonString))!;
...@@ -749,6 +750,7 @@ void main() { ...@@ -749,6 +750,7 @@ void main() {
expect(deserialized.deviceVmServicePort, original.deviceVmServicePort); expect(deserialized.deviceVmServicePort, original.deviceVmServicePort);
expect(deserialized.enableImpeller, original.enableImpeller); expect(deserialized.enableImpeller, original.enableImpeller);
expect(deserialized.enableDartProfiling, original.enableDartProfiling); expect(deserialized.enableDartProfiling, original.enableDartProfiling);
expect(deserialized.enableEmbedderApi, original.enableEmbedderApi);
}); });
}); });
......
...@@ -353,6 +353,7 @@ void main() { ...@@ -353,6 +353,7 @@ void main() {
'--cache-sksl', '--cache-sksl',
'--purge-persistent-cache', '--purge-persistent-cache',
'--enable-impeller', '--enable-impeller',
'--enable-embedder-api',
].join(' '), ].join(' '),
], ],
environment: const <String, String>{ environment: const <String, String>{
...@@ -405,6 +406,7 @@ void main() { ...@@ -405,6 +406,7 @@ void main() {
verboseSystemLogs: true, verboseSystemLogs: true,
nullAssertions: true, nullAssertions: true,
enableImpeller: true, enableImpeller: true,
enableEmbedderApi: true,
), ),
platformArgs: <String, dynamic>{}, platformArgs: <String, dynamic>{},
); );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment