Unverified Commit 8230ef5e authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

Revert "[web] Add `--local-web-sdk` flag and use precompiled platform kernels...

Revert "[web] Add `--local-web-sdk` flag and use precompiled platform kernels for dart2js and ddc (#114639)" (#115242)

This reverts commit 0e9ee367.
parent 1a460cfb
...@@ -277,22 +277,22 @@ class AndroidGradleBuilder implements AndroidBuilder { ...@@ -277,22 +277,22 @@ class AndroidGradleBuilder implements AndroidBuilder {
if (!buildInfo.androidGradleDaemon) { if (!buildInfo.androidGradleDaemon) {
command.add('--no-daemon'); command.add('--no-daemon');
} }
final LocalEngineInfo? localEngineInfo = _artifacts.localEngineInfo; if (_artifacts is LocalEngineArtifacts) {
if (localEngineInfo != null) { final LocalEngineArtifacts localEngineArtifacts = _artifacts as LocalEngineArtifacts;
final Directory localEngineRepo = _getLocalEngineRepo( final Directory localEngineRepo = _getLocalEngineRepo(
engineOutPath: localEngineInfo.engineOutPath, engineOutPath: localEngineArtifacts.engineOutPath,
androidBuildInfo: androidBuildInfo, androidBuildInfo: androidBuildInfo,
fileSystem: _fileSystem, fileSystem: _fileSystem,
); );
_logger.printTrace( _logger.printTrace(
'Using local engine: ${localEngineInfo.engineOutPath}\n' 'Using local engine: ${localEngineArtifacts.engineOutPath}\n'
'Local Maven repo: ${localEngineRepo.path}' 'Local Maven repo: ${localEngineRepo.path}'
); );
command.add('-Plocal-engine-repo=${localEngineRepo.path}'); command.add('-Plocal-engine-repo=${localEngineRepo.path}');
command.add('-Plocal-engine-build-mode=${buildInfo.modeName}'); command.add('-Plocal-engine-build-mode=${buildInfo.modeName}');
command.add('-Plocal-engine-out=${localEngineInfo.engineOutPath}'); command.add('-Plocal-engine-out=${localEngineArtifacts.engineOutPath}');
command.add('-Ptarget-platform=${_getTargetPlatformByLocalEnginePath( command.add('-Ptarget-platform=${_getTargetPlatformByLocalEnginePath(
localEngineInfo.engineOutPath)}'); localEngineArtifacts.engineOutPath)}');
} else if (androidBuildInfo.targetArchs.isNotEmpty) { } else if (androidBuildInfo.targetArchs.isNotEmpty) {
final String targetPlatforms = androidBuildInfo final String targetPlatforms = androidBuildInfo
.targetArchs .targetArchs
...@@ -611,20 +611,20 @@ class AndroidGradleBuilder implements AndroidBuilder { ...@@ -611,20 +611,20 @@ class AndroidGradleBuilder implements AndroidBuilder {
); );
} }
final LocalEngineInfo? localEngineInfo = _artifacts.localEngineInfo; if (_artifacts is LocalEngineArtifacts) {
if (localEngineInfo != null) { final LocalEngineArtifacts localEngineArtifacts = _artifacts as LocalEngineArtifacts;
final Directory localEngineRepo = _getLocalEngineRepo( final Directory localEngineRepo = _getLocalEngineRepo(
engineOutPath: localEngineInfo.engineOutPath, engineOutPath: localEngineArtifacts.engineOutPath,
androidBuildInfo: androidBuildInfo, androidBuildInfo: androidBuildInfo,
fileSystem: _fileSystem, fileSystem: _fileSystem,
); );
_logger.printTrace( _logger.printTrace(
'Using local engine: ${localEngineInfo.engineOutPath}\n' 'Using local engine: ${localEngineArtifacts.engineOutPath}\n'
'Local Maven repo: ${localEngineRepo.path}' 'Local Maven repo: ${localEngineRepo.path}'
); );
command.add('-Plocal-engine-repo=${localEngineRepo.path}'); command.add('-Plocal-engine-repo=${localEngineRepo.path}');
command.add('-Plocal-engine-build-mode=${buildInfo.modeName}'); command.add('-Plocal-engine-build-mode=${buildInfo.modeName}');
command.add('-Plocal-engine-out=${localEngineInfo.engineOutPath}'); command.add('-Plocal-engine-out=${localEngineArtifacts.engineOutPath}');
// Copy the local engine repo in the output directory. // Copy the local engine repo in the output directory.
try { try {
...@@ -639,7 +639,7 @@ class AndroidGradleBuilder implements AndroidBuilder { ...@@ -639,7 +639,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
); );
} }
command.add('-Ptarget-platform=${_getTargetPlatformByLocalEnginePath( command.add('-Ptarget-platform=${_getTargetPlatformByLocalEnginePath(
localEngineInfo.engineOutPath)}'); localEngineArtifacts.engineOutPath)}');
} else if (androidBuildInfo.targetArchs.isNotEmpty) { } else if (androidBuildInfo.targetArchs.isNotEmpty) {
final String targetPlatforms = androidBuildInfo.targetArchs final String targetPlatforms = androidBuildInfo.targetArchs
.map(getPlatformNameForAndroidArch).join(','); .map(getPlatformNameForAndroidArch).join(',');
......
...@@ -310,12 +310,10 @@ class UserMessages { ...@@ -310,12 +310,10 @@ class UserMessages {
'Unable to detect a Flutter engine build directory in $engineSourcePath.\n' 'Unable to detect a Flutter engine build directory in $engineSourcePath.\n'
"Please ensure that $engineSourcePath is a Flutter engine 'src' directory and that " "Please ensure that $engineSourcePath is a Flutter engine 'src' directory and that "
"you have compiled the engine in that directory, which should produce an 'out' directory"; "you have compiled the engine in that directory, which should produce an 'out' directory";
String get runnerLocalEngineOrWebSdkRequired => String get runnerLocalEngineRequired =>
'You must specify --local-engine or --local-web-sdk if you are using a locally built engine or web sdk.'; 'You must specify --local-engine if you are using a locally built engine.';
String runnerNoEngineBuild(String engineBuildPath) => String runnerNoEngineBuild(String engineBuildPath) =>
'No Flutter engine build found at $engineBuildPath.'; 'No Flutter engine build found at $engineBuildPath.';
String runnerNoWebSdk(String webSdkPath) =>
'No Flutter web sdk found at $webSdkPath.';
String runnerWrongFlutterInstance(String flutterRoot, String currentDir) => String runnerWrongFlutterInstance(String flutterRoot, String currentDir) =>
"Warning: the 'flutter' tool you are currently running is not the one from the current directory:\n" "Warning: the 'flutter' tool you are currently running is not the one from the current directory:\n"
' running Flutter : $flutterRoot\n' ' running Flutter : $flutterRoot\n'
......
...@@ -13,7 +13,6 @@ import 'base/os.dart'; ...@@ -13,7 +13,6 @@ import 'base/os.dart';
import 'base/utils.dart'; import 'base/utils.dart';
import 'convert.dart'; import 'convert.dart';
import 'globals.dart' as globals; import 'globals.dart' as globals;
import 'web/compile.dart';
/// Whether icon font subsetting is enabled by default. /// Whether icon font subsetting is enabled by default.
const bool kIconTreeShakerEnabledDefault = true; const bool kIconTreeShakerEnabledDefault = true;
...@@ -36,7 +35,6 @@ class BuildInfo { ...@@ -36,7 +35,6 @@ class BuildInfo {
List<String>? dartDefines, List<String>? dartDefines,
this.bundleSkSLPath, this.bundleSkSLPath,
List<String>? dartExperiments, List<String>? dartExperiments,
this.webRenderer = WebRendererMode.autoDetect,
required this.treeShakeIcons, required this.treeShakeIcons,
this.performanceMeasurementFile, this.performanceMeasurementFile,
this.dartDefineConfigJsonMap, this.dartDefineConfigJsonMap,
...@@ -126,9 +124,6 @@ class BuildInfo { ...@@ -126,9 +124,6 @@ class BuildInfo {
/// A list of Dart experiments. /// A list of Dart experiments.
final List<String> dartExperiments; final List<String> dartExperiments;
/// When compiling to web, which web renderer mode we are using (html, canvaskit, auto)
final WebRendererMode webRenderer;
/// The name of a file where flutter assemble will output performance /// The name of a file where flutter assemble will output performance
/// information in a JSON format. /// information in a JSON format.
/// ///
...@@ -611,9 +606,8 @@ List<DarwinArch> defaultIOSArchsForEnvironment( ...@@ -611,9 +606,8 @@ List<DarwinArch> defaultIOSArchsForEnvironment(
Artifacts artifacts, Artifacts artifacts,
) { ) {
// Handle single-arch local engines. // Handle single-arch local engines.
final LocalEngineInfo? localEngineInfo = artifacts.localEngineInfo; if (artifacts is LocalEngineArtifacts) {
if (localEngineInfo != null) { final String localEngineName = artifacts.localEngineName;
final String localEngineName = localEngineInfo.localEngineName;
if (localEngineName.contains('_arm64')) { if (localEngineName.contains('_arm64')) {
return <DarwinArch>[ DarwinArch.arm64 ]; return <DarwinArch>[ DarwinArch.arm64 ];
} }
...@@ -634,9 +628,8 @@ List<DarwinArch> defaultIOSArchsForEnvironment( ...@@ -634,9 +628,8 @@ List<DarwinArch> defaultIOSArchsForEnvironment(
/// The default set of macOS device architectures to build for. /// The default set of macOS device architectures to build for.
List<DarwinArch> defaultMacOSArchsForEnvironment(Artifacts artifacts) { List<DarwinArch> defaultMacOSArchsForEnvironment(Artifacts artifacts) {
// Handle single-arch local engines. // Handle single-arch local engines.
final LocalEngineInfo? localEngineInfo = artifacts.localEngineInfo; if (artifacts is LocalEngineArtifacts) {
if (localEngineInfo != null) { if (artifacts.localEngineName.contains('_arm64')) {
if (localEngineInfo.localEngineName.contains('_arm64')) {
return <DarwinArch>[ DarwinArch.arm64 ]; return <DarwinArch>[ DarwinArch.arm64 ];
} }
return <DarwinArch>[ DarwinArch.x86_64 ]; return <DarwinArch>[ DarwinArch.x86_64 ];
...@@ -862,17 +855,6 @@ HostPlatform getCurrentHostPlatform() { ...@@ -862,17 +855,6 @@ HostPlatform getCurrentHostPlatform() {
return HostPlatform.linux_x64; return HostPlatform.linux_x64;
} }
FileSystemEntity getWebPlatformBinariesDirectory(Artifacts artifacts, WebRendererMode webRenderer) {
switch (webRenderer) {
case WebRendererMode.autoDetect:
return artifacts.getHostArtifact(HostArtifact.webPlatformAutoDillDirectory);
case WebRendererMode.canvaskit:
return artifacts.getHostArtifact(HostArtifact.webPlatformCanvasKitDillDirectory);
case WebRendererMode.html:
return artifacts.getHostArtifact(HostArtifact.webPlatformHtmlDillDirectory);
}
}
/// Returns the top-level build output directory. /// Returns the top-level build output directory.
String getBuildDirectory([Config? config, FileSystem? fileSystem]) { String getBuildDirectory([Config? config, FileSystem? fileSystem]) {
// TODO(johnmccutchan): Stop calling this function as part of setting // TODO(johnmccutchan): Stop calling this function as part of setting
......
...@@ -18,7 +18,6 @@ import '../../dart/package_map.dart'; ...@@ -18,7 +18,6 @@ import '../../dart/package_map.dart';
import '../../flutter_plugins.dart'; import '../../flutter_plugins.dart';
import '../../globals.dart' as globals; import '../../globals.dart' as globals;
import '../../project.dart'; import '../../project.dart';
import '../../web/compile.dart';
import '../../web/file_generators/flutter_js.dart' as flutter_js; import '../../web/file_generators/flutter_js.dart' as flutter_js;
import '../../web/file_generators/flutter_service_worker_js.dart'; import '../../web/file_generators/flutter_service_worker_js.dart';
import '../../web/file_generators/main_dart.dart' as main_dart; import '../../web/file_generators/main_dart.dart' as main_dart;
...@@ -136,9 +135,7 @@ class WebEntrypointTarget extends Target { ...@@ -136,9 +135,7 @@ class WebEntrypointTarget extends Target {
/// Compiles a web entry point with dart2js. /// Compiles a web entry point with dart2js.
class Dart2JSTarget extends Target { class Dart2JSTarget extends Target {
const Dart2JSTarget(this.webRenderer); const Dart2JSTarget();
final WebRendererMode webRenderer;
@override @override
String get name => 'dart2js'; String get name => 'dart2js';
...@@ -186,12 +183,12 @@ class Dart2JSTarget extends Target { ...@@ -186,12 +183,12 @@ class Dart2JSTarget extends Target {
final bool sourceMapsEnabled = environment.defines[kSourceMapsEnabled] == 'true'; final bool sourceMapsEnabled = environment.defines[kSourceMapsEnabled] == 'true';
final bool nativeNullAssertions = environment.defines[kNativeNullAssertions] == 'true'; final bool nativeNullAssertions = environment.defines[kNativeNullAssertions] == 'true';
final Artifacts artifacts = globals.artifacts!; final Artifacts artifacts = globals.artifacts!;
final String platformBinariesPath = getWebPlatformBinariesDirectory(artifacts, webRenderer).path; final String librariesSpec = (artifacts.getHostArtifact(HostArtifact.flutterWebSdk) as Directory).childFile('libraries.json').path;
final List<String> sharedCommandOptions = <String>[ final List<String> sharedCommandOptions = <String>[
artifacts.getHostArtifact(HostArtifact.engineDartBinary).path, artifacts.getHostArtifact(HostArtifact.engineDartBinary).path,
'--disable-dart-dev', '--disable-dart-dev',
artifacts.getHostArtifact(HostArtifact.dart2jsSnapshot).path, artifacts.getHostArtifact(HostArtifact.dart2jsSnapshot).path,
'--platform-binaries=$platformBinariesPath', '--libraries-spec=$librariesSpec',
...decodeCommaSeparated(environment.defines, kExtraFrontEndOptions), ...decodeCommaSeparated(environment.defines, kExtraFrontEndOptions),
if (nativeNullAssertions) if (nativeNullAssertions)
'--native-null-assertions', '--native-null-assertions',
...@@ -259,16 +256,14 @@ class Dart2JSTarget extends Target { ...@@ -259,16 +256,14 @@ class Dart2JSTarget extends Target {
/// Unpacks the dart2js compilation and resources to a given output directory. /// Unpacks the dart2js compilation and resources to a given output directory.
class WebReleaseBundle extends Target { class WebReleaseBundle extends Target {
const WebReleaseBundle(this.webRenderer); const WebReleaseBundle();
final WebRendererMode webRenderer;
@override @override
String get name => 'web_release_bundle'; String get name => 'web_release_bundle';
@override @override
List<Target> get dependencies => <Target>[ List<Target> get dependencies => const <Target>[
Dart2JSTarget(webRenderer), Dart2JSTarget(),
]; ];
@override @override
...@@ -446,19 +441,18 @@ class WebBuiltInAssets extends Target { ...@@ -446,19 +441,18 @@ class WebBuiltInAssets extends Target {
/// Generate a service worker for a web target. /// Generate a service worker for a web target.
class WebServiceWorker extends Target { class WebServiceWorker extends Target {
const WebServiceWorker(this.fileSystem, this.cache, this.webRenderer); const WebServiceWorker(this.fileSystem, this.cache);
final FileSystem fileSystem; final FileSystem fileSystem;
final Cache cache; final Cache cache;
final WebRendererMode webRenderer;
@override @override
String get name => 'web_service_worker'; String get name => 'web_service_worker';
@override @override
List<Target> get dependencies => <Target>[ List<Target> get dependencies => <Target>[
Dart2JSTarget(webRenderer), const Dart2JSTarget(),
WebReleaseBundle(webRenderer), const WebReleaseBundle(),
WebBuiltInAssets(fileSystem, cache), WebBuiltInAssets(fileSystem, cache),
]; ];
......
...@@ -18,6 +18,7 @@ import '../build_system/targets/deferred_components.dart'; ...@@ -18,6 +18,7 @@ import '../build_system/targets/deferred_components.dart';
import '../build_system/targets/ios.dart'; import '../build_system/targets/ios.dart';
import '../build_system/targets/linux.dart'; import '../build_system/targets/linux.dart';
import '../build_system/targets/macos.dart'; import '../build_system/targets/macos.dart';
import '../build_system/targets/web.dart';
import '../build_system/targets/windows.dart'; import '../build_system/targets/windows.dart';
import '../cache.dart'; import '../cache.dart';
import '../convert.dart'; import '../convert.dart';
...@@ -47,6 +48,8 @@ List<Target> _kDefaultTargets = <Target>[ ...@@ -47,6 +48,8 @@ List<Target> _kDefaultTargets = <Target>[
const ProfileBundleLinuxAssets(TargetPlatform.linux_arm64), const ProfileBundleLinuxAssets(TargetPlatform.linux_arm64),
const ReleaseBundleLinuxAssets(TargetPlatform.linux_x64), const ReleaseBundleLinuxAssets(TargetPlatform.linux_x64),
const ReleaseBundleLinuxAssets(TargetPlatform.linux_arm64), const ReleaseBundleLinuxAssets(TargetPlatform.linux_arm64),
// Web targets
WebServiceWorker(globals.fs, globals.cache),
const ReleaseAndroidApplication(), const ReleaseAndroidApplication(),
// This is a one-off rule for bundle and aot compat. // This is a one-off rule for bundle and aot compat.
const CopyFlutterBundle(), const CopyFlutterBundle(),
......
...@@ -741,8 +741,7 @@ class DefaultResidentCompiler implements ResidentCompiler { ...@@ -741,8 +741,7 @@ class DefaultResidentCompiler implements ResidentCompiler {
{String? additionalSourceUri} {String? additionalSourceUri}
) async { ) async {
final String frontendServer = _artifacts.getArtifactPath( final String frontendServer = _artifacts.getArtifactPath(
Artifact.frontendServerSnapshotForEngineDartSdk, Artifact.frontendServerSnapshotForEngineDartSdk
platform: (targetModel == TargetModel.dartdevc) ? TargetPlatform.web_javascript : null,
); );
final List<String> command = <String>[ final List<String> command = <String>[
_artifacts.getHostArtifact(HostArtifact.engineDartBinary).path, _artifacts.getHostArtifact(HostArtifact.engineDartBinary).path,
......
...@@ -170,12 +170,13 @@ Future<List<String>> _xcodeBuildSettingsLines({ ...@@ -170,12 +170,13 @@ Future<List<String>> _xcodeBuildSettingsLines({
final String buildNumber = parsedBuildNumber(manifest: project.manifest, buildInfo: buildInfo) ?? '1'; final String buildNumber = parsedBuildNumber(manifest: project.manifest, buildInfo: buildInfo) ?? '1';
xcodeBuildSettings.add('FLUTTER_BUILD_NUMBER=$buildNumber'); xcodeBuildSettings.add('FLUTTER_BUILD_NUMBER=$buildNumber');
final LocalEngineInfo? localEngineInfo = globals.artifacts?.localEngineInfo; final Artifacts? artifacts = globals.artifacts;
if (localEngineInfo != null) { if (artifacts is LocalEngineArtifacts) {
final String engineOutPath = localEngineInfo.engineOutPath; final LocalEngineArtifacts localEngineArtifacts = artifacts;
final String engineOutPath = localEngineArtifacts.engineOutPath;
xcodeBuildSettings.add('FLUTTER_ENGINE=${globals.fs.path.dirname(globals.fs.path.dirname(engineOutPath))}'); xcodeBuildSettings.add('FLUTTER_ENGINE=${globals.fs.path.dirname(globals.fs.path.dirname(engineOutPath))}');
final String localEngineName = localEngineInfo.localEngineName; final String localEngineName = localEngineArtifacts.localEngineName;
xcodeBuildSettings.add('LOCAL_ENGINE=$localEngineName'); xcodeBuildSettings.add('LOCAL_ENGINE=$localEngineName');
// Tell Xcode not to build universal binaries for local engines, which are // Tell Xcode not to build universal binaries for local engines, which are
......
...@@ -53,11 +53,12 @@ Future<void> buildLinux( ...@@ -53,11 +53,12 @@ Future<void> buildLinux(
// step. // step.
final Map<String, String> environmentConfig = buildInfo.toEnvironmentConfig(); final Map<String, String> environmentConfig = buildInfo.toEnvironmentConfig();
environmentConfig['FLUTTER_TARGET'] = target; environmentConfig['FLUTTER_TARGET'] = target;
final LocalEngineInfo? localEngineInfo = globals.artifacts?.localEngineInfo; final Artifacts? artifacts = globals.artifacts;
if (localEngineInfo != null) { if (artifacts is LocalEngineArtifacts) {
final String engineOutPath = localEngineInfo.engineOutPath; final LocalEngineArtifacts localEngineArtifacts = artifacts;
final String engineOutPath = localEngineArtifacts.engineOutPath;
environmentConfig['FLUTTER_ENGINE'] = globals.fs.path.dirname(globals.fs.path.dirname(engineOutPath)); environmentConfig['FLUTTER_ENGINE'] = globals.fs.path.dirname(globals.fs.path.dirname(engineOutPath));
environmentConfig['LOCAL_ENGINE'] = localEngineInfo.localEngineName; environmentConfig['LOCAL_ENGINE'] = localEngineArtifacts.localEngineName;
} }
writeGeneratedCmakeConfig(Cache.flutterRoot!, linuxProject, buildInfo, environmentConfig); writeGeneratedCmakeConfig(Cache.flutterRoot!, linuxProject, buildInfo, environmentConfig);
......
...@@ -107,15 +107,15 @@ class FlutterDevice { ...@@ -107,15 +107,15 @@ class FlutterDevice {
// used to file a bug, but the compiler will still start up correctly. // used to file a bug, but the compiler will still start up correctly.
if (targetPlatform == TargetPlatform.web_javascript) { if (targetPlatform == TargetPlatform.web_javascript) {
// TODO(zanderso): consistently provide these flags across platforms. // TODO(zanderso): consistently provide these flags across platforms.
late String platformDillName; late HostArtifact platformDillArtifact;
final List<String> extraFrontEndOptions = List<String>.of(buildInfo.extraFrontEndOptions); final List<String> extraFrontEndOptions = List<String>.of(buildInfo.extraFrontEndOptions);
if (buildInfo.nullSafetyMode == NullSafetyMode.unsound) { if (buildInfo.nullSafetyMode == NullSafetyMode.unsound) {
platformDillName = 'ddc_outline.dill'; platformDillArtifact = HostArtifact.webPlatformKernelDill;
if (!extraFrontEndOptions.contains('--no-sound-null-safety')) { if (!extraFrontEndOptions.contains('--no-sound-null-safety')) {
extraFrontEndOptions.add('--no-sound-null-safety'); extraFrontEndOptions.add('--no-sound-null-safety');
} }
} else if (buildInfo.nullSafetyMode == NullSafetyMode.sound) { } else if (buildInfo.nullSafetyMode == NullSafetyMode.sound) {
platformDillName = 'ddc_outline_sound.dill'; platformDillArtifact = HostArtifact.webPlatformSoundKernelDill;
if (!extraFrontEndOptions.contains('--sound-null-safety')) { if (!extraFrontEndOptions.contains('--sound-null-safety')) {
extraFrontEndOptions.add('--sound-null-safety'); extraFrontEndOptions.add('--sound-null-safety');
} }
...@@ -123,11 +123,6 @@ class FlutterDevice { ...@@ -123,11 +123,6 @@ class FlutterDevice {
assert(false); assert(false);
} }
final String platformDillPath = globals.fs.path.join(
getWebPlatformBinariesDirectory(globals.artifacts!, buildInfo.webRenderer).path,
platformDillName
);
generator = ResidentCompiler( generator = ResidentCompiler(
globals.artifacts!.getHostArtifact(HostArtifact.flutterWebSdk).path, globals.artifacts!.getHostArtifact(HostArtifact.flutterWebSdk).path,
buildMode: buildInfo.mode, buildMode: buildInfo.mode,
...@@ -144,7 +139,9 @@ class FlutterDevice { ...@@ -144,7 +139,9 @@ class FlutterDevice {
assumeInitializeFromDillUpToDate: buildInfo.assumeInitializeFromDillUpToDate, assumeInitializeFromDillUpToDate: buildInfo.assumeInitializeFromDillUpToDate,
targetModel: TargetModel.dartdevc, targetModel: TargetModel.dartdevc,
extraFrontEndOptions: extraFrontEndOptions, extraFrontEndOptions: extraFrontEndOptions,
platformDill: globals.fs.file(platformDillPath).absolute.uri.toString(), platformDill: globals.fs.file(globals.artifacts!
.getHostArtifact(platformDillArtifact))
.absolute.uri.toString(),
dartDefines: buildInfo.dartDefines, dartDefines: buildInfo.dartDefines,
librariesSpec: globals.fs.file(globals.artifacts! librariesSpec: globals.fs.file(globals.artifacts!
.getHostArtifact(HostArtifact.flutterWebLibrariesJson)).uri.toString(), .getHostArtifact(HostArtifact.flutterWebLibrariesJson)).uri.toString(),
......
...@@ -29,7 +29,6 @@ import '../features.dart'; ...@@ -29,7 +29,6 @@ import '../features.dart';
import '../globals.dart' as globals; import '../globals.dart' as globals;
import '../project.dart'; import '../project.dart';
import '../reporting/reporting.dart'; import '../reporting/reporting.dart';
import '../web/compile.dart';
import 'flutter_command_runner.dart'; import 'flutter_command_runner.dart';
export '../cache.dart' show DevelopmentArtifact; export '../cache.dart' show DevelopmentArtifact;
...@@ -123,7 +122,6 @@ class FlutterOptions { ...@@ -123,7 +122,6 @@ class FlutterOptions {
static const String kFatalWarnings = 'fatal-warnings'; static const String kFatalWarnings = 'fatal-warnings';
static const String kUseApplicationBinary = 'use-application-binary'; static const String kUseApplicationBinary = 'use-application-binary';
static const String kWebBrowserFlag = 'web-browser-flag'; static const String kWebBrowserFlag = 'web-browser-flag';
static const String kWebRendererFlag = 'web-renderer';
} }
/// flutter command categories for usage. /// flutter command categories for usage.
...@@ -151,25 +149,17 @@ abstract class FlutterCommand extends Command<void> { ...@@ -151,25 +149,17 @@ abstract class FlutterCommand extends Command<void> {
/// The flag name for whether or not to use ipv6. /// The flag name for whether or not to use ipv6.
static const String ipv6Flag = 'ipv6'; static const String ipv6Flag = 'ipv6';
/// Maps command line web renderer strings to the corresponding web renderer mode /// The map used to convert web-renderer option to a List of dart-defines.
static const Map<String, WebRendererMode> _webRendererModeMap = static const Map<String, Iterable<String>> _webRendererDartDefines =
<String, WebRendererMode> { <String, Iterable<String>> {
'auto': WebRendererMode.autoDetect, 'auto': <String>[
'canvaskit': WebRendererMode.canvaskit,
'html': WebRendererMode.html,
};
/// The map used to convert web renderer mode to a List of dart-defines.
static const Map<WebRendererMode, Iterable<String>> _webRendererDartDefines =
<WebRendererMode, Iterable<String>> {
WebRendererMode.autoDetect: <String>[
'FLUTTER_WEB_AUTO_DETECT=true', 'FLUTTER_WEB_AUTO_DETECT=true',
], ],
WebRendererMode.canvaskit: <String>[ 'canvaskit': <String>[
'FLUTTER_WEB_AUTO_DETECT=false', 'FLUTTER_WEB_AUTO_DETECT=false',
'FLUTTER_WEB_USE_SKIA=true', 'FLUTTER_WEB_USE_SKIA=true',
], ],
WebRendererMode.html: <String>[ 'html': <String>[
'FLUTTER_WEB_AUTO_DETECT=false', 'FLUTTER_WEB_AUTO_DETECT=false',
'FLUTTER_WEB_USE_SKIA=false', 'FLUTTER_WEB_USE_SKIA=false',
], ],
...@@ -630,8 +620,7 @@ abstract class FlutterCommand extends Command<void> { ...@@ -630,8 +620,7 @@ abstract class FlutterCommand extends Command<void> {
} }
void usesWebRendererOption() { void usesWebRendererOption() {
argParser.addOption( argParser.addOption('web-renderer',
FlutterOptions.kWebRendererFlag,
defaultsTo: 'auto', defaultsTo: 'auto',
allowed: <String>['auto', 'canvaskit', 'html'], allowed: <String>['auto', 'canvaskit', 'html'],
help: 'The renderer implementation to use when building for the web.', help: 'The renderer implementation to use when building for the web.',
...@@ -1155,13 +1144,8 @@ abstract class FlutterCommand extends Command<void> { ...@@ -1155,13 +1144,8 @@ abstract class FlutterCommand extends Command<void> {
? stringsArg(FlutterOptions.kDartDefinesOption) ? stringsArg(FlutterOptions.kDartDefinesOption)
: <String>[]; : <String>[];
WebRendererMode webRenderer = WebRendererMode.autoDetect; if (argParser.options.containsKey('web-renderer')) {
if (argParser.options.containsKey(FlutterOptions.kWebRendererFlag)) { dartDefines = updateDartDefines(dartDefines, stringArgDeprecated('web-renderer')!);
final WebRendererMode? mappedMode = _webRendererModeMap[stringArgDeprecated(FlutterOptions.kWebRendererFlag)!];
if (mappedMode != null) {
webRenderer = mappedMode;
}
dartDefines = updateDartDefines(dartDefines, webRenderer);
} }
Map<String, Object>? defineConfigJsonMap; Map<String, Object>? defineConfigJsonMap;
...@@ -1208,7 +1192,6 @@ abstract class FlutterCommand extends Command<void> { ...@@ -1208,7 +1192,6 @@ abstract class FlutterCommand extends Command<void> {
dartDefines: dartDefines, dartDefines: dartDefines,
bundleSkSLPath: bundleSkSLPath, bundleSkSLPath: bundleSkSLPath,
dartExperiments: experiments, dartExperiments: experiments,
webRenderer: webRenderer,
performanceMeasurementFile: performanceMeasurementFile, performanceMeasurementFile: performanceMeasurementFile,
dartDefineConfigJsonMap: defineConfigJsonMap, dartDefineConfigJsonMap: defineConfigJsonMap,
packagesPath: packagesPath ?? globals.fs.path.absolute('.dart_tool', 'package_config.json'), packagesPath: packagesPath ?? globals.fs.path.absolute('.dart_tool', 'package_config.json'),
...@@ -1299,7 +1282,7 @@ abstract class FlutterCommand extends Command<void> { ...@@ -1299,7 +1282,7 @@ abstract class FlutterCommand extends Command<void> {
/// Updates dart-defines based on [webRenderer]. /// Updates dart-defines based on [webRenderer].
@visibleForTesting @visibleForTesting
static List<String> updateDartDefines(List<String> dartDefines, WebRendererMode webRenderer) { static List<String> updateDartDefines(List<String> dartDefines, String webRenderer) {
final Set<String> dartDefinesSet = dartDefines.toSet(); final Set<String> dartDefinesSet = dartDefines.toSet();
if (!dartDefines.any((String d) => d.startsWith('FLUTTER_WEB_AUTO_DETECT=')) if (!dartDefines.any((String d) => d.startsWith('FLUTTER_WEB_AUTO_DETECT='))
&& dartDefines.any((String d) => d.startsWith('FLUTTER_WEB_USE_SKIA='))) { && dartDefines.any((String d) => d.startsWith('FLUTTER_WEB_USE_SKIA='))) {
......
...@@ -96,13 +96,7 @@ class FlutterCommandRunner extends CommandRunner<void> { ...@@ -96,13 +96,7 @@ class FlutterCommandRunner extends CommandRunner<void> {
hide: !verboseHelp, hide: !verboseHelp,
help: 'Name of a build output within the engine out directory, if you are building Flutter locally.\n' help: 'Name of a build output within the engine out directory, if you are building Flutter locally.\n'
'Use this to select a specific version of the engine if you have built multiple engine targets.\n' 'Use this to select a specific version of the engine if you have built multiple engine targets.\n'
'This path is relative to "--local-engine-src-path" (see above).'); 'This path is relative to "--local-engine-src-path" or "--local-engine-src-out" (q.v.).');
argParser.addOption('local-web-sdk',
hide: !verboseHelp,
help: 'Name of a build output within the engine out directory, if you are building Flutter locally.\n'
'Use this to select a specific version of the web sdk if you have built multiple engine targets.\n'
'This path is relative to "--local-engine-src-path" (see above).');
if (verboseHelp) { if (verboseHelp) {
argParser.addSeparator('Options for testing the "flutter" tool itself:'); argParser.addSeparator('Options for testing the "flutter" tool itself:');
...@@ -222,10 +216,9 @@ class FlutterCommandRunner extends CommandRunner<void> { ...@@ -222,10 +216,9 @@ class FlutterCommandRunner extends CommandRunner<void> {
// Set up the tooling configuration. // Set up the tooling configuration.
final EngineBuildPaths? engineBuildPaths = await globals.localEngineLocator?.findEnginePath( final EngineBuildPaths? engineBuildPaths = await globals.localEngineLocator?.findEnginePath(
engineSourcePath: topLevelResults['local-engine-src-path'] as String?, topLevelResults['local-engine-src-path'] as String?,
localEngine: topLevelResults['local-engine'] as String?, topLevelResults['local-engine'] as String?,
localWebSdk: topLevelResults['local-web-sdk'] as String?, topLevelResults['packages'] as String?,
packagePath: topLevelResults['packages'] as String?,
); );
if (engineBuildPaths != null) { if (engineBuildPaths != null) {
contextOverrides.addAll(<Type, Object?>{ contextOverrides.addAll(<Type, Object?>{
......
...@@ -46,23 +46,17 @@ class LocalEngineLocator { ...@@ -46,23 +46,17 @@ class LocalEngineLocator {
final UserMessages _userMessages; final UserMessages _userMessages;
/// Returns the engine build path of a local engine if one is located, otherwise `null`. /// Returns the engine build path of a local engine if one is located, otherwise `null`.
Future<EngineBuildPaths?> findEnginePath({String? engineSourcePath, String? localEngine, String? localWebSdk, String? packagePath}) async { Future<EngineBuildPaths?> findEnginePath(String? engineSourcePath, String? localEngine, String? packagePath) async {
engineSourcePath ??= _platform.environment[kFlutterEngineEnvironmentVariableName]; engineSourcePath ??= _platform.environment[kFlutterEngineEnvironmentVariableName];
if (engineSourcePath == null) { if (engineSourcePath == null && localEngine != null) {
try { try {
if (localEngine != null) { engineSourcePath = _findEngineSourceByLocalEngine(localEngine);
engineSourcePath = _findEngineSourceByBuildPath(localEngine);
}
if (localWebSdk != null) {
engineSourcePath ??= _findEngineSourceByBuildPath(localWebSdk);
}
engineSourcePath ??= await _findEngineSourceByPackageConfig(packagePath); engineSourcePath ??= await _findEngineSourceByPackageConfig(packagePath);
} on FileSystemException catch (e) { } on FileSystemException catch (e) {
_logger.printTrace('Local engine auto-detection file exception: $e'); _logger.printTrace('Local engine auto-detection file exception: $e');
engineSourcePath = null; engineSourcePath = null;
} }
// If engineSourcePath is still not set, try to determine it by flutter root. // If engineSourcePath is still not set, try to determine it by flutter root.
engineSourcePath ??= _tryEnginePath( engineSourcePath ??= _tryEnginePath(
_fileSystem.path.join(_fileSystem.directory(_flutterRoot).parent.path, 'engine', 'src'), _fileSystem.path.join(_fileSystem.directory(_flutterRoot).parent.path, 'engine', 'src'),
...@@ -78,9 +72,9 @@ class LocalEngineLocator { ...@@ -78,9 +72,9 @@ class LocalEngineLocator {
if (engineSourcePath != null) { if (engineSourcePath != null) {
_logger.printTrace('Local engine source at $engineSourcePath'); _logger.printTrace('Local engine source at $engineSourcePath');
return _findEngineBuildPath(localEngine, localWebSdk, engineSourcePath); return _findEngineBuildPath(localEngine, engineSourcePath);
} }
if (localEngine != null || localWebSdk != null) { if (localEngine != null) {
throwToolExit( throwToolExit(
_userMessages.runnerNoEngineSrcDir( _userMessages.runnerNoEngineSrcDir(
kFlutterEnginePackageName, kFlutterEnginePackageName,
...@@ -92,15 +86,15 @@ class LocalEngineLocator { ...@@ -92,15 +86,15 @@ class LocalEngineLocator {
return null; return null;
} }
String? _findEngineSourceByBuildPath(String buildPath) { String? _findEngineSourceByLocalEngine(String localEngine) {
// When the local engine is an absolute path to a variant inside the // When the local engine is an absolute path to a variant inside the
// out directory, parse the engine source. // out directory, parse the engine source.
// --local-engine /path/to/cache/builder/src/out/host_debug_unopt // --local-engine /path/to/cache/builder/src/out/host_debug_unopt
if (_fileSystem.path.isAbsolute(buildPath)) { if (_fileSystem.path.isAbsolute(localEngine)) {
final Directory buildDirectory = _fileSystem.directory(buildPath); final Directory localEngineDirectory = _fileSystem.directory(localEngine);
final Directory outDirectory = buildDirectory.parent; final Directory outDirectory = localEngineDirectory.parent;
final Directory srcDirectory = outDirectory.parent; final Directory srcDirectory = outDirectory.parent;
if (buildDirectory.existsSync() && outDirectory.basename == 'out' && srcDirectory.basename == 'src') { if (localEngineDirectory.existsSync() && outDirectory.basename == 'out' && srcDirectory.basename == 'src') {
_logger.printTrace('Parsed engine source from local engine as ${srcDirectory.path}.'); _logger.printTrace('Parsed engine source from local engine as ${srcDirectory.path}.');
return srcDirectory.path; return srcDirectory.path;
} }
...@@ -171,38 +165,26 @@ class LocalEngineLocator { ...@@ -171,38 +165,26 @@ class LocalEngineLocator {
return 'host_$tmpBasename'; return 'host_$tmpBasename';
} }
EngineBuildPaths _findEngineBuildPath(String? localEngine, String? localWebSdk, String enginePath) { EngineBuildPaths _findEngineBuildPath(String? localEngine, String enginePath) {
if (localEngine == null && localWebSdk == null) { if (localEngine == null) {
throwToolExit(_userMessages.runnerLocalEngineOrWebSdkRequired, exitCode: 2); throwToolExit(_userMessages.runnerLocalEngineRequired, exitCode: 2);
} }
String? engineBuildPath; final String engineBuildPath = _fileSystem.path.normalize(_fileSystem.path.join(enginePath, 'out', localEngine));
String? engineHostBuildPath; if (!_fileSystem.isDirectorySync(engineBuildPath)) {
if (localEngine != null) { throwToolExit(_userMessages.runnerNoEngineBuild(engineBuildPath), exitCode: 2);
engineBuildPath = _fileSystem.path.normalize(_fileSystem.path.join(enginePath, 'out', localEngine));
if (!_fileSystem.isDirectorySync(engineBuildPath)) {
throwToolExit(_userMessages.runnerNoEngineBuild(engineBuildPath), exitCode: 2);
}
final String basename = _fileSystem.path.basename(engineBuildPath);
final String hostBasename = _getHostEngineBasename(basename);
engineHostBuildPath = _fileSystem.path.normalize(
_fileSystem.path.join(_fileSystem.path.dirname(engineBuildPath), hostBasename),
);
if (!_fileSystem.isDirectorySync(engineHostBuildPath)) {
throwToolExit(_userMessages.runnerNoEngineBuild(engineHostBuildPath), exitCode: 2);
}
} }
String? webSdkPath; final String basename = _fileSystem.path.basename(engineBuildPath);
if (localWebSdk != null) { final String hostBasename = _getHostEngineBasename(basename);
webSdkPath = _fileSystem.path.normalize(_fileSystem.path.join(enginePath, 'out', localWebSdk)); final String engineHostBuildPath = _fileSystem.path.normalize(
if (!_fileSystem.isDirectorySync(webSdkPath)) { _fileSystem.path.join(_fileSystem.path.dirname(engineBuildPath), hostBasename),
throwToolExit(_userMessages.runnerNoWebSdk(webSdkPath), exitCode: 2); );
} if (!_fileSystem.isDirectorySync(engineHostBuildPath)) {
throwToolExit(_userMessages.runnerNoEngineBuild(engineHostBuildPath), exitCode: 2);
} }
return EngineBuildPaths(targetEngine: engineBuildPath, webSdk: webSdkPath, hostEngine: engineHostBuildPath); return EngineBuildPaths(targetEngine: engineBuildPath, hostEngine: engineHostBuildPath);
} }
String? _tryEnginePath(String enginePath) { String? _tryEnginePath(String enginePath) {
......
...@@ -50,29 +50,22 @@ class WebTestCompiler { ...@@ -50,29 +50,22 @@ class WebTestCompiler {
required BuildInfo buildInfo, required BuildInfo buildInfo,
}) async { }) async {
LanguageVersion languageVersion = LanguageVersion(2, 8); LanguageVersion languageVersion = LanguageVersion(2, 8);
late final String platformDillName; HostArtifact platformDillArtifact = HostArtifact.webPlatformSoundKernelDill;
// TODO(zanderso): to support autodetect this would need to partition the source code into a // TODO(zanderso): to support autodetect this would need to partition the source code into a
// a sound and unsound set and perform separate compilations // a sound and unsound set and perform separate compilations.
final List<String> extraFrontEndOptions = List<String>.of(buildInfo.extraFrontEndOptions); final List<String> extraFrontEndOptions = List<String>.of(buildInfo.extraFrontEndOptions);
if (buildInfo.nullSafetyMode == NullSafetyMode.unsound || buildInfo.nullSafetyMode == NullSafetyMode.autodetect) { if (buildInfo.nullSafetyMode == NullSafetyMode.unsound || buildInfo.nullSafetyMode == NullSafetyMode.autodetect) {
platformDillName = 'ddc_outline.dill'; platformDillArtifact = HostArtifact.webPlatformKernelDill;
if (!extraFrontEndOptions.contains('--no-sound-null-safety')) { if (!extraFrontEndOptions.contains('--no-sound-null-safety')) {
extraFrontEndOptions.add('--no-sound-null-safety'); extraFrontEndOptions.add('--no-sound-null-safety');
} }
} else if (buildInfo.nullSafetyMode == NullSafetyMode.sound) { } else if (buildInfo.nullSafetyMode == NullSafetyMode.sound) {
languageVersion = currentLanguageVersion(_fileSystem, Cache.flutterRoot!); languageVersion = currentLanguageVersion(_fileSystem, Cache.flutterRoot!);
platformDillName = 'ddc_outline_sound.dill';
if (!extraFrontEndOptions.contains('--sound-null-safety')) { if (!extraFrontEndOptions.contains('--sound-null-safety')) {
extraFrontEndOptions.add('--sound-null-safety'); extraFrontEndOptions.add('--sound-null-safety');
} }
} }
final String platformDillPath = _fileSystem.path.join(
getWebPlatformBinariesDirectory(_artifacts, buildInfo.webRenderer).path,
platformDillName
);
final Directory outputDirectory = _fileSystem.directory(testOutputDir) final Directory outputDirectory = _fileSystem.directory(testOutputDir)
..createSync(recursive: true); ..createSync(recursive: true);
final List<File> generatedFiles = <File>[]; final List<File> generatedFiles = <File>[];
...@@ -123,7 +116,9 @@ class WebTestCompiler { ...@@ -123,7 +116,9 @@ class WebTestCompiler {
initializeFromDill: cachedKernelPath, initializeFromDill: cachedKernelPath,
targetModel: TargetModel.dartdevc, targetModel: TargetModel.dartdevc,
extraFrontEndOptions: extraFrontEndOptions, extraFrontEndOptions: extraFrontEndOptions,
platformDill: platformDillPath, platformDill: _artifacts
.getHostArtifact(platformDillArtifact)
.absolute.uri.toString(),
dartDefines: buildInfo.dartDefines, dartDefines: buildInfo.dartDefines,
librariesSpec: _artifacts.getHostArtifact(HostArtifact.flutterWebLibrariesJson).uri.toString(), librariesSpec: _artifacts.getHostArtifact(HostArtifact.flutterWebLibrariesJson).uri.toString(),
packagesPath: buildInfo.packagesPath, packagesPath: buildInfo.packagesPath,
......
...@@ -48,42 +48,40 @@ Future<void> buildWeb( ...@@ -48,42 +48,40 @@ Future<void> buildWeb(
final Status status = globals.logger.startProgress('Compiling $target for the Web...'); final Status status = globals.logger.startProgress('Compiling $target for the Web...');
final Stopwatch sw = Stopwatch()..start(); final Stopwatch sw = Stopwatch()..start();
try { try {
final BuildResult result = await globals.buildSystem.build( final BuildResult result = await globals.buildSystem.build(WebServiceWorker(globals.fs, globals.cache), Environment(
WebServiceWorker(globals.fs, globals.cache, buildInfo.webRenderer), projectDir: globals.fs.currentDirectory,
Environment( outputDir: outputDirectory,
projectDir: globals.fs.currentDirectory, buildDir: flutterProject.directory
outputDir: outputDirectory, .childDirectory('.dart_tool')
buildDir: flutterProject.directory .childDirectory('flutter_build'),
.childDirectory('.dart_tool') defines: <String, String>{
.childDirectory('flutter_build'), kTargetFile: target,
defines: <String, String>{ kHasWebPlugins: hasWebPlugins.toString(),
kTargetFile: target, kCspMode: csp.toString(),
kHasWebPlugins: hasWebPlugins.toString(), if (baseHref != null)
kCspMode: csp.toString(), kBaseHref : baseHref,
if (baseHref != null) kSourceMapsEnabled: sourceMaps.toString(),
kBaseHref : baseHref, kNativeNullAssertions: nativeNullAssertions.toString(),
kSourceMapsEnabled: sourceMaps.toString(), if (serviceWorkerStrategy != null)
kNativeNullAssertions: nativeNullAssertions.toString(), kServiceWorkerStrategy: serviceWorkerStrategy,
if (serviceWorkerStrategy != null) if (dart2jsOptimization != null)
kServiceWorkerStrategy: serviceWorkerStrategy, kDart2jsOptimization: dart2jsOptimization,
if (dart2jsOptimization != null) ...buildInfo.toBuildSystemEnvironment(),
kDart2jsOptimization: dart2jsOptimization, },
...buildInfo.toBuildSystemEnvironment(), artifacts: globals.artifacts!,
}, fileSystem: globals.fs,
artifacts: globals.artifacts!, logger: globals.logger,
fileSystem: globals.fs, processManager: globals.processManager,
logger: globals.logger, platform: globals.platform,
processManager: globals.processManager, usage: globals.flutterUsage,
platform: globals.platform, cacheDir: globals.cache.getRoot(),
usage: globals.flutterUsage, engineVersion: globals.artifacts!.isLocalEngine
cacheDir: globals.cache.getRoot(), ? null
engineVersion: globals.artifacts!.isLocalEngine : globals.flutterVersion.engineRevision,
? null flutterRootDir: globals.fs.directory(Cache.flutterRoot),
: globals.flutterVersion.engineRevision, // Web uses a different Dart plugin registry.
flutterRootDir: globals.fs.directory(Cache.flutterRoot), // https://github.com/flutter/flutter/issues/80406
// Web uses a different Dart plugin registry. generateDartPluginRegistry: false,
// https://github.com/flutter/flutter/issues/80406
generateDartPluginRegistry: false,
)); ));
if (!result.success) { if (!result.success) {
for (final ExceptionMeasurement measurement in result.exceptions.values) { for (final ExceptionMeasurement measurement in result.exceptions.values) {
......
...@@ -215,11 +215,11 @@ void _writeGeneratedFlutterConfig( ...@@ -215,11 +215,11 @@ void _writeGeneratedFlutterConfig(
'FLUTTER_TARGET': target, 'FLUTTER_TARGET': target,
...buildInfo.toEnvironmentConfig(), ...buildInfo.toEnvironmentConfig(),
}; };
final LocalEngineInfo? localEngineInfo = globals.artifacts?.localEngineInfo; final Artifacts artifacts = globals.artifacts!;
if (localEngineInfo != null) { if (artifacts is LocalEngineArtifacts) {
final String engineOutPath = localEngineInfo.engineOutPath; final String engineOutPath = artifacts.engineOutPath;
environment['FLUTTER_ENGINE'] = globals.fs.path.dirname(globals.fs.path.dirname(engineOutPath)); environment['FLUTTER_ENGINE'] = globals.fs.path.dirname(globals.fs.path.dirname(engineOutPath));
environment['LOCAL_ENGINE'] = localEngineInfo.localEngineName; environment['LOCAL_ENGINE'] = artifacts.localEngineName;
} }
writeGeneratedCmakeConfig(Cache.flutterRoot!, windowsProject, buildInfo, environment); writeGeneratedCmakeConfig(Cache.flutterRoot!, windowsProject, buildInfo, environment);
} }
......
...@@ -29,7 +29,6 @@ import 'package:flutter_tools/src/reporting/reporting.dart'; ...@@ -29,7 +29,6 @@ import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/resident_runner.dart';
import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart';
import 'package:flutter_tools/src/vmservice.dart'; import 'package:flutter_tools/src/vmservice.dart';
import 'package:flutter_tools/src/web/compile.dart';
import 'package:test/fake.dart'; import 'package:test/fake.dart';
import 'package:vm_service/vm_service.dart'; import 'package:vm_service/vm_service.dart';
...@@ -674,35 +673,35 @@ void main() { ...@@ -674,35 +673,35 @@ void main() {
}); });
test('auto web-renderer with no dart-defines', () { test('auto web-renderer with no dart-defines', () {
dartDefines = FlutterCommand.updateDartDefines(dartDefines, WebRendererMode.autoDetect); dartDefines = FlutterCommand.updateDartDefines(dartDefines, 'auto');
expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=true']); expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=true']);
}); });
test('canvaskit web-renderer with no dart-defines', () { test('canvaskit web-renderer with no dart-defines', () {
dartDefines = FlutterCommand.updateDartDefines(dartDefines, WebRendererMode.canvaskit); dartDefines = FlutterCommand.updateDartDefines(dartDefines, 'canvaskit');
expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=false','FLUTTER_WEB_USE_SKIA=true']); expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=false','FLUTTER_WEB_USE_SKIA=true']);
}); });
test('html web-renderer with no dart-defines', () { test('html web-renderer with no dart-defines', () {
dartDefines = FlutterCommand.updateDartDefines(dartDefines, WebRendererMode.html); dartDefines = FlutterCommand.updateDartDefines(dartDefines, 'html');
expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=false','FLUTTER_WEB_USE_SKIA=false']); expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=false','FLUTTER_WEB_USE_SKIA=false']);
}); });
test('auto web-renderer with existing dart-defines', () { test('auto web-renderer with existing dart-defines', () {
dartDefines = <String>['FLUTTER_WEB_USE_SKIA=false']; dartDefines = <String>['FLUTTER_WEB_USE_SKIA=false'];
dartDefines = FlutterCommand.updateDartDefines(dartDefines, WebRendererMode.autoDetect); dartDefines = FlutterCommand.updateDartDefines(dartDefines, 'auto');
expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=true']); expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=true']);
}); });
test('canvaskit web-renderer with no dart-defines', () { test('canvaskit web-renderer with no dart-defines', () {
dartDefines = <String>['FLUTTER_WEB_USE_SKIA=false']; dartDefines = <String>['FLUTTER_WEB_USE_SKIA=false'];
dartDefines = FlutterCommand.updateDartDefines(dartDefines, WebRendererMode.canvaskit); dartDefines = FlutterCommand.updateDartDefines(dartDefines, 'canvaskit');
expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=false','FLUTTER_WEB_USE_SKIA=true']); expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=false','FLUTTER_WEB_USE_SKIA=true']);
}); });
test('html web-renderer with no dart-defines', () { test('html web-renderer with no dart-defines', () {
dartDefines = <String>['FLUTTER_WEB_USE_SKIA=true']; dartDefines = <String>['FLUTTER_WEB_USE_SKIA=true'];
dartDefines = FlutterCommand.updateDartDefines(dartDefines, WebRendererMode.html); dartDefines = FlutterCommand.updateDartDefines(dartDefines, 'html');
expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=false','FLUTTER_WEB_USE_SKIA=false']); expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=false','FLUTTER_WEB_USE_SKIA=false']);
}); });
}); });
......
...@@ -199,7 +199,7 @@ void main() { ...@@ -199,7 +199,7 @@ void main() {
}); });
group('LocalEngineArtifacts', () { group('LocalEngineArtifacts', () {
late Artifacts artifacts; late LocalEngineArtifacts artifacts;
late Cache cache; late Cache cache;
late FileSystem fileSystem; late FileSystem fileSystem;
late Platform platform; late Platform platform;
...@@ -217,9 +217,9 @@ void main() { ...@@ -217,9 +217,9 @@ void main() {
osUtils: FakeOperatingSystemUtils(), osUtils: FakeOperatingSystemUtils(),
artifacts: <ArtifactSet>[], artifacts: <ArtifactSet>[],
); );
artifacts = CachedLocalEngineArtifacts( artifacts = LocalEngineArtifacts(
fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'android_debug_unopt'),
fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'host_debug_unopt'), fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'host_debug_unopt'),
engineOutPath: fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'android_debug_unopt'),
cache: cache, cache: cache,
fileSystem: fileSystem, fileSystem: fileSystem,
platform: platform, platform: platform,
...@@ -435,9 +435,9 @@ void main() { ...@@ -435,9 +435,9 @@ void main() {
}); });
testWithoutContext('Looks up dart.exe on windows platforms', () async { testWithoutContext('Looks up dart.exe on windows platforms', () async {
artifacts = CachedLocalEngineArtifacts( artifacts = LocalEngineArtifacts(
fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'android_debug_unopt'),
fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'host_debug_unopt'), fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'host_debug_unopt'),
engineOutPath: fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'android_debug_unopt'),
cache: cache, cache: cache,
fileSystem: fileSystem, fileSystem: fileSystem,
platform: FakePlatform(operatingSystem: 'windows'), platform: FakePlatform(operatingSystem: 'windows'),
...@@ -473,9 +473,9 @@ void main() { ...@@ -473,9 +473,9 @@ void main() {
}); });
testWithoutContext('Finds dart-sdk in windows prebuilts', () async { testWithoutContext('Finds dart-sdk in windows prebuilts', () async {
artifacts = CachedLocalEngineArtifacts( artifacts = LocalEngineArtifacts(
fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'android_debug_unopt'),
fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'host_debug_unopt'), fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'host_debug_unopt'),
engineOutPath: fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'android_debug_unopt'),
cache: cache, cache: cache,
fileSystem: fileSystem, fileSystem: fileSystem,
platform: FakePlatform(operatingSystem: 'windows'), platform: FakePlatform(operatingSystem: 'windows'),
...@@ -498,9 +498,9 @@ void main() { ...@@ -498,9 +498,9 @@ void main() {
}); });
testWithoutContext('Finds dart-sdk in macos prebuilts', () async { testWithoutContext('Finds dart-sdk in macos prebuilts', () async {
artifacts = CachedLocalEngineArtifacts( artifacts = LocalEngineArtifacts(
fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'android_debug_unopt'),
fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'host_debug_unopt'), fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'host_debug_unopt'),
engineOutPath: fileSystem.path.join(fileSystem.currentDirectory.path, 'out', 'android_debug_unopt'),
cache: cache, cache: cache,
fileSystem: fileSystem, fileSystem: fileSystem,
platform: FakePlatform(operatingSystem: 'macos'), platform: FakePlatform(operatingSystem: 'macos'),
......
...@@ -33,7 +33,6 @@ import 'package:flutter_tools/src/run_cold.dart'; ...@@ -33,7 +33,6 @@ import 'package:flutter_tools/src/run_cold.dart';
import 'package:flutter_tools/src/run_hot.dart'; import 'package:flutter_tools/src/run_hot.dart';
import 'package:flutter_tools/src/version.dart'; import 'package:flutter_tools/src/version.dart';
import 'package:flutter_tools/src/vmservice.dart'; import 'package:flutter_tools/src/vmservice.dart';
import 'package:flutter_tools/src/web/compile.dart' show WebRendererMode;
import 'package:package_config/package_config.dart'; import 'package:package_config/package_config.dart';
import 'package:test/fake.dart'; import 'package:test/fake.dart';
import 'package:vm_service/vm_service.dart' as vm_service; import 'package:vm_service/vm_service.dart' as vm_service;
...@@ -1921,28 +1920,6 @@ flutter: ...@@ -1921,28 +1920,6 @@ flutter:
expect(fakeVmServiceHost?.hasRemainingExpectations, false); expect(fakeVmServiceHost?.hasRemainingExpectations, false);
})); }));
testUsingContext('FlutterDevice uses canvaskit platform dill when canvaskit mode is selected', () async {
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[]);
final FakeDevice device = FakeDevice(targetPlatform: TargetPlatform.web_javascript);
final DefaultResidentCompiler? residentCompiler = (await FlutterDevice.create(
device,
buildInfo: const BuildInfo(
BuildMode.debug,
'',
treeShakeIcons: false,
webRenderer: WebRendererMode.canvaskit,
),
target: null,
platform: FakePlatform(),
)).generator as DefaultResidentCompiler?;
expect(residentCompiler!.platformDill, 'file:///HostArtifact.webPlatformCanvasKitDillDirectory/ddc_outline_sound.dill');
}, overrides: <Type, Generator>{
Artifacts: () => Artifacts.test(),
FileSystem: () => MemoryFileSystem.test(),
ProcessManager: () => FakeProcessManager.any(),
});
testUsingContext('FlutterDevice uses dartdevc configuration when targeting web', () async { testUsingContext('FlutterDevice uses dartdevc configuration when targeting web', () async {
fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[]); fakeVmServiceHost = FakeVmServiceHost(requests: <VmServiceExpectation>[]);
final FakeDevice device = FakeDevice(targetPlatform: TargetPlatform.web_javascript); final FakeDevice device = FakeDevice(targetPlatform: TargetPlatform.web_javascript);
...@@ -1966,7 +1943,7 @@ flutter: ...@@ -1966,7 +1943,7 @@ flutter:
expect(residentCompiler.targetModel, TargetModel.dartdevc); expect(residentCompiler.targetModel, TargetModel.dartdevc);
expect(residentCompiler.sdkRoot, expect(residentCompiler.sdkRoot,
'${globals.artifacts!.getHostArtifact(HostArtifact.flutterWebSdk).path}/'); '${globals.artifacts!.getHostArtifact(HostArtifact.flutterWebSdk).path}/');
expect(residentCompiler.platformDill, 'file:///HostArtifact.webPlatformAutoDillDirectory/ddc_outline.dill'); expect(residentCompiler.platformDill, 'file:///HostArtifact.webPlatformKernelDill');
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
Artifacts: () => Artifacts.test(), Artifacts: () => Artifacts.test(),
FileSystem: () => MemoryFileSystem.test(), FileSystem: () => MemoryFileSystem.test(),
...@@ -1997,7 +1974,7 @@ flutter: ...@@ -1997,7 +1974,7 @@ flutter:
expect(residentCompiler.targetModel, TargetModel.dartdevc); expect(residentCompiler.targetModel, TargetModel.dartdevc);
expect(residentCompiler.sdkRoot, expect(residentCompiler.sdkRoot,
'${globals.artifacts!.getHostArtifact(HostArtifact.flutterWebSdk).path}/'); '${globals.artifacts!.getHostArtifact(HostArtifact.flutterWebSdk).path}/');
expect(residentCompiler.platformDill, 'file:///HostArtifact.webPlatformAutoDillDirectory/ddc_outline_sound.dill'); expect(residentCompiler.platformDill, 'file:///HostArtifact.webPlatformSoundKernelDill');
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
Artifacts: () => Artifacts.test(), Artifacts: () => Artifacts.test(),
FileSystem: () => MemoryFileSystem.test(), FileSystem: () => MemoryFileSystem.test(),
......
...@@ -43,7 +43,7 @@ void main() { ...@@ -43,7 +43,7 @@ void main() {
); );
expect( expect(
await localEngineLocator.findEnginePath(localEngine: 'ios_debug'), await localEngineLocator.findEnginePath(null, 'ios_debug', null),
matchesEngineBuildPaths( matchesEngineBuildPaths(
hostEngine: '/arbitrary/engine/src/out/host_debug', hostEngine: '/arbitrary/engine/src/out/host_debug',
targetEngine: '/arbitrary/engine/src/out/ios_debug', targetEngine: '/arbitrary/engine/src/out/ios_debug',
...@@ -58,7 +58,7 @@ void main() { ...@@ -58,7 +58,7 @@ void main() {
.writeAsStringSync('sky_engine:file:///symlink/src/out/ios_debug/gen/dart-pkg/sky_engine/lib/'); .writeAsStringSync('sky_engine:file:///symlink/src/out/ios_debug/gen/dart-pkg/sky_engine/lib/');
expect( expect(
await localEngineLocator.findEnginePath(localEngine: 'ios_debug'), await localEngineLocator.findEnginePath(null, 'ios_debug', null),
matchesEngineBuildPaths( matchesEngineBuildPaths(
hostEngine: '/symlink/src/out/host_debug', hostEngine: '/symlink/src/out/host_debug',
targetEngine: '/symlink/src/out/ios_debug', targetEngine: '/symlink/src/out/ios_debug',
...@@ -84,7 +84,7 @@ void main() { ...@@ -84,7 +84,7 @@ void main() {
); );
expect( expect(
await localEngineLocator.findEnginePath(engineSourcePath: '$kArbitraryEngineRoot/src', localEngine: 'ios_debug'), await localEngineLocator.findEnginePath('$kArbitraryEngineRoot/src', 'ios_debug', null),
matchesEngineBuildPaths( matchesEngineBuildPaths(
hostEngine: '/arbitrary/engine/src/out/host_debug', hostEngine: '/arbitrary/engine/src/out/host_debug',
targetEngine: '/arbitrary/engine/src/out/ios_debug', targetEngine: '/arbitrary/engine/src/out/ios_debug',
...@@ -111,7 +111,7 @@ void main() { ...@@ -111,7 +111,7 @@ void main() {
); );
expect( expect(
await localEngineLocator.findEnginePath(localEngine: localEngine.path), await localEngineLocator.findEnginePath(null, localEngine.path, null),
matchesEngineBuildPaths( matchesEngineBuildPaths(
hostEngine: '/arbitrary/engine/src/out/host_debug', hostEngine: '/arbitrary/engine/src/out/host_debug',
targetEngine: '/arbitrary/engine/src/out/ios_debug', targetEngine: '/arbitrary/engine/src/out/ios_debug',
...@@ -137,7 +137,7 @@ void main() { ...@@ -137,7 +137,7 @@ void main() {
); );
expect( expect(
await localEngineLocator.findEnginePath(localEngine: localEngine.path), await localEngineLocator.findEnginePath(null, localEngine.path, null),
matchesEngineBuildPaths( matchesEngineBuildPaths(
hostEngine: '/arbitrary/engine/src/out/host_debug', hostEngine: '/arbitrary/engine/src/out/host_debug',
targetEngine: '/arbitrary/engine/src/out/host_debug', targetEngine: '/arbitrary/engine/src/out/host_debug',
...@@ -161,7 +161,7 @@ void main() { ...@@ -161,7 +161,7 @@ void main() {
); );
await expectToolExitLater( await expectToolExitLater(
localEngineLocator.findEnginePath(localEngine: localEngine.path), localEngineLocator.findEnginePath(null, localEngine.path, null),
contains('No Flutter engine build found at /arbitrary/engine/src/out/host_debug'), contains('No Flutter engine build found at /arbitrary/engine/src/out/host_debug'),
); );
}); });
...@@ -190,7 +190,7 @@ void main() { ...@@ -190,7 +190,7 @@ void main() {
); );
expect( expect(
await localEngineLocator.findEnginePath(localEngine: 'ios_debug'), await localEngineLocator.findEnginePath(null, 'ios_debug', null),
matchesEngineBuildPaths( matchesEngineBuildPaths(
hostEngine: 'flutter/engine/src/out/host_debug', hostEngine: 'flutter/engine/src/out/host_debug',
targetEngine: 'flutter/engine/src/out/ios_debug', targetEngine: 'flutter/engine/src/out/ios_debug',
...@@ -212,7 +212,7 @@ void main() { ...@@ -212,7 +212,7 @@ void main() {
); );
await expectToolExitLater( await expectToolExitLater(
localEngineLocator.findEnginePath(localEngine: '/path/to/nothing'), localEngineLocator.findEnginePath(null, '/path/to/nothing', null),
contains('Unable to detect local Flutter engine src directory'), contains('Unable to detect local Flutter engine src directory'),
); );
}); });
...@@ -236,7 +236,7 @@ void main() { ...@@ -236,7 +236,7 @@ void main() {
); );
expect( expect(
await localWasmEngineLocator.findEnginePath(localEngine: localWasmEngine.path), await localWasmEngineLocator.findEnginePath(null, localWasmEngine.path, null),
matchesEngineBuildPaths( matchesEngineBuildPaths(
hostEngine: '/arbitrary/engine/src/out/wasm_whatever', hostEngine: '/arbitrary/engine/src/out/wasm_whatever',
targetEngine: '/arbitrary/engine/src/out/wasm_whatever', targetEngine: '/arbitrary/engine/src/out/wasm_whatever',
...@@ -254,7 +254,7 @@ void main() { ...@@ -254,7 +254,7 @@ void main() {
); );
expect( expect(
await localWebEngineLocator.findEnginePath(localEngine: localWebEngine.path), await localWebEngineLocator.findEnginePath(null, localWebEngine.path, null),
matchesEngineBuildPaths( matchesEngineBuildPaths(
hostEngine: '/arbitrary/engine/src/out/web_whatever', hostEngine: '/arbitrary/engine/src/out/web_whatever',
targetEngine: '/arbitrary/engine/src/out/web_whatever', targetEngine: '/arbitrary/engine/src/out/web_whatever',
......
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