diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index be03c284e9bc2..d59078a181cf0 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -207,6 +207,7 @@ class CanvasPool extends _SaveStackTracking { html.CanvasElement? _allocCanvas(int width, int height) { final dynamic canvas = + // ignore: implicit_dynamic_function js_util.callMethod(html.document, 'createElement', ['CANVAS']); if (canvas != null) { try { diff --git a/lib/web_ui/lib/src/engine/dom_renderer.dart b/lib/web_ui/lib/src/engine/dom_renderer.dart index aaf97b1d89d6d..a015b9ff92157 100644 --- a/lib/web_ui/lib/src/engine/dom_renderer.dart +++ b/lib/web_ui/lib/src/engine/dom_renderer.dart @@ -109,11 +109,13 @@ class DomRenderer { /// See for more details: /// https://developer.mozilla.org/en-US/docs/Web/API/Document/hasFocus bool get windowHasFocus => + // ignore: implicit_dynamic_function js_util.callMethod(html.document, 'hasFocus', []) as bool; void _setupHotRestart() { // This persists across hot restarts to clear stale DOM. _staleHotRestartState = + // ignore: implicit_dynamic_function js_util.getProperty(html.window, _staleHotRestartStore) as List?; if (_staleHotRestartState == null) { _staleHotRestartState = []; @@ -232,6 +234,7 @@ class DomRenderer { static void setElementTransform(html.Element element, String transformValue) { js_util.setProperty( + // ignore: implicit_dynamic_function js_util.getProperty(element, 'style') as Object, 'transform', transformValue, @@ -453,6 +456,7 @@ class DomRenderer { // Creates a [HostNode] into a `root` [html.Element]. HostNode _createHostNode(html.Element root) { + // ignore: implicit_dynamic_function if (js_util.getProperty(root, 'attachShadow') != null) { return ShadowDomHostNode(root); } else { @@ -523,6 +527,7 @@ class DomRenderer { double startAngle, double endAngle, bool antiClockwise) { + // ignore: implicit_dynamic_function _ellipseFeatureDetected ??= js_util.getProperty(context, 'ellipse') != null; if (_ellipseFeatureDetected!) { context.ellipse(centerX, centerY, radiusX, radiusY, rotation, startAngle, @@ -649,6 +654,7 @@ class DomRenderer { void vibrate(int durationMs) { final html.Navigator navigator = html.window.navigator; if (js_util.hasProperty(navigator, 'vibrate')) { + // ignore: implicit_dynamic_function js_util.callMethod(navigator, 'vibrate', [durationMs]); } } diff --git a/lib/web_ui/lib/src/engine/html/offscreen_canvas.dart b/lib/web_ui/lib/src/engine/html/offscreen_canvas.dart index 3fae5d1096ad3..fb7bbfb6c27a0 100644 --- a/lib/web_ui/lib/src/engine/html/offscreen_canvas.dart +++ b/lib/web_ui/lib/src/engine/html/offscreen_canvas.dart @@ -64,6 +64,7 @@ class OffScreenCanvas { void transferImage(Object targetContext) { // Actual size of canvas may be larger than viewport size. Use // source/destination to draw part of the image data. + // ignore: implicit_dynamic_function js_util.callMethod(targetContext, 'drawImage', [offScreenCanvas ?? canvasElement!, 0, 0, width, height, 0, 0, width, height]); @@ -77,6 +78,7 @@ class OffScreenCanvas { final html.FileReader fileReader = html.FileReader(); fileReader.onLoad.listen((html.ProgressEvent event) { completer.complete( + // ignore: implicit_dynamic_function js_util.getProperty(js_util.getProperty(event, 'target') as Object, 'result') as String, ); }); @@ -90,6 +92,7 @@ class OffScreenCanvas { /// Draws an image to canvas for both offscreen canvas canvas context2d. void drawImage(Object image, int x, int y, int width, int height) { + // ignore: implicit_dynamic_function js_util.callMethod( getContext2d()!, 'drawImage', [image, x, y, width, height]); } diff --git a/lib/web_ui/lib/src/engine/html/path/path_ref.dart b/lib/web_ui/lib/src/engine/html/path/path_ref.dart index 14f14a3756a72..200fe9d45f4fb 100644 --- a/lib/web_ui/lib/src/engine/html/path/path_ref.dart +++ b/lib/web_ui/lib/src/engine/html/path/path_ref.dart @@ -429,7 +429,9 @@ class PathRef { resetToSize(verbCount, pointCount, weightCount, additionalReserveVerbs, additionalReservePoints); + // ignore: implicit_dynamic_function js_util.callMethod(_fVerbs, 'set', [ref._fVerbs]); + // ignore: implicit_dynamic_function js_util.callMethod(fPoints, 'set', [ref.fPoints]); if (ref._conicWeights == null) { _conicWeights = null; @@ -456,6 +458,7 @@ class PathRef { if (newLength > _fPointsCapacity) { _fPointsCapacity = newLength + 10; final Float32List newPoints = Float32List(_fPointsCapacity * 2); + // ignore: implicit_dynamic_function js_util.callMethod(newPoints, 'set', [fPoints]); fPoints = newPoints; } @@ -466,6 +469,7 @@ class PathRef { if (newLength > _fVerbsCapacity) { _fVerbsCapacity = newLength + 8; final Uint8List newVerbs = Uint8List(_fVerbsCapacity); + // ignore: implicit_dynamic_function js_util.callMethod(newVerbs, 'set', [_fVerbs]); _fVerbs = newVerbs; } @@ -477,6 +481,7 @@ class PathRef { _conicWeightsCapacity = newLength + 4; final Float32List newWeights = Float32List(_conicWeightsCapacity); if (_conicWeights != null) { + // ignore: implicit_dynamic_function js_util.callMethod(newWeights, 'set', [_conicWeights]); } _conicWeights = newWeights; diff --git a/lib/web_ui/lib/src/engine/html/render_vertices.dart b/lib/web_ui/lib/src/engine/html/render_vertices.dart index 7034c392a901a..2795443441283 100644 --- a/lib/web_ui/lib/src/engine/html/render_vertices.dart +++ b/lib/web_ui/lib/src/engine/html/render_vertices.dart @@ -204,6 +204,7 @@ class _WebGlRenderer implements GlRenderer { bufferVertexData(gl, positions, 1.0); // Setup data format for attribute. + // ignore: implicit_dynamic_function js_util.callMethod(gl.glContext, 'vertexAttribPointer', [ positionAttributeLocation, 2, @@ -233,6 +234,7 @@ class _WebGlRenderer implements GlRenderer { gl.bufferData(vertices.colors, gl.kStaticDraw); } final Object colorLoc = gl.getAttributeLocation(glProgram.program, 'color'); + // ignore: implicit_dynamic_function js_util.callMethod(gl.glContext, 'vertexAttribPointer', [colorLoc, 4, gl.kUnsignedByte, true, 0, 0]); gl.enableVertexAttribArray(colorLoc); @@ -374,6 +376,7 @@ class _WebGlRenderer implements GlRenderer { gl.bindArrayBuffer(positionsBuffer); gl.bufferData(vertices, gl.kStaticDraw); // Point an attribute to the currently bound vertex buffer object. + // ignore: implicit_dynamic_function js_util.callMethod(gl.glContext, 'vertexAttribPointer', [0, 2, gl.kFloat, false, 0, 0]); gl.enableVertexAttribArray(0); @@ -389,6 +392,7 @@ class _WebGlRenderer implements GlRenderer { 0xFF00FFFF, ]); gl.bufferData(colors, gl.kStaticDraw); + // ignore: implicit_dynamic_function js_util.callMethod(gl.glContext, 'vertexAttribPointer', [1, 4, gl.kUnsignedByte, true, 0, 0]); gl.enableVertexAttribArray(1); diff --git a/lib/web_ui/lib/src/engine/html/shaders/image_shader.dart b/lib/web_ui/lib/src/engine/html/shaders/image_shader.dart index 483e8fdc362e3..a5f85b1dd7b88 100644 --- a/lib/web_ui/lib/src/engine/html/shaders/image_shader.dart +++ b/lib/web_ui/lib/src/engine/html/shaders/image_shader.dart @@ -95,8 +95,10 @@ class EngineImageShader implements ui.ImageShader { /// To draw image flipped we set translate and scale and pass /// negative width/height to drawImage. if (flipX != 1 || flipY != 1) { + // ignore: implicit_dynamic_function js_util.callMethod(renderContext, 'scale', [flipX, flipY]); } + // ignore: implicit_dynamic_function js_util.callMethod(renderContext, 'drawImage', [ image.imgElement, if (x == 0) 0 else -2 * imageWidth, @@ -104,6 +106,7 @@ class EngineImageShader implements ui.ImageShader { ]); if (flipX != 1 || flipY != 1) { /// Restore transform. This is faster than save/restore on context. + // ignore: implicit_dynamic_function js_util.callMethod(renderContext, 'scale', [flipX, flipY]); } } @@ -205,6 +208,7 @@ class EngineImageShader implements ui.ImageShader { bufferVertexData(gl, vertices, ui.window.devicePixelRatio); /// Setup data format for attribute. + // ignore: implicit_dynamic_function js_util.callMethod(gl.glContext, 'vertexAttribPointer', [ positionAttributeLocation, 2, diff --git a/lib/web_ui/lib/src/engine/html/shaders/webgl_context.dart b/lib/web_ui/lib/src/engine/html/shaders/webgl_context.dart index 1343647ec6eba..22d8888f409f8 100644 --- a/lib/web_ui/lib/src/engine/html/shaders/webgl_context.dart +++ b/lib/web_ui/lib/src/engine/html/shaders/webgl_context.dart @@ -81,6 +81,7 @@ class GlContext { double left, double top) { // Actual size of canvas may be larger than viewport size. Use // source/destination to draw part of the image data. + // ignore: implicit_dynamic_function js_util.callMethod(context, 'drawImage', [_canvas, 0, 0, _widthInPixels, _heightInPixels, left, top, _widthInPixels, _heightInPixels]); @@ -111,8 +112,11 @@ class GlContext { if (shader == null) { throw Exception(error); } + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'shaderSource', [shader, source]); + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'compileShader', [shader]); + // ignore: implicit_dynamic_function final bool shaderStatus = js_util.callMethod( glContext, 'getShaderParameter', @@ -123,16 +127,19 @@ class GlContext { } return shader; } - Object createProgram() => + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'createProgram', const []) as Object; void attachShader(Object? program, Object shader) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'attachShader', [program, shader]); } void linkProgram(Object program) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'linkProgram', [program]); + // ignore: implicit_dynamic_function final bool programStatus = js_util.callMethod( glContext, 'getProgramParameter', @@ -144,6 +151,7 @@ class GlContext { } void useProgram(GlProgram program) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'useProgram', [program.program]); } @@ -151,6 +159,7 @@ class GlContext { js_util.callMethod(glContext, 'createBuffer', const []); void bindArrayBuffer(Object? buffer) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'bindBuffer', [kArrayBuffer, buffer]); } @@ -158,16 +167,19 @@ class GlContext { js_util.callMethod(glContext, 'createVertexArray', const []); void bindVertexArray(Object vertexObjectArray) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'bindVertexArray', [vertexObjectArray]); } void unbindVertexArray() { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'bindVertexArray', [null]); } void bindElementArrayBuffer(Object? buffer) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'bindBuffer', [kElementArrayBuffer, buffer]); } @@ -178,10 +190,12 @@ class GlContext { js_util.callMethod(glContext, 'generateMipmap', [target]); void bindTexture(dynamic target, Object? buffer) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'bindTexture', [target, buffer]); } void activeTexture(int textureUnit) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'activeTexture', [textureUnit]); } @@ -189,9 +203,11 @@ class GlContext { dynamic format, dynamic dataType, dynamic pixels, {int? width, int? height, int border = 0}) { if (width == null) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'texImage2D', [ target, level, internalFormat, format, dataType, pixels]); } else { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'texImage2D', [ target, level, internalFormat, width, height, border, format, dataType, pixels]); @@ -199,33 +215,40 @@ class GlContext { } void texParameteri(dynamic target, dynamic parameterName, dynamic value) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'texParameteri', [ target, parameterName, value]); } void deleteBuffer(Object buffer) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'deleteBuffer', [buffer]); } void bufferData(TypedData? data, dynamic type) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'bufferData', [kArrayBuffer, data, type]); } void bufferElementData(TypedData? data, dynamic type) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'bufferData', [kElementArrayBuffer, data, type]); } void enableVertexAttribArray(dynamic index) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'enableVertexAttribArray', [index]); } /// Clear background. void clear() { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'clear', [kColorBufferBit]); } /// Destroys gl context. void dispose() { + // ignore: implicit_dynamic_function js_util.callMethod( _getExtension('WEBGL_lose_context') as Object, 'loseContext', @@ -234,28 +257,34 @@ class GlContext { } void deleteProgram(Object program) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'deleteProgram', [program]); } void deleteShader(Object shader) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'deleteShader', [shader]); } dynamic _getExtension(String extensionName) => + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'getExtension', [extensionName]); void drawTriangles(int triangleCount, ui.VertexMode vertexMode) { final dynamic mode = _triangleTypeFromMode(vertexMode); + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'drawArrays', [mode, 0, triangleCount]); } void drawElements(dynamic type, int indexCount, dynamic indexType) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'drawElements', [type, indexCount, indexType, 0]); } /// Sets affine transformation from normalized device coordinates /// to window coordinates void viewport(double x, double y, double width, double height) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'viewport', [x, y, width, height]); } @@ -271,76 +300,100 @@ class GlContext { } Object? _createShader(String shaderType) => js_util.callMethod( + // ignore: implicit_dynamic_function glContext, 'createShader', [js_util.getProperty(glContext, shaderType)]); /// Error state of gl context. + // ignore: implicit_dynamic_function dynamic get error => js_util.callMethod(glContext, 'getError', const []); /// Shader compiler error, if this returns [kFalse], to get details use /// [getShaderInfoLog]. dynamic get compileStatus => + // ignore: implicit_dynamic_function _kCompileStatus ??= js_util.getProperty(glContext, 'COMPILE_STATUS'); dynamic get kArrayBuffer => + // ignore: implicit_dynamic_function _kArrayBuffer ??= js_util.getProperty(glContext, 'ARRAY_BUFFER'); dynamic get kElementArrayBuffer => + // ignore: implicit_dynamic_function _kElementArrayBuffer ??= js_util.getProperty(glContext, 'ELEMENT_ARRAY_BUFFER'); dynamic get kLinkStatus => + // ignore: implicit_dynamic_function _kLinkStatus ??= js_util.getProperty(glContext, 'LINK_STATUS'); + // ignore: implicit_dynamic_function dynamic get kFloat => _kFloat ??= js_util.getProperty(glContext, 'FLOAT'); + // ignore: implicit_dynamic_function dynamic get kRGBA => _kRGBA ??= js_util.getProperty(glContext, 'RGBA'); dynamic get kUnsignedByte => + // ignore: implicit_dynamic_function _kUnsignedByte ??= js_util.getProperty(glContext, 'UNSIGNED_BYTE'); dynamic get kUnsignedShort => + // ignore: implicit_dynamic_function _kUnsignedShort ??= js_util.getProperty(glContext, 'UNSIGNED_SHORT'); dynamic get kStaticDraw => + // ignore: implicit_dynamic_function _kStaticDraw ??= js_util.getProperty(glContext, 'STATIC_DRAW'); dynamic get kTriangles => + // ignore: implicit_dynamic_function _kTriangles ??= js_util.getProperty(glContext, 'TRIANGLES'); dynamic get kTriangleFan => + // ignore: implicit_dynamic_function _kTriangles ??= js_util.getProperty(glContext, 'TRIANGLE_FAN'); dynamic get kTriangleStrip => + // ignore: implicit_dynamic_function _kTriangles ??= js_util.getProperty(glContext, 'TRIANGLE_STRIP'); dynamic get kColorBufferBit => + // ignore: implicit_dynamic_function _kColorBufferBit ??= js_util.getProperty(glContext, 'COLOR_BUFFER_BIT'); dynamic get kTexture2D => + // ignore: implicit_dynamic_function _kTexture2D ??= js_util.getProperty(glContext, 'TEXTURE_2D'); int get kTexture0 => + // ignore: implicit_dynamic_function _kTexture0 ??= js_util.getProperty(glContext, 'TEXTURE0') as int; dynamic get kTextureWrapS => + // ignore: implicit_dynamic_function _kTextureWrapS ??= js_util.getProperty(glContext, 'TEXTURE_WRAP_S'); dynamic get kTextureWrapT => + // ignore: implicit_dynamic_function _kTextureWrapT ??= js_util.getProperty(glContext, 'TEXTURE_WRAP_T'); dynamic get kRepeat => + // ignore: implicit_dynamic_function _kRepeat ??= js_util.getProperty(glContext, 'REPEAT'); dynamic get kClampToEdge => + // ignore: implicit_dynamic_function _kClampToEdge ??= js_util.getProperty(glContext, 'CLAMP_TO_EDGE'); dynamic get kMirroredRepeat => + // ignore: implicit_dynamic_function _kMirroredRepeat ??= js_util.getProperty(glContext, 'MIRRORED_REPEAT'); dynamic get kLinear => + // ignore: implicit_dynamic_function _kLinear ??= js_util.getProperty(glContext, 'LINEAR'); dynamic get kTextureMinFilter => + // ignore: implicit_dynamic_function _kTextureMinFilter ??= js_util.getProperty(glContext, 'TEXTURE_MIN_FILTER'); @@ -375,41 +428,49 @@ class GlContext { /// Sets float uniform value. void setUniform1f(Object uniform, double value) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'uniform1f', [uniform, value]); } /// Sets vec2 uniform values. void setUniform2f(Object uniform, double value1, double value2) { + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'uniform2f', [uniform, value1, value2]); } /// Sets vec4 uniform values. void setUniform4f(Object uniform, double value1, double value2, double value3, double value4) { + // ignore: implicit_dynamic_function js_util.callMethod( glContext, 'uniform4f', [uniform, value1, value2, value3, value4]); } /// Sets mat4 uniform values. void setUniformMatrix4fv(Object uniform, bool transpose, Float32List value) { + // ignore: implicit_dynamic_function js_util.callMethod( glContext, 'uniformMatrix4fv', [uniform, transpose, value]); } /// Shader compile error log. dynamic getShaderInfoLog(Object glShader) { + // ignore: implicit_dynamic_function return js_util.callMethod(glContext, 'getShaderInfoLog', [glShader]); } /// Errors that occurred during failed linking or validation of program /// objects. Typically called after [linkProgram]. String? getProgramInfoLog(Object glProgram) { + // ignore: implicit_dynamic_function return js_util.callMethod(glContext, 'getProgramInfoLog', [glProgram]) as String?; } int? get drawingBufferWidth => + // ignore: implicit_dynamic_function js_util.getProperty(glContext, 'drawingBufferWidth') as int?; int? get drawingBufferHeight => + // ignore: implicit_dynamic_function js_util.getProperty(glContext, 'drawingBufferWidth') as int?; /// Reads gl contents as image data. @@ -423,6 +484,7 @@ class GlContext { browserEngine == BrowserEngine.firefox) { final Uint8List pixels = Uint8List(bufferWidth * bufferHeight * kBytesPerPixel); + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'readPixels', [0, 0, bufferWidth, bufferHeight, kRGBA, kUnsignedByte, pixels]); return html.ImageData( @@ -430,6 +492,7 @@ class GlContext { } else { final Uint8ClampedList pixels = Uint8ClampedList(bufferWidth * bufferHeight * kBytesPerPixel); + // ignore: implicit_dynamic_function js_util.callMethod(glContext, 'readPixels', [0, 0, bufferWidth, bufferHeight, kRGBA, kUnsignedByte, pixels]); return html.ImageData(pixels, bufferWidth, bufferHeight); @@ -444,6 +507,7 @@ class GlContext { // allocation. if (_canvas != null && js_util.hasProperty(_canvas!, 'transferToImageBitmap')) { + // ignore: implicit_dynamic_function js_util.callMethod(_canvas!, 'getContext', ['webgl2']); final Object? imageBitmap = js_util.callMethod(_canvas!, 'transferToImageBitmap', []); diff --git a/lib/web_ui/lib/src/engine/html_image_codec.dart b/lib/web_ui/lib/src/engine/html_image_codec.dart index c52c9e4b781cd..234fa1fec8126 100644 --- a/lib/web_ui/lib/src/engine/html_image_codec.dart +++ b/lib/web_ui/lib/src/engine/html_image_codec.dart @@ -13,7 +13,9 @@ import 'browser_detection.dart'; import 'util.dart'; Object? get _jsImageDecodeFunction => js_util.getProperty( + // ignore: implicit_dynamic_function js_util.getProperty( + // ignore: implicit_dynamic_function js_util.getProperty(html.window, 'Image') as Object, 'prototype', ) as Object, diff --git a/lib/web_ui/lib/src/engine/pointer_binding.dart b/lib/web_ui/lib/src/engine/pointer_binding.dart index a70e644daf82d..71aec20b0ae7c 100644 --- a/lib/web_ui/lib/src/engine/pointer_binding.dart +++ b/lib/web_ui/lib/src/engine/pointer_binding.dart @@ -180,6 +180,7 @@ abstract class _BaseAdapter { // For native listener, we will need to remove it through native javascript // api. _nativeListeners.forEach((String eventName, html.EventListener listener) { + // ignore: implicit_dynamic_function js_util.callMethod( glassPaneElement, 'removeEventListener', [ @@ -293,10 +294,12 @@ mixin _WheelEventListenerMixin on _BaseAdapter { } void _addWheelEventListener(html.EventListener handler) { + // ignore: implicit_dynamic_function final Object eventOptions = js_util.newObject() as Object; final html.EventListener jsHandler = js.allowInterop((html.Event event) => handler(event)); _BaseAdapter._nativeListeners['wheel'] = jsHandler; js_util.setProperty(eventOptions, 'passive', false); + // ignore: implicit_dynamic_function js_util.callMethod( glassPaneElement, 'addEventListener', [ diff --git a/lib/web_ui/lib/src/engine/profiler.dart b/lib/web_ui/lib/src/engine/profiler.dart index b5f14383d3811..59a9466e1f0c8 100644 --- a/lib/web_ui/lib/src/engine/profiler.dart +++ b/lib/web_ui/lib/src/engine/profiler.dart @@ -106,6 +106,7 @@ class Profiler { _checkBenchmarkMode(); final OnBenchmark? onBenchmark = + // ignore: implicit_dynamic_function js_util.getProperty(html.window, '_flutter_internal_on_benchmark') as OnBenchmark?; if (onBenchmark != null) { onBenchmark(name, value); diff --git a/lib/web_ui/lib/src/engine/text/font_collection.dart b/lib/web_ui/lib/src/engine/text/font_collection.dart index c56b77d5f057a..4f2a738509a89 100644 --- a/lib/web_ui/lib/src/engine/text/font_collection.dart +++ b/lib/web_ui/lib/src/engine/text/font_collection.dart @@ -195,6 +195,7 @@ class FontManager { // // TODO(mdebbar): Revert this once the dart:html type is fixed. // https://github.com/dart-lang/sdk/issues/45676 + // ignore: implicit_dynamic_function js_util.callMethod(html.document.fonts!, 'add', [fontFace]); }, onError: (dynamic e) { printWarning('Error while trying to load font family "$family":\n$e'); diff --git a/lib/web_ui/lib/src/engine/util.dart b/lib/web_ui/lib/src/engine/util.dart index 026a459a7fca2..0ff475c888155 100644 --- a/lib/web_ui/lib/src/engine/util.dart +++ b/lib/web_ui/lib/src/engine/util.dart @@ -391,6 +391,7 @@ String colorComponentsToCssString(int r, int g, int b, int a) { /// Firefox exception without interfering with others (potentially useful /// for the programmer). bool isNsErrorFailureException(Object e) { + // ignore: implicit_dynamic_function return js_util.getProperty(e, 'name') == 'NS_ERROR_FAILURE'; } diff --git a/lib/web_ui/test/engine/platform_dispatcher_test.dart b/lib/web_ui/test/engine/platform_dispatcher_test.dart index eb2bcdd9ddb6f..4870db4f280e4 100644 --- a/lib/web_ui/test/engine/platform_dispatcher_test.dart +++ b/lib/web_ui/test/engine/platform_dispatcher_test.dart @@ -61,6 +61,7 @@ void testMain() { () async { // Patch browser so that clipboard api is not available. final dynamic originalClipboard = + // ignore: implicit_dynamic_function js_util.getProperty(html.window.navigator, 'clipboard'); js_util.setProperty(html.window.navigator, 'clipboard', null); const MethodCodec codec = JSONMethodCodec(); diff --git a/lib/web_ui/test/engine/pointer_binding_test.dart b/lib/web_ui/test/engine/pointer_binding_test.dart index 8840f0c5feb9b..c804355bf5acd 100644 --- a/lib/web_ui/test/engine/pointer_binding_test.dart +++ b/lib/web_ui/test/engine/pointer_binding_test.dart @@ -2325,6 +2325,7 @@ mixin _ButtonedEventMixin on _BasicEventContext { required double? deltaX, required double? deltaY, }) { + // ignore: implicit_dynamic_function final Function jsWheelEvent = js_util.getProperty(html.window, 'WheelEvent') as Function; final List eventArgs = [ 'wheel', @@ -2336,6 +2337,7 @@ mixin _ButtonedEventMixin on _BasicEventContext { 'deltaY': deltaY, } ]; + // ignore: implicit_dynamic_function return js_util.callConstructor( jsWheelEvent, js_util.jsify(eventArgs) as List, @@ -2553,6 +2555,7 @@ class _MouseEventContext extends _BasicEventContext double? clientY, }) { final Function jsMouseEvent = + // ignore: implicit_dynamic_function js_util.getProperty(html.window, 'MouseEvent') as Function; final List eventArgs = [ type, @@ -2563,6 +2566,7 @@ class _MouseEventContext extends _BasicEventContext 'clientY': clientY, } ]; + // ignore: implicit_dynamic_function return js_util.callConstructor( jsMouseEvent, js_util.jsify(eventArgs) as List, diff --git a/lib/web_ui/test/engine/surface/scene_builder_test.dart b/lib/web_ui/test/engine/surface/scene_builder_test.dart index e97999f05c679..94ab92e3c6787 100644 --- a/lib/web_ui/test/engine/surface/scene_builder_test.dart +++ b/lib/web_ui/test/engine/surface/scene_builder_test.dart @@ -921,6 +921,7 @@ HtmlImage createTestImage({int width = 100, int height = 50}) { ctx.fillRect(66, 0, 33, 50); ctx.fill(); final html.ImageElement imageElement = html.ImageElement(); + // ignore: implicit_dynamic_function imageElement.src = js_util.callMethod(canvas, 'toDataURL', []) as String; return HtmlImage(imageElement, width, height); } diff --git a/lib/web_ui/test/engine/web_experiments_test.dart b/lib/web_ui/test/engine/web_experiments_test.dart index fd31fc9b97ed1..0e0516ebd0880 100644 --- a/lib/web_ui/test/engine/web_experiments_test.dart +++ b/lib/web_ui/test/engine/web_experiments_test.dart @@ -31,6 +31,7 @@ void testMain() { } void jsUpdateExperiment(dynamic name, dynamic enabled) { + // ignore: implicit_dynamic_function js_util.callMethod( html.window, '_flutter_internal_update_experiment', diff --git a/lib/web_ui/test/html/canvas_clip_path_golden_test.dart b/lib/web_ui/test/html/canvas_clip_path_golden_test.dart index fc8ce74b0facd..0be4e70c1e559 100644 --- a/lib/web_ui/test/html/canvas_clip_path_golden_test.dart +++ b/lib/web_ui/test/html/canvas_clip_path_golden_test.dart @@ -140,6 +140,7 @@ engine.HtmlImage createTestImage({int width = 200, int height = 150}) { ctx.fillRect(2 * width / 3, 0, width / 3, height); ctx.fill(); final html.ImageElement imageElement = html.ImageElement(); + // ignore: implicit_dynamic_function imageElement.src = js_util.callMethod(canvas, 'toDataURL', []) as String; return engine.HtmlImage(imageElement, width, height); } diff --git a/lib/web_ui/test/html/compositing/canvas_blend_golden_test.dart b/lib/web_ui/test/html/compositing/canvas_blend_golden_test.dart index f873ff491a6af..e143b8f0949cb 100644 --- a/lib/web_ui/test/html/compositing/canvas_blend_golden_test.dart +++ b/lib/web_ui/test/html/compositing/canvas_blend_golden_test.dart @@ -120,6 +120,7 @@ HtmlImage createTestImage() { ctx.fillRect(66, 0, 33, 50); ctx.fill(); final html.ImageElement imageElement = html.ImageElement(); + // ignore: implicit_dynamic_function imageElement.src = js_util.callMethod(canvas, 'toDataURL', []) as String; return HtmlImage(imageElement, width, height); } diff --git a/lib/web_ui/test/html/compositing/color_filter_golden_test.dart b/lib/web_ui/test/html/compositing/color_filter_golden_test.dart index 6a3a5097432f6..f07e0ab22724b 100644 --- a/lib/web_ui/test/html/compositing/color_filter_golden_test.dart +++ b/lib/web_ui/test/html/compositing/color_filter_golden_test.dart @@ -189,6 +189,7 @@ HtmlImage createTestImage({int width = 200, int height = 150}) { ctx.fillRect(2 * width / 3, 0, width / 3, height); ctx.fill(); final html.ImageElement imageElement = html.ImageElement(); + // ignore: implicit_dynamic_function imageElement.src = js_util.callMethod(canvas, 'toDataURL', []) as String; return HtmlImage(imageElement, width, height); } diff --git a/lib/web_ui/test/html/drawing/canvas_draw_image_golden_test.dart b/lib/web_ui/test/html/drawing/canvas_draw_image_golden_test.dart index 8c5808cf283bc..a4c9461d52763 100644 --- a/lib/web_ui/test/html/drawing/canvas_draw_image_golden_test.dart +++ b/lib/web_ui/test/html/drawing/canvas_draw_image_golden_test.dart @@ -734,6 +734,7 @@ HtmlImage createTestImage({int width = 100, int height = 50}) { ctx.fillRect(66, 0, 33, 50); ctx.fill(); final html.ImageElement imageElement = html.ImageElement(); + // ignore: implicit_dynamic_function imageElement.src = js_util.callMethod(canvas, 'toDataURL', []) as String; return HtmlImage(imageElement, width, height); } diff --git a/lib/web_ui/test/html/drawing/draw_vertices_golden_test.dart b/lib/web_ui/test/html/drawing/draw_vertices_golden_test.dart index 6e7faae60c2cc..0d3c64fd99631 100644 --- a/lib/web_ui/test/html/drawing/draw_vertices_golden_test.dart +++ b/lib/web_ui/test/html/drawing/draw_vertices_golden_test.dart @@ -424,6 +424,7 @@ Future createTestImage({int width = 50, int height = 40}) { imageElement.onLoad.listen((html.Event event) { completer.complete(HtmlImage(imageElement, width, height)); }); + // ignore: implicit_dynamic_function imageElement.src = js_util.callMethod(canvas, 'toDataURL', []) as String; return completer.future; } diff --git a/lib/web_ui/test/html/shaders/image_shader_golden_test.dart b/lib/web_ui/test/html/shaders/image_shader_golden_test.dart index 082ce39f1aa3c..70156d3e28270 100644 --- a/lib/web_ui/test/html/shaders/image_shader_golden_test.dart +++ b/lib/web_ui/test/html/shaders/image_shader_golden_test.dart @@ -145,6 +145,7 @@ HtmlImage createTestImage() { ctx.fillRect(width2, width2, width2, width2); ctx.fill(); final html.ImageElement imageElement = html.ImageElement(); + // ignore: implicit_dynamic_function imageElement.src = js_util.callMethod(canvas, 'toDataURL', []) as String; return HtmlImage(imageElement, width, height); } diff --git a/lib/web_ui/test/keyboard_test.dart b/lib/web_ui/test/keyboard_test.dart index 8787196d3ed52..cf3004a78c1d8 100644 --- a/lib/web_ui/test/keyboard_test.dart +++ b/lib/web_ui/test/keyboard_test.dart @@ -658,6 +658,7 @@ html.KeyboardEvent dispatchKeyboardEvent( target ??= html.window; final Function jsKeyboardEvent = + // ignore: implicit_dynamic_function js_util.getProperty(html.window, 'KeyboardEvent') as Function; final List eventArgs = [ type, @@ -674,6 +675,7 @@ html.KeyboardEvent dispatchKeyboardEvent( 'cancelable': true, } ]; + // ignore: implicit_dynamic_function final html.KeyboardEvent event = js_util.callConstructor( jsKeyboardEvent, js_util.jsify(eventArgs) as List, diff --git a/lib/web_ui/test/text_editing_test.dart b/lib/web_ui/test/text_editing_test.dart index e9f09b061bfa3..dc4b67fa6eb62 100644 --- a/lib/web_ui/test/text_editing_test.dart +++ b/lib/web_ui/test/text_editing_test.dart @@ -2147,6 +2147,7 @@ KeyboardEvent dispatchKeyboardEvent( String type, { required int keyCode, }) { + // ignore: implicit_dynamic_function final Function jsKeyboardEvent = js_util.getProperty(window, 'KeyboardEvent') as Function; final List eventArgs = [ type, @@ -2156,6 +2157,7 @@ KeyboardEvent dispatchKeyboardEvent( } ]; final KeyboardEvent event = + // ignore: implicit_dynamic_function js_util.callConstructor(jsKeyboardEvent, js_util.jsify(eventArgs) as List?) as KeyboardEvent; target.dispatchEvent(event); diff --git a/lib/web_ui/test/window_test.dart b/lib/web_ui/test/window_test.dart index 9069db61e0b2c..2aeeea42f5e9b 100644 --- a/lib/web_ui/test/window_test.dart +++ b/lib/web_ui/test/window_test.dart @@ -445,6 +445,7 @@ void testMain() { } void jsSetUrlStrategy(dynamic strategy) { + // ignore: implicit_dynamic_function js_util.callMethod( html.window, '_flutter_web_set_location_strategy',