From 388f3217e4a89e383c4601576c44fdab1b8cd317 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Tue, 26 Mar 2024 11:23:49 -0700 Subject: [PATCH] [flutter_tools] Enable WebAssembly compilation everywhere, remove feature flag (#145562) --- .../lib/src/commands/build_web.dart | 15 ++++----------- .../flutter_tools/lib/src/commands/test.dart | 2 -- packages/flutter_tools/lib/src/features.dart | 18 ------------------ .../lib/src/flutter_features.dart | 3 --- .../test/general.shard/features_test.dart | 6 ------ .../flutter_build_wasm_test.dart | 4 ---- packages/flutter_tools/test/src/fakes.dart | 4 ---- 7 files changed, 4 insertions(+), 48 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/build_web.dart b/packages/flutter_tools/lib/src/commands/build_web.dart index 7a4c6c06dd0..db67a415317 100644 --- a/packages/flutter_tools/lib/src/commands/build_web.dart +++ b/packages/flutter_tools/lib/src/commands/build_web.dart @@ -97,22 +97,18 @@ class BuildWebCommand extends BuildSubCommand { ); // - // Experimental options + // WebAssembly compilation options // - if (featureFlags.isFlutterWebWasmEnabled) { - argParser.addSeparator('Experimental options'); - } + argParser.addSeparator('WebAssembly compilation options'); argParser.addFlag( FlutterOptions.kWebWasmFlag, help: 'Compile to WebAssembly rather than JavaScript.\n$kWasmMoreInfo', negatable: false, - hide: !featureFlags.isFlutterWebWasmEnabled, ); argParser.addFlag( 'strip-wasm', help: 'Whether to strip the resulting wasm file of static symbol names.', defaultsTo: true, - hide: !featureFlags.isFlutterWebWasmEnabled, ); } @@ -148,16 +144,13 @@ class BuildWebCommand extends BuildSubCommand { final List compilerConfigs; if (boolArg('wasm')) { - if (!featureFlags.isFlutterWebWasmEnabled) { - throwToolExit('Compiling to WebAssembly (wasm) is only available on the beta and master channels.'); - } if (stringArg(FlutterOptions.kWebRendererFlag) != argParser.defaultFor(FlutterOptions.kWebRendererFlag)) { throwToolExit('"--${FlutterOptions.kWebRendererFlag}" cannot be combined with "--${FlutterOptions.kWebWasmFlag}"'); } globals.logger.printBox( - title: 'Experimental feature', + title: 'New feature', ''' - WebAssembly compilation is experimental. + WebAssembly compilation is new. Understand the details before deploying to production. $kWasmMoreInfo''', ); diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart index e37350a791b..abaa42f11f3 100644 --- a/packages/flutter_tools/lib/src/commands/test.dart +++ b/packages/flutter_tools/lib/src/commands/test.dart @@ -12,7 +12,6 @@ import '../build_info.dart'; import '../bundle_builder.dart'; import '../devfs.dart'; import '../device.dart'; -import '../features.dart'; import '../globals.dart' as globals; import '../native_assets.dart'; import '../project.dart'; @@ -240,7 +239,6 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts { FlutterOptions.kWebWasmFlag, help: 'Compile to WebAssembly rather than JavaScript.\n$kWasmMoreInfo', negatable: false, - hide: !featureFlags.isFlutterWebWasmEnabled, ); addDdsOptions(verboseHelp: verboseHelp); diff --git a/packages/flutter_tools/lib/src/features.dart b/packages/flutter_tools/lib/src/features.dart index 7951b15c02f..dae623f31dc 100644 --- a/packages/flutter_tools/lib/src/features.dart +++ b/packages/flutter_tools/lib/src/features.dart @@ -42,9 +42,6 @@ abstract class FeatureFlags { /// Whether custom devices are enabled. bool get areCustomDevicesEnabled => false; - /// Whether WebAssembly compilation for Flutter Web is enabled. - bool get isFlutterWebWasmEnabled => false; - /// Whether animations are used in the command line interface. bool get isCliAnimationEnabled => true; @@ -70,7 +67,6 @@ const List allFeatures = [ flutterIOSFeature, flutterFuchsiaFeature, flutterCustomDevicesFeature, - flutterWebWasm, cliAnimation, nativeAssets, previewDevice, @@ -146,20 +142,6 @@ const Feature flutterCustomDevicesFeature = Feature( ), ); -/// Enabling WebAssembly compilation from `flutter build web` -const Feature flutterWebWasm = Feature( - name: 'WebAssembly compilation from flutter build web', - environmentOverride: 'FLUTTER_WEB_WASM', - beta: FeatureChannelSetting( - available: true, - enabledByDefault: true, - ), - master: FeatureChannelSetting( - available: true, - enabledByDefault: true, - ), -); - const String kCliAnimationsFeatureName = 'cli-animations'; /// The [Feature] for CLI animations. diff --git a/packages/flutter_tools/lib/src/flutter_features.dart b/packages/flutter_tools/lib/src/flutter_features.dart index ebb3403b154..f9e961c219a 100644 --- a/packages/flutter_tools/lib/src/flutter_features.dart +++ b/packages/flutter_tools/lib/src/flutter_features.dart @@ -44,9 +44,6 @@ class FlutterFeatureFlags implements FeatureFlags { @override bool get areCustomDevicesEnabled => isEnabled(flutterCustomDevicesFeature); - @override - bool get isFlutterWebWasmEnabled => isEnabled(flutterWebWasm); - @override bool get isCliAnimationEnabled { if (_platform.environment['TERM'] == 'dumb') { diff --git a/packages/flutter_tools/test/general.shard/features_test.dart b/packages/flutter_tools/test/general.shard/features_test.dart index 3bd8ae7a235..c997384c691 100644 --- a/packages/flutter_tools/test/general.shard/features_test.dart +++ b/packages/flutter_tools/test/general.shard/features_test.dart @@ -81,12 +81,6 @@ void main() { expect(featureFlags.isWebEnabled, true); }); - testWithoutContext('Flutter web wasm only enable on master', () { - expect(flutterWebWasm.getSettingForChannel('master').enabledByDefault, isTrue); - expect(flutterWebWasm.getSettingForChannel('beta').enabledByDefault, isTrue); - expect(flutterWebWasm.getSettingForChannel('stable').enabledByDefault, isFalse); - }); - testWithoutContext('Flutter web help string', () { expect(flutterWebFeature.generateHelpMessage(), 'Enable or disable Flutter for web.'); diff --git a/packages/flutter_tools/test/integration.shard/flutter_build_wasm_test.dart b/packages/flutter_tools/test/integration.shard/flutter_build_wasm_test.dart index 40716aed39e..2af73f7d2ab 100644 --- a/packages/flutter_tools/test/integration.shard/flutter_build_wasm_test.dart +++ b/packages/flutter_tools/test/integration.shard/flutter_build_wasm_test.dart @@ -6,7 +6,6 @@ import 'dart:io'; import 'package:file_testing/file_testing.dart'; import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/features.dart'; import '../src/common.dart'; import 'test_utils.dart'; @@ -42,9 +41,6 @@ void main() { '--wasm', ], workingDirectory: exampleAppDir.path, - environment: { - flutterWebWasm.environmentOverride!: 'true' - }, ); expect(result, const ProcessResultMatcher()); diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart index 41257b92563..aa874cfedda 100644 --- a/packages/flutter_tools/test/src/fakes.dart +++ b/packages/flutter_tools/test/src/fakes.dart @@ -469,7 +469,6 @@ class TestFeatureFlags implements FeatureFlags { this.isIOSEnabled = true, this.isFuchsiaEnabled = false, this.areCustomDevicesEnabled = false, - this.isFlutterWebWasmEnabled = false, this.isCliAnimationEnabled = true, this.isNativeAssetsEnabled = false, this.isPreviewDeviceEnabled = false, @@ -499,9 +498,6 @@ class TestFeatureFlags implements FeatureFlags { @override final bool areCustomDevicesEnabled; - @override - final bool isFlutterWebWasmEnabled; - @override final bool isCliAnimationEnabled;