diff --git a/lib/web_ui/dev/steps/compile_tests_step.dart b/lib/web_ui/dev/steps/compile_tests_step.dart index 86088aa7253eb..10a560e76fd99 100644 --- a/lib/web_ui/dev/steps/compile_tests_step.dart +++ b/lib/web_ui/dev/steps/compile_tests_step.dart @@ -258,6 +258,14 @@ 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 4e5b17ff077a8..2846146ecb89e 100644 --- a/lib/web_ui/lib/src/engine/safe_browser_api.dart +++ b/lib/web_ui/lib/src/engine/safe_browser_api.dart @@ -218,9 +218,18 @@ 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, +); + /// Whether the current browser supports `ImageDecoder`. bool browserSupportsImageDecoder = - _imageDecoderConstructor != null && browserEngine == BrowserEngine.blink; + _imageDecoderExperimentEnabled && + _imageDecoderConstructor != null && + browserEngine == BrowserEngine.blink; /// Sets the value of [browserSupportsImageDecoder] to its default value. void debugResetBrowserSupportsImageDecoder() {