diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart index 28bcd04e85294..f9cb14eb2ff2f 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -136,16 +136,8 @@ extension CanvasKitExtension on CanvasKit { Object src, SkPartialImageInfo info, ); - - /// Retrieve the RuntimeEffect namespace for null checking. - external Object? get RuntimeEffect; } -// TODO(jonahwilliams): remove this once all CanvasKit versions -// are built in the SDK. -// https://github.com/flutter/flutter/issues/114260 -final bool isRuntimeEffectAvailable = windowFlutterCanvasKit?.RuntimeEffect != null; - @JS('window.CanvasKitInit') external Object _CanvasKitInit(CanvasKitInitOptions options); diff --git a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart index 0dba09e70e588..800a7f4926814 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/renderer.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/renderer.dart @@ -384,9 +384,6 @@ class CanvasKitRenderer implements Renderer { if (_programs.containsKey(assetKey)) { return _programs[assetKey]!; } - if (!isRuntimeEffectAvailable) { - throw Exception('FragmentProgram is not supported.'); - } return _programs[assetKey] = assetManager.load(assetKey).then((ByteData data) { return CkFragmentProgram.fromBytes(assetKey, data.buffer.asUint8List()); }); diff --git a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart index 2eedcc1d6891f..3dbf24fd66dea 100644 --- a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart +++ b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart @@ -349,44 +349,41 @@ void _shaderTests() { }); test('RuntimeEffect', () { - // TODO(hterkelsen): Remove this check when local CanvasKit is default. - if (isRuntimeEffectAvailable) { - const String kSkSlProgram = r''' + const String kSkSlProgram = r''' half4 main(vec2 fragCoord) { return vec4(1.0, 0.0, 0.0, 1.0); } '''; - final SkRuntimeEffect? effect = MakeRuntimeEffect(kSkSlProgram); - expect(effect, isNotNull); + final SkRuntimeEffect? effect = MakeRuntimeEffect(kSkSlProgram); + expect(effect, isNotNull); - const String kInvalidSkSlProgram = ''; + const String kInvalidSkSlProgram = ''; - // Invalid SkSL returns null. - final SkRuntimeEffect? invalidEffect = MakeRuntimeEffect(kInvalidSkSlProgram); - expect(invalidEffect, isNull); + // Invalid SkSL returns null. + final SkRuntimeEffect? invalidEffect = MakeRuntimeEffect(kInvalidSkSlProgram); + expect(invalidEffect, isNull); - final SkShader? shader = effect!.makeShader([]); - expect(shader, isNotNull); + final SkShader? shader = effect!.makeShader([]); + expect(shader, isNotNull); - // mismatched uniforms returns null. - final SkShader? invalidShader = effect.makeShader([1]); + // mismatched uniforms returns null. + final SkShader? invalidShader = effect.makeShader([1]); - expect(invalidShader, isNull); + expect(invalidShader, isNull); - const String kSkSlProgramWithUniforms = r''' + const String kSkSlProgramWithUniforms = r''' uniform vec4 u_color; half4 main(vec2 fragCoord) { - return u_color; +return u_color; } - '''; +'''; - final SkShader? shaderWithUniform = MakeRuntimeEffect(kSkSlProgramWithUniforms) - !.makeShader([1.0, 0.0, 0.0, 1.0]); + final SkShader? shaderWithUniform = MakeRuntimeEffect(kSkSlProgramWithUniforms) + !.makeShader([1.0, 0.0, 0.0, 1.0]); - expect(shaderWithUniform, isNotNull); - } + expect(shaderWithUniform, isNotNull); }); } diff --git a/lib/web_ui/test/canvaskit/fragment_program_test.dart b/lib/web_ui/test/canvaskit/fragment_program_test.dart index b1e402aead453..178188ccf6635 100644 --- a/lib/web_ui/test/canvaskit/fragment_program_test.dart +++ b/lib/web_ui/test/canvaskit/fragment_program_test.dart @@ -186,29 +186,26 @@ void testMain() { }); test('FragmentProgram can be created from JSON IPLR bundle', () async { - // TODO(hterkelsen): Remove this check when local CanvasKit is default. - if (isRuntimeEffectAvailable) { - final Uint8List data = utf8.encode(kJsonIPLR) as Uint8List; - final CkFragmentProgram program = await CkFragmentProgram.fromBytes('test', data); + final Uint8List data = utf8.encode(kJsonIPLR) as Uint8List; + final CkFragmentProgram program = await CkFragmentProgram.fromBytes('test', data); - expect(program.effect, isNotNull); - expect(program.floatCount, 32); - expect(program.textureCount, 0); - expect(program.uniforms, hasLength(17)); - expect(program.name, 'test'); + expect(program.effect, isNotNull); + expect(program.floatCount, 32); + expect(program.textureCount, 0); + expect(program.uniforms, hasLength(17)); + expect(program.name, 'test'); - final ui.FragmentShader shader = program.fragmentShader(); + final ui.FragmentShader shader = program.fragmentShader(); - shader.setFloat(0, 4); - shader.dispose(); + shader.setFloat(0, 4); + shader.dispose(); - expect(shader.debugDisposed, true); + expect(shader.debugDisposed, true); - final ui.FragmentShader shader2 = program.fragmentShader(); + final ui.FragmentShader shader2 = program.fragmentShader(); - shader.setFloat(0, 5); - shader2.dispose(); - expect(shader2.debugDisposed, true); - } + shader.setFloat(0, 5); + shader2.dispose(); + expect(shader2.debugDisposed, true); }); }