diff --git a/lib/web_ui/dev/steps/compile_tests_step.dart b/lib/web_ui/dev/steps/compile_tests_step.dart index 10a560e76fd99..86088aa7253eb 100644 --- a/lib/web_ui/dev/steps/compile_tests_step.dart +++ b/lib/web_ui/dev/steps/compile_tests_step.dart @@ -258,14 +258,6 @@ Future compileUnitTest(FilePath input, { required bool forCanvasKit }) asy '-DFLUTTER_WEB_AUTO_DETECT=false', '-DFLUTTER_WEB_USE_SKIA=$forCanvasKit', - // Enable the image decoder experiment in tests so we can test the new - // functionality. WASM decoders are still tested by forcing the value of - // `browserSupportsImageDecoder` to false in the test. See also: - // - // lib/web_ui/test/canvaskit/image_golden_test.dart - // TODO(yjbanov): https://github.com/flutter/flutter/issues/95277 - '-DEXPERIMENTAL_IMAGE_DECODER=true', - '-O2', '-o', targetFileName, // target path. diff --git a/lib/web_ui/lib/src/engine/safe_browser_api.dart b/lib/web_ui/lib/src/engine/safe_browser_api.dart index 309c4c31d1fd9..498428df10025 100644 --- a/lib/web_ui/lib/src/engine/safe_browser_api.dart +++ b/lib/web_ui/lib/src/engine/safe_browser_api.dart @@ -219,16 +219,22 @@ html.CanvasElement? tryCreateCanvasElement(int width, int height) { @JS('window.ImageDecoder') external Object? get _imageDecoderConstructor; -/// Hides `image_web_codecs.dart` behind a flag. -// TODO(yjbanov): https://github.com/flutter/flutter/issues/95277 -const bool _imageDecoderExperimentEnabled = bool.fromEnvironment( - 'EXPERIMENTAL_IMAGE_DECODER', - defaultValue: false, +/// Environment variable that allows the developer to opt out of using browser's +/// `ImageDecoder` API, and use the WASM codecs bundled with CanvasKit. +/// +/// While all reported severe issues with `ImageDecoder` have been fixed, this +/// API remains relatively new. This option will allow developers to opt out of +/// it, if they hit a severe bug that we did not anticipate. +// TODO(yjbanov): remove this flag once we're fully confident in the new API. +// https://github.com/flutter/flutter/issues/95277 +const bool _browserImageDecodingEnabled = bool.fromEnvironment( + 'BROWSER_IMAGE_DECODING_ENABLED', + defaultValue: true, ); /// Whether the current browser supports `ImageDecoder`. bool browserSupportsImageDecoder = - _imageDecoderExperimentEnabled && + _browserImageDecodingEnabled && _imageDecoderConstructor != null && browserEngine == BrowserEngine.blink;