[web] Fix reading of the --local-web-sdk flag and remove the copy of useLocalWebSdk in DebuggingOptions (#152642)

This commit is contained in:
Jason Simmons 2024-08-08 09:27:21 -07:00 committed by GitHub
parent 14cd5fa30a
commit d23be7a07d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 33 additions and 33 deletions

View File

@ -235,19 +235,6 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
bool get useWasm => boolArg(FlutterOptions.kWebWasmFlag); bool get useWasm => boolArg(FlutterOptions.kWebWasmFlag);
bool get useLocalCanvasKit {
// If we have specified not to use CDN, use local CanvasKit
if (!boolArg(FlutterOptions.kWebResourcesCdnFlag)) {
return true;
}
// If we are using a locally built web sdk, we should use local CanvasKit
if (stringArg(FlutterGlobalOptions.kLocalWebSDKOption, global: true) != null) {
return true;
}
return false;
}
WebRendererMode get webRenderer => WebRendererMode.fromCliOption( WebRendererMode get webRenderer => WebRendererMode.fromCliOption(
stringArg(FlutterOptions.kWebRendererFlag), stringArg(FlutterOptions.kWebRendererFlag),
useWasm: useWasm useWasm: useWasm
@ -287,7 +274,6 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
webHeaders: webHeaders, webHeaders: webHeaders,
webRenderer: webRenderer, webRenderer: webRenderer,
webUseWasm: useWasm, webUseWasm: useWasm,
webUseLocalCanvaskit: useLocalCanvasKit,
enableImpeller: enableImpeller, enableImpeller: enableImpeller,
enableVulkanValidation: enableVulkanValidation, enableVulkanValidation: enableVulkanValidation,
uninstallFirst: uninstallFirst, uninstallFirst: uninstallFirst,
@ -339,7 +325,6 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
webHeaders: webHeaders, webHeaders: webHeaders,
webRenderer: webRenderer, webRenderer: webRenderer,
webUseWasm: useWasm, webUseWasm: useWasm,
webUseLocalCanvaskit: useLocalCanvasKit,
vmserviceOutFile: stringArg('vmservice-out-file'), vmserviceOutFile: stringArg('vmservice-out-file'),
fastStart: argParser.options.containsKey('fast-start') fastStart: argParser.options.containsKey('fast-start')
&& boolArg('fast-start') && boolArg('fast-start')

View File

@ -356,7 +356,10 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts {
final List<String> plainNames = stringsArg('plain-name'); final List<String> plainNames = stringsArg('plain-name');
final String? tags = stringArg('tags'); final String? tags = stringArg('tags');
final String? excludeTags = stringArg('exclude-tags'); final String? excludeTags = stringArg('exclude-tags');
final BuildInfo buildInfo = await getBuildInfo(forcedBuildMode: BuildMode.debug); final BuildInfo buildInfo = await getBuildInfo(
forcedBuildMode: BuildMode.debug,
forcedUseLocalCanvasKit: true
);
TestTimeRecorder? testTimeRecorder; TestTimeRecorder? testTimeRecorder;
if (verbose) { if (verbose) {
@ -414,7 +417,6 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts {
webRenderer: webRenderer, webRenderer: webRenderer,
printDtd: boolArg(FlutterGlobalOptions.kPrintDtd, global: true), printDtd: boolArg(FlutterGlobalOptions.kPrintDtd, global: true),
webUseWasm: useWasm, webUseWasm: useWasm,
webUseLocalCanvaskit: true,
); );
String? testAssetDirectory; String? testAssetDirectory;

View File

@ -994,7 +994,6 @@ class DebuggingOptions {
this.webLaunchUrl, this.webLaunchUrl,
WebRendererMode? webRenderer, WebRendererMode? webRenderer,
this.webUseWasm = false, this.webUseWasm = false,
this.webUseLocalCanvaskit = false,
this.vmserviceOutFile, this.vmserviceOutFile,
this.fastStart = false, this.fastStart = false,
this.nullAssertions = false, this.nullAssertions = false,
@ -1031,7 +1030,6 @@ class DebuggingOptions {
this.webHeaders = const <String, String>{}, this.webHeaders = const <String, String>{},
WebRendererMode? webRenderer, WebRendererMode? webRenderer,
this.webUseWasm = false, this.webUseWasm = false,
this.webUseLocalCanvaskit = false,
this.cacheSkSL = false, this.cacheSkSL = false,
this.traceAllowlist, this.traceAllowlist,
this.enableImpeller = ImpellerStatus.platformDefault, this.enableImpeller = ImpellerStatus.platformDefault,
@ -1118,7 +1116,6 @@ class DebuggingOptions {
required this.webLaunchUrl, required this.webLaunchUrl,
required this.webRenderer, required this.webRenderer,
required this.webUseWasm, required this.webUseWasm,
required this.webUseLocalCanvaskit,
required this.vmserviceOutFile, required this.vmserviceOutFile,
required this.fastStart, required this.fastStart,
required this.nullAssertions, required this.nullAssertions,
@ -1217,9 +1214,6 @@ class DebuggingOptions {
/// Whether to compile to webassembly /// Whether to compile to webassembly
final bool webUseWasm; final bool webUseWasm;
/// If true, serve CanvasKit assets locally rather than using the CDN.
final bool webUseLocalCanvaskit;
/// A file where the VM Service URL should be written after the application is started. /// A file where the VM Service URL should be written after the application is started.
final String? vmserviceOutFile; final String? vmserviceOutFile;
final bool fastStart; final bool fastStart;
@ -1329,7 +1323,6 @@ class DebuggingOptions {
'webHeaders': webHeaders, 'webHeaders': webHeaders,
'webRenderer': webRenderer.name, 'webRenderer': webRenderer.name,
'webUseWasm': webUseWasm, 'webUseWasm': webUseWasm,
'webUseLocalCanvaskit': webUseLocalCanvaskit,
'vmserviceOutFile': vmserviceOutFile, 'vmserviceOutFile': vmserviceOutFile,
'fastStart': fastStart, 'fastStart': fastStart,
'nullAssertions': nullAssertions, 'nullAssertions': nullAssertions,
@ -1345,6 +1338,10 @@ class DebuggingOptions {
'ipv6': ipv6, 'ipv6': ipv6,
'google3WorkspaceRoot': google3WorkspaceRoot, 'google3WorkspaceRoot': google3WorkspaceRoot,
'printDtd': printDtd, 'printDtd': printDtd,
// TODO(jsimmons): This field is required for backward compatibility with
// the flutter_tools binary that is currently checked into Google3.
// Remove this when that binary has been updated.
'webUseLocalCanvaskit': false,
}; };
static DebuggingOptions fromJson(Map<String, Object?> json, BuildInfo buildInfo) => static DebuggingOptions fromJson(Map<String, Object?> json, BuildInfo buildInfo) =>
@ -1391,7 +1388,6 @@ class DebuggingOptions {
webLaunchUrl: json['webLaunchUrl'] as String?, webLaunchUrl: json['webLaunchUrl'] as String?,
webRenderer: WebRendererMode.values.byName(json['webRenderer']! as String), webRenderer: WebRendererMode.values.byName(json['webRenderer']! as String),
webUseWasm: json['webUseWasm']! as bool, webUseWasm: json['webUseWasm']! as bool,
webUseLocalCanvaskit: json['webUseLocalCanvaskit']! as bool,
vmserviceOutFile: json['vmserviceOutFile'] as String?, vmserviceOutFile: json['vmserviceOutFile'] as String?,
fastStart: json['fastStart']! as bool, fastStart: json['fastStart']! as bool,
nullAssertions: json['nullAssertions']! as bool, nullAssertions: json['nullAssertions']! as bool,

View File

@ -78,7 +78,6 @@ class WebDriverService extends DriverService {
hostname: debuggingOptions.hostname, hostname: debuggingOptions.hostname,
webRenderer: debuggingOptions.webRenderer, webRenderer: debuggingOptions.webRenderer,
webUseWasm: debuggingOptions.webUseWasm, webUseWasm: debuggingOptions.webUseWasm,
webUseLocalCanvaskit: debuggingOptions.webUseLocalCanvaskit,
) )
: DebuggingOptions.enabled( : DebuggingOptions.enabled(
buildInfo, buildInfo,
@ -87,7 +86,6 @@ class WebDriverService extends DriverService {
disablePortPublication: debuggingOptions.disablePortPublication, disablePortPublication: debuggingOptions.disablePortPublication,
webRenderer: debuggingOptions.webRenderer, webRenderer: debuggingOptions.webRenderer,
webUseWasm: debuggingOptions.webUseWasm, webUseWasm: debuggingOptions.webUseWasm,
webUseLocalCanvaskit: debuggingOptions.webUseLocalCanvaskit,
), ),
stayResident: true, stayResident: true,
flutterProject: FlutterProject.current(), flutterProject: FlutterProject.current(),

View File

@ -319,7 +319,7 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive).
ddcModuleSystem: debuggingOptions.buildInfo.ddcModuleFormat == DdcModuleFormat.ddc, ddcModuleSystem: debuggingOptions.buildInfo.ddcModuleFormat == DdcModuleFormat.ddc,
webRenderer: debuggingOptions.webRenderer, webRenderer: debuggingOptions.webRenderer,
isWasm: debuggingOptions.webUseWasm, isWasm: debuggingOptions.webUseWasm,
useLocalCanvasKit: debuggingOptions.webUseLocalCanvaskit, useLocalCanvasKit: debuggingOptions.buildInfo.useLocalCanvasKit,
rootDirectory: fileSystem.directory(projectRootPath), rootDirectory: fileSystem.directory(projectRootPath),
); );
Uri url = await device!.devFS!.create(); Uri url = await device!.devFS!.create();

View File

@ -1191,7 +1191,11 @@ abstract class FlutterCommand extends Command<void> {
/// ///
/// Throws a [ToolExit] if the current set of options is not compatible with /// Throws a [ToolExit] if the current set of options is not compatible with
/// each other. /// each other.
Future<BuildInfo> getBuildInfo({BuildMode? forcedBuildMode, File? forcedTargetFile}) async { Future<BuildInfo> getBuildInfo({
BuildMode? forcedBuildMode,
File? forcedTargetFile,
bool? forcedUseLocalCanvasKit,
}) async {
final bool trackWidgetCreation = argParser.options.containsKey('track-widget-creation') && final bool trackWidgetCreation = argParser.options.containsKey('track-widget-creation') &&
boolArg('track-widget-creation'); boolArg('track-widget-creation');
@ -1308,9 +1312,12 @@ abstract class FlutterCommand extends Command<void> {
final bool useCdn = !argParser.options.containsKey(FlutterOptions.kWebResourcesCdnFlag) final bool useCdn = !argParser.options.containsKey(FlutterOptions.kWebResourcesCdnFlag)
|| boolArg(FlutterOptions.kWebResourcesCdnFlag); || boolArg(FlutterOptions.kWebResourcesCdnFlag);
final bool useLocalWebSdk = argParser.options.containsKey(FlutterGlobalOptions.kLocalWebSDKOption) bool useLocalWebSdk = false;
&& stringArg(FlutterGlobalOptions.kLocalWebSDKOption, global: true) != null; if (globalResults?.wasParsed(FlutterGlobalOptions.kLocalWebSDKOption) ?? false) {
final bool useLocalCanvasKit = !useCdn || useLocalWebSdk; useLocalWebSdk = stringArg(FlutterGlobalOptions.kLocalWebSDKOption, global: true) != null;
}
final bool useLocalCanvasKit = forcedUseLocalCanvasKit
?? (!useCdn || useLocalWebSdk);
final String? defaultFlavor = project.manifest.defaultFlavor; final String? defaultFlavor = project.manifest.defaultFlavor;
final String? cliFlavor = argParser.options.containsKey('flavor') ? stringArg('flavor') : null; final String? cliFlavor = argParser.options.containsKey('flavor') ? stringArg('flavor') : null;

View File

@ -1459,7 +1459,7 @@ class TestRunCommandForUsageValues extends RunCommand {
} }
@override @override
Future<BuildInfo> getBuildInfo({FlutterProject? project, BuildMode? forcedBuildMode, File? forcedTargetFile}) async { Future<BuildInfo> getBuildInfo({FlutterProject? project, BuildMode? forcedBuildMode, File? forcedTargetFile, bool? forcedUseLocalCanvasKit}) async {
return const BuildInfo(BuildMode.debug, null, treeShakeIcons: false, packageConfigPath: '.dart_tool/package_config.json'); return const BuildInfo(BuildMode.debug, null, treeShakeIcons: false, packageConfigPath: '.dart_tool/package_config.json');
} }
} }

View File

@ -700,6 +700,18 @@ void main() {
ProcessManager: () => processManager, ProcessManager: () => processManager,
}); });
testUsingContext('sets useLocalCanvasKit in BuildInfo', () async {
final DummyFlutterCommand flutterCommand = DummyFlutterCommand();
final CommandRunner<void> runner = createTestCommandRunner(flutterCommand);
fileSystem.directory('engine/src/out/wasm_release').createSync(recursive: true);
await runner.run(<String>['--local-web-sdk=wasm_release', '--local-engine-src-path=engine/src', 'dummy']);
final BuildInfo buildInfo = await flutterCommand.getBuildInfo(forcedBuildMode: BuildMode.debug);
expect(buildInfo.useLocalCanvasKit, isTrue);
}, overrides: <Type, Generator>{
FileSystem: () => fileSystem,
ProcessManager: () => processManager,
});
testUsingContext('dds options', () async { testUsingContext('dds options', () async {
final FakeDdsCommand ddsCommand = FakeDdsCommand(); final FakeDdsCommand ddsCommand = FakeDdsCommand();
final CommandRunner<void> runner = createTestCommandRunner(ddsCommand); final CommandRunner<void> runner = createTestCommandRunner(ddsCommand);