@@ -42,7 +42,14 @@ enum _ExperimentPreferences {
4242 /// Whether a user has opted out of the dart2wasm experiment.
4343 wasmOptOut;
4444
45- String get storageKey => '$storagePrefix .$name ' ;
45+ String get storageKey {
46+ if (name == 'wasm' ) {
47+ _log.warning (
48+ '[deprecated] The "wasm" key is deprecated, use "wasmOptOut" instead.' ,
49+ );
50+ }
51+ return '$storagePrefix .$name ' ;
52+ }
4653
4754 static const storagePrefix = 'experiment' ;
4855}
@@ -180,13 +187,16 @@ class PreferencesController extends DisposableController
180187 Future <void > _initWasmEnabled () async {
181188 wasmEnabled.value = kIsWasm;
182189
190+ final queryParams = DevToolsQueryParams .load ();
183191 // If the user forced the dart2js-compiled DevTools via query parameter,
184192 // then set the storage value to match. This will persist across multiple
185193 // sessions of DevTools.
186- if (DevToolsQueryParams .load ().useJs) {
194+ final jsEnabledFromQueryParams = queryParams.useJs;
195+ if (jsEnabledFromQueryParams) {
187196 safeUnawaited (
188- storage.setValue (_ExperimentPreferences .wasm .storageKey, 'false ' ),
197+ storage.setValue (_ExperimentPreferences .wasmOptOut .storageKey, 'true ' ),
189198 );
199+ ga.impression (gac.devToolsMain, gac.forceLoadJs);
190200 }
191201
192202 addAutoDisposeListener (wasmEnabled, () async {
@@ -218,8 +228,6 @@ class PreferencesController extends DisposableController
218228 defaultsTo: false ,
219229 );
220230 final enabledFromStorage = ! optOutFromStorage;
221-
222- final queryParams = DevToolsQueryParams .load ();
223231 final enabledFromQueryParams = queryParams.useWasm;
224232
225233 if (enabledFromQueryParams && ! kIsWasm) {
@@ -247,6 +255,7 @@ class PreferencesController extends DisposableController
247255
248256 final shouldEnableWasm =
249257 (enabledFromStorage || enabledFromQueryParams) &&
258+ ! jsEnabledFromQueryParams &&
250259 kIsWeb &&
251260 // Wasm cannot be enabled if DevTools was built using `flutter run`.
252261 ! usingDebugDevToolsServer;
0 commit comments