[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 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(
stringArg(FlutterOptions.kWebRendererFlag),
useWasm: useWasm
@ -287,7 +274,6 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
webHeaders: webHeaders,
webRenderer: webRenderer,
webUseWasm: useWasm,
webUseLocalCanvaskit: useLocalCanvasKit,
enableImpeller: enableImpeller,
enableVulkanValidation: enableVulkanValidation,
uninstallFirst: uninstallFirst,
@ -339,7 +325,6 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
webHeaders: webHeaders,
webRenderer: webRenderer,
webUseWasm: useWasm,
webUseLocalCanvaskit: useLocalCanvasKit,
vmserviceOutFile: stringArg('vmservice-out-file'),
fastStart: argParser.options.containsKey('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 String? tags = stringArg('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;
if (verbose) {
@ -414,7 +417,6 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts {
webRenderer: webRenderer,
printDtd: boolArg(FlutterGlobalOptions.kPrintDtd, global: true),
webUseWasm: useWasm,
webUseLocalCanvaskit: true,
);
String? testAssetDirectory;

View File

@ -994,7 +994,6 @@ class DebuggingOptions {
this.webLaunchUrl,
WebRendererMode? webRenderer,
this.webUseWasm = false,
this.webUseLocalCanvaskit = false,
this.vmserviceOutFile,
this.fastStart = false,
this.nullAssertions = false,
@ -1031,7 +1030,6 @@ class DebuggingOptions {
this.webHeaders = const <String, String>{},
WebRendererMode? webRenderer,
this.webUseWasm = false,
this.webUseLocalCanvaskit = false,
this.cacheSkSL = false,
this.traceAllowlist,
this.enableImpeller = ImpellerStatus.platformDefault,
@ -1118,7 +1116,6 @@ class DebuggingOptions {
required this.webLaunchUrl,
required this.webRenderer,
required this.webUseWasm,
required this.webUseLocalCanvaskit,
required this.vmserviceOutFile,
required this.fastStart,
required this.nullAssertions,
@ -1217,9 +1214,6 @@ class DebuggingOptions {
/// Whether to compile to webassembly
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.
final String? vmserviceOutFile;
final bool fastStart;
@ -1329,7 +1323,6 @@ class DebuggingOptions {
'webHeaders': webHeaders,
'webRenderer': webRenderer.name,
'webUseWasm': webUseWasm,
'webUseLocalCanvaskit': webUseLocalCanvaskit,
'vmserviceOutFile': vmserviceOutFile,
'fastStart': fastStart,
'nullAssertions': nullAssertions,
@ -1345,6 +1338,10 @@ class DebuggingOptions {
'ipv6': ipv6,
'google3WorkspaceRoot': google3WorkspaceRoot,
'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) =>
@ -1391,7 +1388,6 @@ class DebuggingOptions {
webLaunchUrl: json['webLaunchUrl'] as String?,
webRenderer: WebRendererMode.values.byName(json['webRenderer']! as String),
webUseWasm: json['webUseWasm']! as bool,
webUseLocalCanvaskit: json['webUseLocalCanvaskit']! as bool,
vmserviceOutFile: json['vmserviceOutFile'] as String?,
fastStart: json['fastStart']! as bool,
nullAssertions: json['nullAssertions']! as bool,

View File

@ -78,7 +78,6 @@ class WebDriverService extends DriverService {
hostname: debuggingOptions.hostname,
webRenderer: debuggingOptions.webRenderer,
webUseWasm: debuggingOptions.webUseWasm,
webUseLocalCanvaskit: debuggingOptions.webUseLocalCanvaskit,
)
: DebuggingOptions.enabled(
buildInfo,
@ -87,7 +86,6 @@ class WebDriverService extends DriverService {
disablePortPublication: debuggingOptions.disablePortPublication,
webRenderer: debuggingOptions.webRenderer,
webUseWasm: debuggingOptions.webUseWasm,
webUseLocalCanvaskit: debuggingOptions.webUseLocalCanvaskit,
),
stayResident: true,
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,
webRenderer: debuggingOptions.webRenderer,
isWasm: debuggingOptions.webUseWasm,
useLocalCanvasKit: debuggingOptions.webUseLocalCanvaskit,
useLocalCanvasKit: debuggingOptions.buildInfo.useLocalCanvasKit,
rootDirectory: fileSystem.directory(projectRootPath),
);
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
/// 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') &&
boolArg('track-widget-creation');
@ -1308,9 +1312,12 @@ abstract class FlutterCommand extends Command<void> {
final bool useCdn = !argParser.options.containsKey(FlutterOptions.kWebResourcesCdnFlag)
|| boolArg(FlutterOptions.kWebResourcesCdnFlag);
final bool useLocalWebSdk = argParser.options.containsKey(FlutterGlobalOptions.kLocalWebSDKOption)
&& stringArg(FlutterGlobalOptions.kLocalWebSDKOption, global: true) != null;
final bool useLocalCanvasKit = !useCdn || useLocalWebSdk;
bool useLocalWebSdk = false;
if (globalResults?.wasParsed(FlutterGlobalOptions.kLocalWebSDKOption) ?? false) {
useLocalWebSdk = stringArg(FlutterGlobalOptions.kLocalWebSDKOption, global: true) != null;
}
final bool useLocalCanvasKit = forcedUseLocalCanvasKit
?? (!useCdn || useLocalWebSdk);
final String? defaultFlavor = project.manifest.defaultFlavor;
final String? cliFlavor = argParser.options.containsKey('flavor') ? stringArg('flavor') : null;

View File

@ -1459,7 +1459,7 @@ class TestRunCommandForUsageValues extends RunCommand {
}
@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');
}
}

View File

@ -700,6 +700,18 @@ void main() {
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 {
final FakeDdsCommand ddsCommand = FakeDdsCommand();
final CommandRunner<void> runner = createTestCommandRunner(ddsCommand);