diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/navigation.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/navigation.dart index cd9b9de1d2d..fae9027fa3c 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/navigation.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/navigation.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.12 export 'navigation/history.dart'; export 'navigation/js_url_strategy.dart'; export 'navigation/url_strategy.dart'; \ No newline at end of file diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/services.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/services.dart index e15100973e2..5dc6d173953 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/services.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/services.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.12 export 'services/buffers.dart'; export 'services/message_codec.dart'; export 'services/message_codecs.dart'; diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/web_experiments.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/web_experiments.dart index 3e99b7d198a..2bfb70484bd 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/web_experiments.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/web_experiments.dart @@ -58,7 +58,7 @@ class WebExperiments { } /// Used to enable/disable experimental flags in the web engine. - void updateExperiment(String name, bool enabled) { + void updateExperiment(String name, bool? enabled) { switch (name) { case 'useCanvasText': useCanvasText = enabled; diff --git a/engine/src/flutter/lib/web_ui/pubspec.yaml b/engine/src/flutter/lib/web_ui/pubspec.yaml index 9e968f2e180..dfd598452ef 100644 --- a/engine/src/flutter/lib/web_ui/pubspec.yaml +++ b/engine/src/flutter/lib/web_ui/pubspec.yaml @@ -14,7 +14,6 @@ dev_dependencies: html: 0.15.0 http: 0.13.0 image: 3.0.1 - mockito: 5.0.0 path: 1.8.0 quiver: 3.0.0 test: 1.16.6 diff --git a/engine/src/flutter/lib/web_ui/test/alarm_clock_test.dart b/engine/src/flutter/lib/web_ui/test/alarm_clock_test.dart index f4e2676448f..0f47c9d8d3d 100644 --- a/engine/src/flutter/lib/web_ui/test/alarm_clock_test.dart +++ b/engine/src/flutter/lib/web_ui/test/alarm_clock_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:quiver/testing/async.dart'; @@ -77,13 +76,13 @@ void _alarmClockTests() { expect(fakeAsync.nonPeriodicTimerCount, 1); expect(callCount, 0); - alarm.datetime = alarm.datetime.add(Duration.zero); + alarm.datetime = alarm.datetime!.add(Duration.zero); expect(fakeAsync.nonPeriodicTimerCount, 1); expect(callCount, 0); fakeAsync.elapse(const Duration(seconds: 30)); - alarm.datetime = alarm.datetime.add(Duration.zero); + alarm.datetime = alarm.datetime!.add(Duration.zero); expect(fakeAsync.nonPeriodicTimerCount, 1); expect(callCount, 0); @@ -117,7 +116,7 @@ void _alarmClockTests() { expect(callCount, 0); // Reschedule. - alarm.datetime = alarm.datetime.add(const Duration(minutes: 1)); + alarm.datetime = alarm.datetime!.add(const Duration(minutes: 1)); fakeAsync.elapse(const Duration(minutes: 1)); @@ -142,7 +141,7 @@ void _alarmClockTests() { expect(callCount, 0); // Reschedule to an earlier time that's still in the future. - alarm.datetime = alarm.datetime.subtract(const Duration(seconds: 15)); + alarm.datetime = alarm.datetime!.subtract(const Duration(seconds: 15)); fakeAsync.elapse(const Duration(seconds: 45)); expect(callCount, 1); diff --git a/engine/src/flutter/lib/web_ui/test/canvas_test.dart b/engine/src/flutter/lib/web_ui/test/canvas_test.dart index c360770f65c..938027f2b6e 100644 --- a/engine/src/flutter/lib/web_ui/test/canvas_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvas_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:ui/src/engine.dart'; import 'package:ui/ui.dart' as ui; @@ -21,20 +20,20 @@ void testMain() { }); group('EngineCanvas', () { - MockEngineCanvas mockCanvas; - ui.Paragraph paragraph; + late MockEngineCanvas mockCanvas; + late ui.Paragraph paragraph; void testCanvas( - String description, void Function(EngineCanvas canvas) testFn, - {ui.Rect canvasSize, ui.VoidCallback whenDone}) { - canvasSize ??= const ui.Rect.fromLTWH(0, 0, 100, 100); + String description, + void Function(EngineCanvas canvas) testFn, { + ui.Rect canvasSize = const ui.Rect.fromLTWH(0, 0, 100, 100), + ui.VoidCallback? whenDone, + }) { test(description, () { testFn(BitmapCanvas(canvasSize, RenderStrategy())); testFn(DomCanvas(domRenderer.createElement('flt-picture'))); testFn(mockCanvas = MockEngineCanvas()); - if (whenDone != null) { - whenDone(); - } + whenDone?.call(); }); } diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/canvaskit_api_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/canvaskit_api_test.dart index 0b86f0d6962..b0e1fca45fa 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/canvaskit_api_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/canvaskit_api_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:typed_data'; import 'package:test/bootstrap/browser.dart'; @@ -286,7 +285,7 @@ void _vertexModeTests() { void _imageTests() { test('MakeAnimatedImageFromEncoded makes a non-animated image', () { final SkAnimatedImage nonAnimated = - canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage); + canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage)!; expect(nonAnimated.getFrameCount(), 1); expect(nonAnimated.getRepetitionCount(), 0); expect(nonAnimated.width(), 1); @@ -311,7 +310,7 @@ void _imageTests() { test('MakeAnimatedImageFromEncoded makes an animated image', () { final SkAnimatedImage animated = - canvasKit.MakeAnimatedImageFromEncoded(kAnimatedGif); + canvasKit.MakeAnimatedImageFromEncoded(kAnimatedGif)!; expect(animated.getFrameCount(), 3); expect(animated.getRepetitionCount(), -1); // animates forever expect(animated.width(), 1); @@ -621,7 +620,7 @@ SkPath _testClosedSkPath() { } void _pathTests() { - SkPath path; + late SkPath path; setUp(() { path = SkPath(); @@ -798,7 +797,7 @@ void _pathTests() { test('SkContourMeasureIter/SkContourMeasure', () { final SkContourMeasureIter iter = SkContourMeasureIter(_testClosedSkPath(), false, 1.0); - final SkContourMeasure measure1 = iter.next(); + final SkContourMeasure measure1 = iter.next()!; expect(measure1.length(), 40); expect(measure1.getPosTan(5), Float32List.fromList([15, 10, 1, 0])); expect( @@ -829,7 +828,7 @@ void _pathTests() { final SkPath segment = measure1.getSegment(5, 15, true); expect(fromSkRect(segment.getBounds()), ui.Rect.fromLTRB(15, 10, 20, 15)); - final SkContourMeasure measure2 = iter.next(); + final SkContourMeasure? measure2 = iter.next(); expect(measure2, isNull); }); @@ -867,8 +866,8 @@ void _skVerticesTests() { } void _canvasTests() { - SkPictureRecorder recorder; - SkCanvas canvas; + late SkPictureRecorder recorder; + late SkCanvas canvas; setUp(() { recorder = SkPictureRecorder(); @@ -954,7 +953,7 @@ void _canvasTests() { test('drawAtlas', () { final SkAnimatedImage image = - canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage); + canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage)!; canvas.drawAtlas( image.makeImageAtCurrentFrame(), Float32List.fromList([0, 0, 1, 1]), @@ -983,7 +982,7 @@ void _canvasTests() { test('drawImageOptions', () { final SkAnimatedImage image = - canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage); + canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage)!; canvas.drawImageOptions( image.makeImageAtCurrentFrame(), 10, @@ -996,7 +995,7 @@ void _canvasTests() { test('drawImageCubic', () { final SkAnimatedImage image = - canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage); + canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage)!; canvas.drawImageCubic( image.makeImageAtCurrentFrame(), 10, @@ -1009,7 +1008,7 @@ void _canvasTests() { test('drawImageRectOptions', () { final SkAnimatedImage image = - canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage); + canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage)!; canvas.drawImageRectOptions( image.makeImageAtCurrentFrame(), Float32List.fromList([0, 0, 1, 1]), @@ -1022,7 +1021,7 @@ void _canvasTests() { test('drawImageRectCubic', () { final SkAnimatedImage image = - canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage); + canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage)!; canvas.drawImageRectCubic( image.makeImageAtCurrentFrame(), Float32List.fromList([0, 0, 1, 1]), @@ -1035,7 +1034,7 @@ void _canvasTests() { test('drawImageNine', () { final SkAnimatedImage image = - canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage); + canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage)!; canvas.drawImageNine( image.makeImageAtCurrentFrame(), Float32List.fromList([0, 0, 1, 1]), @@ -1190,7 +1189,7 @@ void _canvasTests() { ); final CkPicture picture = CkPicture(otherRecorder.finishRecordingAsPicture(), null, null); - final CkImage image = await picture.toImage(1, 1); + final CkImage image = (await picture.toImage(1, 1)) as CkImage; final ByteData rawData = await image.toByteData(format: ui.ImageByteFormat.rawRgba); expect(rawData.lengthInBytes, greaterThan(0)); diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/filter_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/filter_test.dart index 397e5e652ed..df71dc8432b 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/filter_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/filter_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:typed_data'; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; @@ -84,7 +83,7 @@ void testMain() { paint.imageFilter = CkImageFilter.blur(sigmaX: 5, sigmaY: 10, tileMode: ui.TileMode.clamp); final ManagedSkiaObject managedFilter = paint.imageFilter as ManagedSkiaObject; - final Object skiaFilter = managedFilter?.skiaObject; + final Object skiaFilter = managedFilter.skiaObject; paint.imageFilter = CkImageFilter.blur(sigmaX: 5, sigmaY: 10, tileMode: ui.TileMode.clamp); expect((paint.imageFilter as ManagedSkiaObject).skiaObject, same(skiaFilter)); diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/frame_timings_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/frame_timings_test.dart index 59a57f8b8b8..fedaf8bdf76 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/frame_timings_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/frame_timings_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/path_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/path_test.dart index 5c5072ce0c8..219c9557248 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/path_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/path_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; @@ -33,11 +32,11 @@ void testMain() { expect(metric.contourIndex, 0); expect(metric.extractPath(0, 0.5).computeMetrics().length, 1); - final ui.Tangent tangent1 = metric.getTangentForOffset(5); + final ui.Tangent tangent1 = metric.getTangentForOffset(5)!; expect(tangent1.position, ui.Offset(5, 0)); expect(tangent1.vector, ui.Offset(1, 0)); - final ui.Tangent tangent2 = metric.getTangentForOffset(15); + final ui.Tangent tangent2 = metric.getTangentForOffset(15)!; expect(tangent2.position, ui.Offset(10, 5)); expect(tangent2.vector, ui.Offset(0, 1)); @@ -105,7 +104,7 @@ void testMain() { path.addRect(ui.Rect.fromLTRB(40, 40, 50, 50)); final ui.PathMetrics metrics = path.computeMetrics(); - final CkContourMeasureIter iterator = metrics.iterator; + final CkContourMeasureIter iterator = metrics.iterator as CkContourMeasureIter; expect(iterator.moveNext(), true); expect(iterator.current.contourIndex, 0); @@ -131,15 +130,15 @@ void testMain() { path.addRect(ui.Rect.fromLTRB(40, 40, 50, 50)); final ui.PathMetrics metrics = path.computeMetrics(); - final CkContourMeasureIter iterator = metrics.iterator; + final CkContourMeasureIter iterator = metrics.iterator as CkContourMeasureIter; expect(iterator.moveNext(), true); - final CkContourMeasure measure0 = iterator.current; + final CkContourMeasure measure0 = iterator.current as CkContourMeasure; expect(measure0.contourIndex, 0); expect(measure0.extractPath(0, 15).getBounds(), ui.Rect.fromLTRB(0, 0, 10, 5)); expect(iterator.moveNext(), true); - final CkContourMeasure measure1 = iterator.current; + final CkContourMeasure measure1 = iterator.current as CkContourMeasure; expect(measure1.contourIndex, 1); expect(measure1.extractPath(0, 15).getBounds(), ui.Rect.fromLTRB(20, 20, 30, 25)); diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/scene_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/scene_test.dart index 0a9222305f1..52a766a4acf 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/scene_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/scene_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/shader_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/shader_test.dart index 9ce6229f5cf..ebd9e8e6866 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/shader_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/shader_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:typed_data'; import 'package:test/bootstrap/browser.dart'; @@ -25,7 +24,7 @@ void testMain() { final CkGradientSweep gradient = ui.Gradient.sweep( ui.Offset.zero, testColors, - ); + ) as CkGradientSweep; expect(gradient.createDefault(), isNotNull); }); @@ -34,7 +33,7 @@ void testMain() { ui.Offset.zero, const ui.Offset(0, 1), testColors, - ); + ) as CkGradientLinear; expect(gradient.createDefault(), isNotNull); }); @@ -43,7 +42,7 @@ void testMain() { ui.Offset.zero, 10, testColors, - ); + ) as CkGradientRadial; expect(gradient.createDefault(), isNotNull); }); @@ -57,19 +56,19 @@ void testMain() { null, const ui.Offset(10, 10), 40, - ); + ) as CkGradientConical; expect(gradient.createDefault(), isNotNull); }); test('Image shader', () { - final SkImage skImage = canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage).makeImageAtCurrentFrame(); + final SkImage skImage = canvasKit.MakeAnimatedImageFromEncoded(kTransparentImage)!.makeImageAtCurrentFrame(); final CkImage image = CkImage(skImage); final CkImageShader imageShader = ui.ImageShader( image, ui.TileMode.clamp, ui.TileMode.repeated, Float64List.fromList(Matrix4.diagonal3Values(1, 2, 3).storage), - ); + ) as CkImageShader; expect(imageShader, isA()); }); // TODO: https://github.com/flutter/flutter/issues/60040 diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/skia_font_collection_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/skia_font_collection_test.dart index dd1ba26a0e7..185d7904ac8 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/skia_font_collection_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/skia_font_collection_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; @@ -17,7 +16,7 @@ void main() { void testMain() { group('$SkiaFontCollection', () { List warnings = []; - void Function(String) oldPrintWarning; + late void Function(String) oldPrintWarning; setUpAll(() async { await initializeCanvasKit(); diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/skia_objects_cache_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/skia_objects_cache_test.dart index 36e18e6e4dc..3b3a10b2e1d 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/skia_objects_cache_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/skia_objects_cache_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.12 - import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/channel_buffers_test.dart b/engine/src/flutter/lib/web_ui/test/channel_buffers_test.dart index cee7663b811..ae155ab3811 100644 --- a/engine/src/flutter/lib/web_ui/test/channel_buffers_test.dart +++ b/engine/src/flutter/lib/web_ui/test/channel_buffers_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 - // This is identical to // ../../../testing/dart/channel_buffers_test.dart except for: // @@ -40,16 +38,16 @@ void testMain() { final ByteData data = _makeByteData('bar'); final ui.ChannelBuffers buffers = ui.ChannelBuffers(); bool called = false; - final ui.PlatformMessageResponseCallback callback = (ByteData responseData) { + final ui.PlatformMessageResponseCallback callback = (ByteData? responseData) { called = true; }; buffers.push(channel, data, callback); - await buffers.drain(channel, (ByteData drainedData, ui.PlatformMessageResponseCallback drainedCallback) { + await buffers.drain(channel, (ByteData? drainedData, ui.PlatformMessageResponseCallback drainedCallback) { expect(drainedData, equals(data)); assert(!called); drainedCallback(drainedData); assert(called); - return; + return Future.value(); }); }); @@ -57,13 +55,13 @@ void testMain() { const String channel = 'foo'; final ByteData data = _makeByteData('message'); final ui.ChannelBuffers buffers = ui.ChannelBuffers(); - final ui.PlatformMessageResponseCallback callback = (ByteData responseData) {}; + final ui.PlatformMessageResponseCallback callback = (ByteData? responseData) {}; buffers.push(channel, data, callback); final List log = []; final Completer completer = Completer(); scheduleMicrotask(() { log.add('before drain, microtask'); }); log.add('before drain'); - buffers.drain(channel, (ByteData drainedData, ui.PlatformMessageResponseCallback drainedCallback) async { + buffers.drain(channel, (ByteData? drainedData, ui.PlatformMessageResponseCallback drainedCallback) async { log.add('callback'); completer.complete(); }); @@ -84,13 +82,13 @@ void testMain() { final ByteData data = _makeByteData('bar'); final ui.ChannelBuffers buffers = ui.ChannelBuffers(); - final ui.PlatformMessageResponseCallback callback = (ByteData responseData) {}; + final ui.PlatformMessageResponseCallback callback = (ByteData? responseData) {}; _resize(buffers, channel, 0); buffers.push(channel, data, callback); bool didCall = false; - await buffers.drain(channel, (ByteData drainedData, ui.PlatformMessageResponseCallback drainedCallback) { + await buffers.drain(channel, (ByteData? drainedData, ui.PlatformMessageResponseCallback drainedCallback) { didCall = true; - return; + return Future.value(); }); expect(didCall, equals(false)); }); @@ -99,9 +97,9 @@ void testMain() { const String channel = 'foo'; final ui.ChannelBuffers buffers = ui.ChannelBuffers(); bool didCall = false; - await buffers.drain(channel, (ByteData drainedData, ui.PlatformMessageResponseCallback drainedCallback) { + await buffers.drain(channel, (ByteData? drainedData, ui.PlatformMessageResponseCallback drainedCallback) { didCall = true; - return; + return Future.value(); }); expect(didCall, equals(false)); }); @@ -113,14 +111,14 @@ void testMain() { final ByteData three = _makeByteData('three'); final ByteData four = _makeByteData('four'); final ui.ChannelBuffers buffers = ui.ChannelBuffers(); - final ui.PlatformMessageResponseCallback callback = (ByteData responseData) {}; + final ui.PlatformMessageResponseCallback callback = (ByteData? responseData) {}; _resize(buffers, channel, 3); buffers.push(channel, one, callback); buffers.push(channel, two, callback); buffers.push(channel, three, callback); buffers.push(channel, four, callback); int counter = 0; - await buffers.drain(channel, (ByteData drainedData, ui.PlatformMessageResponseCallback drainedCallback) { + await buffers.drain(channel, (ByteData? drainedData, ui.PlatformMessageResponseCallback drainedCallback) { switch (counter) { case 0: expect(drainedData, equals(two)); @@ -133,7 +131,7 @@ void testMain() { break; } counter += 1; - return; + return Future.value(); }); expect(counter, equals(3)); }); @@ -144,18 +142,18 @@ void testMain() { final ByteData two = _makeByteData('two'); final ui.ChannelBuffers buffers = ui.ChannelBuffers(); _resize(buffers, channel, 100); - final ui.PlatformMessageResponseCallback callback = (ByteData responseData) {}; + final ui.PlatformMessageResponseCallback callback = (ByteData? responseData) {}; buffers.push(channel, one, callback); buffers.push(channel, two, callback); _resize(buffers, channel, 1); int counter = 0; - await buffers.drain(channel, (ByteData drainedData, ui.PlatformMessageResponseCallback drainedCallback) { + await buffers.drain(channel, (ByteData? drainedData, ui.PlatformMessageResponseCallback drainedCallback) { switch (counter) { case 0: expect(drainedData, equals(two)); } counter += 1; - return; + return Future.value(); }); expect(counter, equals(1)); }); @@ -166,11 +164,11 @@ void testMain() { final ByteData two = _makeByteData('two'); final ui.ChannelBuffers buffers = ui.ChannelBuffers(); bool didCallCallback = false; - final ui.PlatformMessageResponseCallback oneCallback = (ByteData responseData) { + final ui.PlatformMessageResponseCallback oneCallback = (ByteData? responseData) { expect(responseData, isNull); didCallCallback = true; }; - final ui.PlatformMessageResponseCallback twoCallback = (ByteData responseData) { + final ui.PlatformMessageResponseCallback twoCallback = (ByteData? responseData) { throw TestFailure('wrong callback called'); }; _resize(buffers, channel, 100); @@ -187,11 +185,11 @@ void testMain() { final ByteData two = _makeByteData('two'); final ui.ChannelBuffers buffers = ui.ChannelBuffers(); bool didCallCallback = false; - final ui.PlatformMessageResponseCallback oneCallback = (ByteData responseData) { + final ui.PlatformMessageResponseCallback oneCallback = (ByteData? responseData) { expect(responseData, isNull); didCallCallback = true; }; - final ui.PlatformMessageResponseCallback twoCallback = (ByteData responseData) { + final ui.PlatformMessageResponseCallback twoCallback = (ByteData? responseData) { throw TestFailure('wrong callback called'); }; _resize(buffers, channel, 1); @@ -222,37 +220,37 @@ void testMain() { final ByteData five = _makeByteData('five'); final ByteData six = _makeByteData('six'); final ByteData seven = _makeByteData('seven'); - buffers.push('a', one, (ByteData data) { }); - buffers.push('b', two, (ByteData data) { }); - buffers.push('a', three, (ByteData data) { }); + buffers.push('a', one, (ByteData? data) { }); + buffers.push('b', two, (ByteData? data) { }); + buffers.push('a', three, (ByteData? data) { }); log.add('top'); - buffers.setListener('a', (ByteData data, ui.PlatformMessageResponseCallback callback) { - log.add('a1: ${utf8.decode(data.buffer.asUint8List())}'); + buffers.setListener('a', (ByteData? data, ui.PlatformMessageResponseCallback callback) { + log.add('a1: ${utf8.decode(data!.buffer.asUint8List())}'); }); log.add('-1'); await null; log.add('-2'); - buffers.setListener('a', (ByteData data, ui.PlatformMessageResponseCallback callback) { - log.add('a2: ${utf8.decode(data.buffer.asUint8List())}'); + buffers.setListener('a', (ByteData? data, ui.PlatformMessageResponseCallback callback) { + log.add('a2: ${utf8.decode(data!.buffer.asUint8List())}'); }); log.add('-3'); await null; log.add('-4'); - buffers.setListener('b', (ByteData data, ui.PlatformMessageResponseCallback callback) { - log.add('b: ${utf8.decode(data.buffer.asUint8List())}'); + buffers.setListener('b', (ByteData? data, ui.PlatformMessageResponseCallback callback) { + log.add('b: ${utf8.decode(data!.buffer.asUint8List())}'); }); log.add('-5'); await null; // first microtask after setting listener drains the first message await null; // second microtask ends the draining. log.add('-6'); - buffers.push('b', four, (ByteData data) { }); - buffers.push('a', five, (ByteData data) { }); + buffers.push('b', four, (ByteData? data) { }); + buffers.push('a', five, (ByteData? data) { }); log.add('-7'); await null; log.add('-8'); buffers.clearListener('a'); - buffers.push('a', six, (ByteData data) { }); - buffers.push('b', seven, (ByteData data) { }); + buffers.push('a', six, (ByteData? data) { }); + buffers.push('b', seven, (ByteData? data) { }); await null; log.add('-9'); expect(log, [ @@ -282,24 +280,24 @@ void testMain() { final ByteData three = _makeByteData('three'); final ByteData four = _makeByteData('four'); buffers.handleMessage(_makeByteData('resize\ra\r10')); - buffers.push('a', one, (ByteData data) { }); - buffers.push('a', two, (ByteData data) { }); - buffers.push('a', three, (ByteData data) { }); + buffers.push('a', one, (ByteData? data) { }); + buffers.push('a', two, (ByteData? data) { }); + buffers.push('a', three, (ByteData? data) { }); log.add('-1'); - buffers.setListener('a', (ByteData data, ui.PlatformMessageResponseCallback callback) { - log.add('a1: ${utf8.decode(data.buffer.asUint8List())}'); + buffers.setListener('a', (ByteData? data, ui.PlatformMessageResponseCallback callback) { + log.add('a1: ${utf8.decode(data!.buffer.asUint8List())}'); }); await null; // handles one log.add('-2'); buffers.clearListener('a'); await null; log.add('-3'); - buffers.setListener('a', (ByteData data, ui.PlatformMessageResponseCallback callback) { - log.add('a2: ${utf8.decode(data.buffer.asUint8List())}'); + buffers.setListener('a', (ByteData? data, ui.PlatformMessageResponseCallback callback) { + log.add('a2: ${utf8.decode(data!.buffer.asUint8List())}'); }); log.add('-4'); await null; - buffers.push('a', four, (ByteData data) { }); + buffers.push('a', four, (ByteData? data) { }); log.add('-5'); await null; log.add('-6'); @@ -348,14 +346,14 @@ void testMain() { final Zone zone2 = Zone.current.fork(); zone1.run(() { log.add('first zone run: ${Zone.current == zone1}'); - buffers.setListener('a', (ByteData data, ui.PlatformMessageResponseCallback callback) { + buffers.setListener('a', (ByteData? data, ui.PlatformMessageResponseCallback callback) { log.add('callback1: ${Zone.current == zone1}'); callback(data); }); }); zone2.run(() { log.add('second zone run: ${Zone.current == zone2}'); - buffers.push('a', ByteData.sublistView(Uint8List.fromList([]), 0, 0), (ByteData data) { + buffers.push('a', ByteData.sublistView(Uint8List.fromList([]), 0, 0), (ByteData? data) { log.add('callback2: ${Zone.current == zone2}'); }); }); diff --git a/engine/src/flutter/lib/web_ui/test/clipboard_test.dart b/engine/src/flutter/lib/web_ui/test/clipboard_test.dart index e0c526176e8..e2353df24bc 100644 --- a/engine/src/flutter/lib/web_ui/test/clipboard_test.dart +++ b/engine/src/flutter/lib/web_ui/test/clipboard_test.dart @@ -2,11 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:async'; import 'dart:typed_data'; -import 'package:mockito/mockito.dart'; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/ui.dart' as ui; @@ -21,14 +19,10 @@ void testMain() async { group('message handler', () { const String testText = 'test text'; - final Future success = Future.value(true); - final Future failure = Future.value(false); - final Future pasteTest = Future.value(testText); - - ClipboardMessageHandler clipboardMessageHandler; - ClipboardAPICopyStrategy clipboardAPICopyStrategy = + late ClipboardMessageHandler clipboardMessageHandler; + MockClipboardAPICopyStrategy clipboardAPICopyStrategy = MockClipboardAPICopyStrategy(); - ClipboardAPIPasteStrategy clipboardAPIPasteStrategy = + MockClipboardAPIPasteStrategy clipboardAPIPasteStrategy = MockClipboardAPIPasteStrategy(); setUp(() { @@ -42,62 +36,73 @@ void testMain() async { }); test('set data successful', () async { - when(clipboardAPICopyStrategy.setData(testText)) - .thenAnswer((_) => success); + clipboardAPICopyStrategy.testResult = true; const MethodCodec codec = JSONMethodCodec(); - bool result = false; - ui.PlatformMessageResponseCallback callback = (ByteData data) { - result = codec.decodeEnvelope(data); + final Completer completer = Completer(); + ui.PlatformMessageResponseCallback callback = (ByteData? data) { + completer.complete(codec.decodeEnvelope(data!)); }; - await clipboardMessageHandler.setDataMethodCall( + clipboardMessageHandler.setDataMethodCall( const MethodCall('Clipboard.setData', { 'text': testText, }), callback); - await expectLater(result, true); + expect(await completer.future, true); }); test('set data error', () async { - when(clipboardAPICopyStrategy.setData(testText)) - .thenAnswer((_) => failure); + clipboardAPICopyStrategy.testResult = false; const MethodCodec codec = JSONMethodCodec(); - ByteData result; - ui.PlatformMessageResponseCallback callback = (ByteData data) { - result = data; + final Completer completer = Completer(); + ui.PlatformMessageResponseCallback callback = (ByteData? data) { + completer.complete(data!); }; - await clipboardMessageHandler.setDataMethodCall( + clipboardMessageHandler.setDataMethodCall( const MethodCall('Clipboard.setData', { 'text': testText, }), callback); - expect(() async { - codec.decodeEnvelope(result); - }, throwsA(TypeMatcher() + final ByteData result = await completer.future; + expect( + () =>codec.decodeEnvelope(result), + throwsA(TypeMatcher() .having((e) => e.code, 'code', equals('copy_fail')))); }); test('get data successful', () async { - when(clipboardAPIPasteStrategy.getData()) - .thenAnswer((_) => pasteTest); + clipboardAPIPasteStrategy.testResult = testText; const MethodCodec codec = JSONMethodCodec(); - Map result; - ui.PlatformMessageResponseCallback callback = (ByteData data) { - result = codec.decodeEnvelope(data); + final Completer> completer = Completer>(); + ui.PlatformMessageResponseCallback callback = (ByteData? data) { + completer.complete(codec.decodeEnvelope(data!)); }; - await clipboardMessageHandler.getDataMethodCall(callback); + clipboardMessageHandler.getDataMethodCall(callback); - await expectLater(result['text'], testText); + final Map result = await completer.future; + expect(result['text'], testText); }); }); } -class MockClipboardAPICopyStrategy extends Mock - implements ClipboardAPICopyStrategy {} +class MockClipboardAPICopyStrategy implements ClipboardAPICopyStrategy { + bool testResult = true; -class MockClipboardAPIPasteStrategy extends Mock - implements ClipboardAPIPasteStrategy {} + @override + Future setData(String? text) { + return Future.value(testResult); + } +} + +class MockClipboardAPIPasteStrategy implements ClipboardAPIPasteStrategy { + String testResult = ''; + + @override + Future getData() { + return Future.value(testResult); + } +} diff --git a/engine/src/flutter/lib/web_ui/test/color_test.dart b/engine/src/flutter/lib/web_ui/test/color_test.dart index 9718c261e79..d1c13307797 100644 --- a/engine/src/flutter/lib/web_ui/test/color_test.dart +++ b/engine/src/flutter/lib/web_ui/test/color_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:ui/ui.dart'; import 'package:test/bootstrap/browser.dart'; @@ -33,23 +32,15 @@ void testMain() { }); test('color created with out of bounds value', () { - try { - const Color c = Color(0x100 << 24); - final Paint p = Paint(); - p.color = c; - } catch (e) { - expect(e != null, equals(true)); - } + const Color c = Color(0x100 << 24); + final Paint p = Paint(); + p.color = c; }); test('color created with wildly out of bounds value', () { - try { - const Color c = Color(1 << 1000000); - final Paint p = Paint(); - p.color = c; - } catch (e) { - expect(e != null, equals(true)); - } + const Color c = Color(1 << 1000000); + final Paint p = Paint(); + p.color = c; }); test('two colors are only == if they have the same runtime type', () { diff --git a/engine/src/flutter/lib/web_ui/test/dom_renderer_test.dart b/engine/src/flutter/lib/web_ui/test/dom_renderer_test.dart index 92357af1cdc..9ef1cee7e2a 100644 --- a/engine/src/flutter/lib/web_ui/test/dom_renderer_test.dart +++ b/engine/src/flutter/lib/web_ui/test/dom_renderer_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'package:test/bootstrap/browser.dart'; @@ -16,8 +15,8 @@ void main() { void testMain() { test('populates flt-renderer and flt-build-mode', () { DomRenderer(); - expect(html.document.body.attributes['flt-renderer'], 'html (requested explicitly)'); - expect(html.document.body.attributes['flt-build-mode'], 'debug'); + expect(html.document.body!.attributes['flt-renderer'], 'html (requested explicitly)'); + expect(html.document.body!.attributes['flt-build-mode'], 'debug'); }); test('creating elements works', () { final DomRenderer renderer = DomRenderer(); @@ -90,8 +89,8 @@ void testMain() { test('innerHeight/innerWidth are equal to visualViewport height and width', () { if (html.window.visualViewport != null) { - expect(html.window.visualViewport.width, html.window.innerWidth); - expect(html.window.visualViewport.height, html.window.innerHeight); + expect(html.window.visualViewport!.width, html.window.innerWidth); + expect(html.window.visualViewport!.height, html.window.innerHeight); } }); @@ -99,7 +98,7 @@ void testMain() { final html.MetaElement existingMeta = html.MetaElement() ..name = 'viewport' ..content = 'foo=bar'; - html.document.head.append(existingMeta); + html.document.head!.append(existingMeta); expect(existingMeta.isConnected, true); final DomRenderer renderer = DomRenderer(); diff --git a/engine/src/flutter/lib/web_ui/test/engine/frame_reference_test.dart b/engine/src/flutter/lib/web_ui/test/engine/frame_reference_test.dart index 0658f8258ba..27c9691ddc7 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/frame_reference_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/frame_reference_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:ui/src/engine.dart'; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; @@ -16,7 +15,7 @@ void testMain() { test('Reuse returns no object when cache empty', () { final CrossFrameCache cache = CrossFrameCache(); cache.commitFrame(); - TestItem requestedItem = cache.reuse('item1'); + TestItem? requestedItem = cache.reuse('item1'); expect(requestedItem, null); }); @@ -25,7 +24,7 @@ void testMain() { final TestItem testItem1 = TestItem('item1'); cache.cache(testItem1.label, testItem1); cache.commitFrame(); - TestItem requestedItem = cache.reuse('item1'); + TestItem? requestedItem = cache.reuse('item1'); expect(requestedItem, testItem1); requestedItem = cache.reuse('item1'); expect(requestedItem, null); @@ -40,7 +39,7 @@ void testMain() { cache.cache(testItemX.label, testItemX); cache.cache(testItem2.label, testItem2); cache.commitFrame(); - TestItem requestedItem = cache.reuse('sameLabel'); + TestItem? requestedItem = cache.reuse('sameLabel'); expect(requestedItem, testItem1); requestedItem = cache.reuse('sameLabel'); expect(requestedItem, testItem2); @@ -54,7 +53,7 @@ void testMain() { cache.cache(testItem1.label, testItem1); cache.commitFrame(); cache.commitFrame(); - TestItem requestedItem = cache.reuse('item1'); + TestItem? requestedItem = cache.reuse('item1'); expect(requestedItem, null); }); diff --git a/engine/src/flutter/lib/web_ui/test/engine/navigation_test.dart b/engine/src/flutter/lib/web_ui/test/engine/navigation_test.dart index bfd81176080..ad459950737 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/navigation_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/navigation_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:async'; import 'dart:typed_data'; @@ -10,8 +9,6 @@ import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/src/engine.dart' as engine; -engine.TestUrlStrategy _strategy; - const engine.MethodCodec codec = engine.JSONMethodCodec(); void emptyCallback(ByteData date) {} @@ -21,6 +18,8 @@ void main() { } void testMain() { + engine.TestUrlStrategy? _strategy; + setUp(() async { _strategy = engine.TestUrlStrategy(); await engine.window.debugInitializeHistory(_strategy, useSingle: true); @@ -42,6 +41,6 @@ void testMain() { (_) => completer.complete(), ); await completer.future; - expect(_strategy.getPath(), '/foo'); + expect(_strategy!.getPath(), '/foo'); }); } diff --git a/engine/src/flutter/lib/web_ui/test/engine/profiler_test.dart b/engine/src/flutter/lib/web_ui/test/engine/profiler_test.dart index 2f7ec51bd7a..9c017ba1342 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/profiler_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/profiler_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'dart:js' as js; import 'dart:js_util' as js_util; diff --git a/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_helper_test.dart b/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_helper_test.dart index cba67929748..cf987737a0b 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_helper_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_helper_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.12 import 'dart:html' as html; import 'package:test/bootstrap/browser.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_test.dart b/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_test.dart index 582ddf84fec..65e79f57aba 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/semantics/semantics_test.dart @@ -9,7 +9,6 @@ import 'dart:async'; import 'dart:html' as html; import 'dart:typed_data'; -import 'package:mockito/mockito.dart'; import 'package:quiver/testing/async.dart'; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; @@ -239,21 +238,48 @@ void _testEngineSemanticsOwner() { semantics().receiveGlobalEvent(pointerEvent); // Verify the interactions. - verify(mockSemanticsEnabler.shouldEnableSemantics(pointerEvent)); + expect( + mockSemanticsEnabler.shouldEnableSemanticsEvents, + [pointerEvent], + ); }); - test('Forward events to framewors if shouldEnableSemantics', () { + test('forwards events to framework if shouldEnableSemantics returns true', () { final MockSemanticsEnabler mockSemanticsEnabler = MockSemanticsEnabler(); semantics().semanticsHelper.semanticsEnabler = mockSemanticsEnabler; final html.Event pointerEvent = html.Event('pointermove'); - when(mockSemanticsEnabler.shouldEnableSemantics(pointerEvent)) - .thenReturn(true); - + mockSemanticsEnabler.shouldEnableSemanticsReturnValue = true; expect(semantics().receiveGlobalEvent(pointerEvent), isTrue); }); } -class MockSemanticsEnabler extends Mock implements SemanticsEnabler {} +class MockSemanticsEnabler implements SemanticsEnabler { + @override + void dispose() { + } + + @override + bool get isWaitingToEnableSemantics => throw UnimplementedError(); + + @override + html.Element prepareAccessibilityPlaceholder() { + throw UnimplementedError(); + } + + bool shouldEnableSemanticsReturnValue = false; + final List shouldEnableSemanticsEvents = []; + + @override + bool shouldEnableSemantics(html.Event event) { + shouldEnableSemanticsEvents.add(event); + return shouldEnableSemanticsReturnValue; + } + + @override + bool tryEnableSemantics(html.Event event) { + throw UnimplementedError(); + } +} void _testHeader() { test('renders heading role for headers', () { diff --git a/engine/src/flutter/lib/web_ui/test/engine/util_test.dart b/engine/src/flutter/lib/web_ui/test/engine/util_test.dart index 9ff47eb2b3e..ff710261251 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/util_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/util_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:typed_data'; import 'package:test/bootstrap/browser.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/engine/web_experiments_test.dart b/engine/src/flutter/lib/web_ui/test/engine/web_experiments_test.dart index 18a665b2249..1ac103135cb 100644 --- a/engine/src/flutter/lib/web_ui/test/engine/web_experiments_test.dart +++ b/engine/src/flutter/lib/web_ui/test/engine/web_experiments_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'dart:js_util' as js_util; @@ -23,71 +22,71 @@ void testMain() { }); tearDown(() { - WebExperiments.instance.reset(); + WebExperiments.instance!.reset(); }); test('default web experiment values', () { - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); }); test('can turn on/off web experiments', () { - WebExperiments.instance.updateExperiment('useCanvasText', true); - WebExperiments.instance.updateExperiment('useCanvasRichText', true); - expect(WebExperiments.instance.useCanvasText, true); - expect(WebExperiments.instance.useCanvasRichText, true); + WebExperiments.instance!.updateExperiment('useCanvasText', true); + WebExperiments.instance!.updateExperiment('useCanvasRichText', true); + expect(WebExperiments.instance!.useCanvasText, true); + expect(WebExperiments.instance!.useCanvasRichText, true); - WebExperiments.instance.updateExperiment('useCanvasText', false); - WebExperiments.instance.updateExperiment('useCanvasRichText', false); - expect(WebExperiments.instance.useCanvasText, false); - expect(WebExperiments.instance.useCanvasRichText, false); + WebExperiments.instance!.updateExperiment('useCanvasText', false); + WebExperiments.instance!.updateExperiment('useCanvasRichText', false); + expect(WebExperiments.instance!.useCanvasText, false); + expect(WebExperiments.instance!.useCanvasRichText, false); - WebExperiments.instance.updateExperiment('useCanvasText', null); - WebExperiments.instance.updateExperiment('useCanvasRichText', null); + WebExperiments.instance!.updateExperiment('useCanvasText', null); + WebExperiments.instance!.updateExperiment('useCanvasRichText', null); // Goes back to default value. - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); }); test('ignores unknown experiments', () { - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); - WebExperiments.instance.updateExperiment('foobarbazqux', true); - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); - WebExperiments.instance.updateExperiment('foobarbazqux', false); - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); + WebExperiments.instance!.updateExperiment('foobarbazqux', true); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); + WebExperiments.instance!.updateExperiment('foobarbazqux', false); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); }); test('can reset web experiments', () { - WebExperiments.instance.updateExperiment('useCanvasText', false); - WebExperiments.instance.updateExperiment('useCanvasRichText', false); - WebExperiments.instance.reset(); - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); + WebExperiments.instance!.updateExperiment('useCanvasText', false); + WebExperiments.instance!.updateExperiment('useCanvasRichText', false); + WebExperiments.instance!.reset(); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); - WebExperiments.instance.updateExperiment('useCanvasText', false); - WebExperiments.instance.updateExperiment('useCanvasRichText', false); - WebExperiments.instance.updateExperiment('foobarbazqux', true); - WebExperiments.instance.reset(); - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); + WebExperiments.instance!.updateExperiment('useCanvasText', false); + WebExperiments.instance!.updateExperiment('useCanvasRichText', false); + WebExperiments.instance!.updateExperiment('foobarbazqux', true); + WebExperiments.instance!.reset(); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); }); test('js interop also works', () { - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); expect(() => jsUpdateExperiment('useCanvasText', true), returnsNormally); expect(() => jsUpdateExperiment('useCanvasRichText', true), returnsNormally); - expect(WebExperiments.instance.useCanvasText, true); - expect(WebExperiments.instance.useCanvasRichText, true); + expect(WebExperiments.instance!.useCanvasText, true); + expect(WebExperiments.instance!.useCanvasRichText, true); expect(() => jsUpdateExperiment('useCanvasText', null), returnsNormally); expect(() => jsUpdateExperiment('useCanvasRichText', null), returnsNormally); - expect(WebExperiments.instance.useCanvasText, _defaultUseCanvasText); - expect(WebExperiments.instance.useCanvasRichText, _defaultUseCanvasRichText); + expect(WebExperiments.instance!.useCanvasText, _defaultUseCanvasText); + expect(WebExperiments.instance!.useCanvasRichText, _defaultUseCanvasRichText); }); test('js interop throws on wrong type', () { diff --git a/engine/src/flutter/lib/web_ui/test/frame_timings_common.dart b/engine/src/flutter/lib/web_ui/test/frame_timings_common.dart index dfcd5d9160d..697373baf2a 100644 --- a/engine/src/flutter/lib/web_ui/test/frame_timings_common.dart +++ b/engine/src/flutter/lib/web_ui/test/frame_timings_common.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:async'; import 'package:test/test.dart'; @@ -12,7 +11,7 @@ import 'package:ui/ui.dart' as ui; /// /// See CanvasKit-specific and HTML-specific test files `frame_timings_test.dart`. Future runFrameTimingsTest() async { - List timings; + List? timings; ui.window.onReportTimings = (List data) { timings = data; }; @@ -37,7 +36,7 @@ Future runFrameTimingsTest() async { ui.window.scheduleFrame(); await frameDone.future; expect(timings, hasLength(2), reason: '100 ms passed. 2 frames pumped.'); - for (final ui.FrameTiming timing in timings) { + for (final ui.FrameTiming timing in timings!) { expect(timing.vsyncOverhead, greaterThanOrEqualTo(Duration.zero)); expect(timing.buildDuration, greaterThanOrEqualTo(Duration.zero)); expect(timing.rasterDuration, greaterThanOrEqualTo(Duration.zero)); diff --git a/engine/src/flutter/lib/web_ui/test/geometry_test.dart b/engine/src/flutter/lib/web_ui/test/geometry_test.dart index 07ad7601d8d..8383941dc60 100644 --- a/engine/src/flutter/lib/web_ui/test/geometry_test.dart +++ b/engine/src/flutter/lib/web_ui/test/geometry_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:math' as math show sqrt; import 'dart:math' show pi; diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/overflow_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/overflow_test.dart index 508a45c6cf9..ed4c33c7e87 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/overflow_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/overflow_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:async'; import 'package:test/bootstrap/browser.dart'; @@ -31,7 +30,7 @@ void testMain() async { final double padding = 20.0; paragraph = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: fontSize, ellipsis: '...'), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: fontSize, ellipsis: '...'), (builder) { builder.pushStyle(EngineTextStyle.only(color: blue)); builder.addText('Lorem '); @@ -43,7 +42,7 @@ void testMain() async { offset = offset.translate(0, paragraph.height + padding); paragraph = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: fontSize, ellipsis: '...'), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: fontSize, ellipsis: '...'), (builder) { builder.pushStyle(EngineTextStyle.only(color: blue)); builder.addText('Lorem\n'); @@ -57,7 +56,7 @@ void testMain() async { offset = offset.translate(0, paragraph.height + padding); paragraph = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: fontSize, ellipsis: '...'), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: fontSize, ellipsis: '...'), (builder) { builder.pushStyle(EngineTextStyle.only(color: blue)); builder.addText('Lorem\n'); @@ -87,7 +86,7 @@ void testMain() async { offset = offset.translate(0, paragraph.height + padding); paragraph = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: fontSize, maxLines: 2, ellipsis: '...'), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: fontSize, maxLines: 2, ellipsis: '...'), (builder) { builder.pushStyle(EngineTextStyle.only(color: blue)); builder.addText('Lorem'); diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/placeholders_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/placeholders_test.dart index a1764aa33dd..e4b417c2bd3 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/placeholders_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/placeholders_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:async'; import 'package:test/bootstrap/browser.dart'; @@ -30,7 +29,7 @@ void testMain() async { Offset offset = Offset.zero; for (PlaceholderAlignment placeholderAlignment in PlaceholderAlignment.values) { final CanvasParagraph paragraph = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: 14.0), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: 14.0), (builder) { builder.pushStyle(TextStyle(color: black)); builder.addText('Lorem ipsum'); @@ -70,7 +69,7 @@ void testMain() async { Offset offset = Offset.zero; for (TextAlign align in aligns) { final CanvasParagraph paragraph = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: 14.0, textAlign: align), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: 14.0, textAlign: align), (builder) { builder.pushStyle(TextStyle(color: black)); builder.addText('Lorem'); @@ -104,7 +103,7 @@ void testMain() async { Offset offset = Offset.zero; for (TextAlign align in aligns) { final CanvasParagraph paragraph = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: 14.0, textAlign: align), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: 14.0, textAlign: align), (builder) { builder.pushStyle(TextStyle(color: black)); builder.addText('Lorem'); @@ -134,7 +133,7 @@ void testMain() async { // First paragraph with a placeholder at the beginning. final CanvasParagraph paragraph1 = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: 24.0, textAlign: TextAlign.center), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: 24.0, textAlign: TextAlign.center), (builder) { builder.addPlaceholder(80.0, 50.0, PlaceholderAlignment.baseline, baseline: TextBaseline.alphabetic); builder.pushStyle(TextStyle(color: black)); @@ -151,7 +150,7 @@ void testMain() async { // Second paragraph with a placeholder at the end. final CanvasParagraph paragraph2 = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: 24.0, textAlign: TextAlign.center), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: 24.0, textAlign: TextAlign.center), (builder) { builder.pushStyle(TextStyle(color: black)); builder.addText('Lorem ipsum '); @@ -168,7 +167,7 @@ void testMain() async { // Third paragraph with a placeholder alone in the second line. final CanvasParagraph paragraph3 = rich( - ParagraphStyle(fontFamily: 'Roboto', fontSize: 24.0, textAlign: TextAlign.center), + EngineParagraphStyle(fontFamily: 'Roboto', fontSize: 24.0, textAlign: TextAlign.center), (builder) { builder.pushStyle(TextStyle(color: black)); builder.addText('Lorem ipsum '); @@ -191,7 +190,7 @@ void surroundParagraph( CanvasParagraph paragraph, ) { final Rect rect = offset & Size(paragraph.width, paragraph.height); - final SurfacePaint paint = Paint()..color = blue..style = PaintingStyle.stroke; + final SurfacePaint paint = SurfacePaint()..color = blue..style = PaintingStyle.stroke; canvas.drawRect(rect, paint.paintData); } @@ -201,6 +200,6 @@ void fillPlaceholder( CanvasParagraph paragraph, ) { final TextBox placeholderBox = paragraph.getBoxesForPlaceholders().single; - final SurfacePaint paint = Paint()..color = red; + final SurfacePaint paint = SurfacePaint()..color = red; canvas.drawRect(placeholderBox.toRect().shift(offset), paint.paintData); } diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/shadows_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/shadows_test.dart index 2551d66888f..26d79c757b0 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/shadows_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_paragraph/shadows_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 - import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/ui.dart' hide window; @@ -25,7 +23,7 @@ void testMain() async { final canvas = BitmapCanvas(bounds, RenderStrategy()); final CanvasParagraph paragraph = rich( - ParagraphStyle(fontFamily: 'Roboto'), + EngineParagraphStyle(fontFamily: 'Roboto'), (builder) { builder.pushStyle(EngineTextStyle.only( fontSize: 32.0, diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart index 73f45c0cdf2..ef45520c16b 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'package:test/bootstrap/browser.dart'; @@ -20,7 +19,7 @@ void testMain() async { const double screenWidth = 600.0; const double screenHeight = 800.0; const Rect screenRect = Rect.fromLTWH(0, 0, screenWidth, screenHeight); - final Paint testPaint = Paint() + final SurfacePaint testPaint = SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color(0xFFFF00FF); @@ -51,9 +50,9 @@ void testMain() async { html.Element sceneElement = html.Element.tag('flt-scene'); sceneElement.append(engineCanvas.rootElement); - html.document.body.append(sceneElement); + html.document.body!.append(sceneElement); - final html.CanvasElement canvas = html.document.querySelector('canvas'); + final html.CanvasElement canvas = html.document.querySelector('canvas') as html.CanvasElement; // ! Since canvas is first element, it should have zIndex = -1 for correct // paint order. expect(canvas.style.zIndex , '-1'); @@ -74,16 +73,16 @@ void testMain() async { final Path path2 = Path() ..moveTo(3, 0) ..quadraticBezierTo(100, 0, 100, 100); - rc2.drawImage(_createRealTestImage(), Offset(0, 0), Paint()); + rc2.drawImage(_createRealTestImage(), Offset(0, 0), SurfacePaint()); rc2.drawPath(path2, testPaint); rc2.endRecording(); rc2.apply(engineCanvas, screenRect); sceneElement = html.Element.tag('flt-scene'); sceneElement.append(engineCanvas.rootElement); - html.document.body.append(sceneElement); + html.document.body!.append(sceneElement); - final html.CanvasElement canvas2 = html.document.querySelector('canvas'); + final html.CanvasElement canvas2 = html.document.querySelector('canvas') as html.CanvasElement; // ZIndex should have been cleared since we have image element preceding // canvas. expect(canvas.style.zIndex != '-1', true); diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/dom_mask_filter_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/dom_mask_filter_test.dart index cb158bd885f..d2a8e470d4e 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/dom_mask_filter_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/dom_mask_filter_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 - import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/ui.dart' hide TextStyle; @@ -30,7 +28,7 @@ void testMain() async { final RecordingCanvas rc = RecordingCanvas(const Rect.fromLTRB(0, 0, 500, 500)); for (int blurSigma = 1; blurSigma < 10; blurSigma += 2) { - final Paint paint = Paint() + final SurfacePaint paint = SurfacePaint() ..color = Color(0xFF2fdfd2) ..maskFilter = MaskFilter.blur(BlurStyle.normal, blurSigma.toDouble()); rc.drawRect(Rect.fromLTWH(15.0, 15.0 + blurSigma * 40, 200, 20), paint); diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/linear_gradient_golden_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/linear_gradient_golden_test.dart index be3881e77bb..bec49b4b11f 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/linear_gradient_golden_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/linear_gradient_golden_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:math' as math; import 'package:test/bootstrap/browser.dart'; @@ -31,7 +30,7 @@ void testMain() async { final RecordingCanvas rc = RecordingCanvas(const Rect.fromLTRB(0, 0, 500, 500)); Rect shaderRect = const Rect.fromLTRB(50, 50, 300, 300); - final Paint paint = Paint()..shader = Gradient.linear( + final SurfacePaint paint = SurfacePaint()..shader = Gradient.linear( Offset(shaderRect.left, shaderRect.top), Offset(shaderRect.right, shaderRect.bottom), [Color(0xFFcfdfd2), Color(0xFF042a85)]); @@ -56,7 +55,7 @@ void testMain() async { Matrix4 post = Matrix4.identity(); post.translate(-shaderRect.left, -shaderRect.top); matrix.multiply(post); - final Paint paint = Paint() + final SurfacePaint paint = SurfacePaint() ..shader = Gradient.linear( Offset(shaderRect.left, shaderRect.top), Offset(shaderRect.right, shaderRect.bottom), @@ -64,7 +63,7 @@ void testMain() async { null, TileMode.clamp, matrix.toFloat64()); - rc.drawRect(shaderRect, Paint() + rc.drawRect(shaderRect, SurfacePaint() ..color = Color(0xFF000000)); rc.drawOval(shaderRect, paint); yOffset += 120; @@ -80,7 +79,7 @@ void testMain() async { final RecordingCanvas rc = RecordingCanvas(const Rect.fromLTRB(0, 0, 500, 500)); Rect shaderRect = const Rect.fromLTRB(50, 50, 300, 300); - final Paint paint = Paint()..shader = Gradient.linear( + final SurfacePaint paint = SurfacePaint()..shader = Gradient.linear( Offset(shaderRect.left, shaderRect.top), Offset(shaderRect.right, shaderRect.bottom), [Color(0xFFcfdfd2), Color(0xFF042a85)]); @@ -98,7 +97,7 @@ void testMain() async { double yOffset = 0; for (double angle in angles) { final Rect shaderRect = Rect.fromLTWH(50, 50 + yOffset, 100, 100); - final Paint paint = Paint() + final SurfacePaint paint = SurfacePaint() ..shader = Gradient.linear( Offset(shaderRect.left, shaderRect.top), Offset(shaderRect.left + shaderRect.width / 2, shaderRect.top), @@ -108,7 +107,7 @@ void testMain() async { Matrix4 .rotationZ((angle / 180) * math.pi) .toFloat64()); - rc.drawRect(shaderRect, Paint() + rc.drawRect(shaderRect, SurfacePaint() ..color = Color(0xFF000000)); rc.drawOval(shaderRect, paint); yOffset += 120; @@ -125,7 +124,7 @@ void testMain() async { double yOffset = 0; for (double angle in angles) { final Rect shaderRect = Rect.fromLTWH(50, 50 + yOffset, 100, 100); - final Paint paint = Paint() + final SurfacePaint paint = SurfacePaint() ..shader = Gradient.linear( Offset(shaderRect.left, shaderRect.top), Offset(shaderRect.left + shaderRect.width / 2, shaderRect.top), @@ -135,7 +134,7 @@ void testMain() async { Matrix4 .rotationZ((angle / 180) * math.pi) .toFloat64()); - rc.drawRect(shaderRect, Paint() + rc.drawRect(shaderRect, SurfacePaint() ..color = Color(0xFF000000)); rc.drawOval(shaderRect, paint); yOffset += 120; diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/path_metrics_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/path_metrics_test.dart index 5f6e34112a9..dc3b8ed84aa 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/path_metrics_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/path_metrics_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'package:test/bootstrap/browser.dart'; @@ -37,7 +36,7 @@ void testMain() async { final html.Element sceneElement = html.Element.tag('flt-scene'); try { sceneElement.append(engineCanvas.rootElement); - html.document.body.append(sceneElement); + html.document.body!.append(sceneElement); await matchGoldenFile('$fileName.png', region: region); } finally { // The page is reused across tests, so remove the element after taking the @@ -59,7 +58,7 @@ void testMain() async { path.lineTo(150, 20); PathMetric metric = path.computeMetrics().first; - Tangent t = metric.getTangentForOffset(50.0); + Tangent t = metric.getTangentForOffset(50.0)!; expect(t.position.dx, within(from: 83.633, distance: 0.01)); expect(t.position.dy, within(from: 93.0, distance: 0.01)); expect(t.vector.dx, within(from: 0.672, distance: 0.01)); @@ -75,7 +74,7 @@ void testMain() async { path.moveTo(150, 20); path.quadraticBezierTo(p1x, p1y, p2x, p2y); PathMetric metric = path.computeMetrics().first; - Tangent t = metric.getTangentForOffset(50.0); + Tangent t = metric.getTangentForOffset(50.0)!; expect(t.position.dx, within(from: 187.25, distance: 0.01)); expect(t.position.dy, within(from: 53.33, distance: 0.01)); expect(t.vector.dx, within(from: 0.82, distance: 0.01)); @@ -91,7 +90,7 @@ void testMain() async { path.moveTo(150, 20); path.quadraticBezierTo(p0x, p0y, p1x, p1y); PathMetric metric = path.computeMetrics().first; - Tangent t = metric.getTangentForOffset(50.0); + Tangent t = metric.getTangentForOffset(50.0)!; expect(t.position.dx, within(from: 199.82, distance: 0.01)); expect(t.position.dy, within(from: 21.46, distance: 0.01)); expect(t.vector.dx, within(from: 0.99, distance: 0.01)); @@ -103,16 +102,16 @@ void testMain() async { final RecordingCanvas rc = RecordingCanvas(const Rect.fromLTRB(0, 0, 500, 500)); - final Paint paint = Paint() + final SurfacePaint paint = SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 3 ..color = black12Color; - final Paint redPaint = Paint() + final SurfacePaint redPaint = SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 1 ..color = redAccentColor; - final Path path = Path(); + final SurfacePath path = SurfacePath(); path.moveTo(50, 130); path.lineTo(150, 20); double p1x = 240; @@ -155,11 +154,11 @@ void testMain() async { final RecordingCanvas rc = RecordingCanvas(const Rect.fromLTRB(0, 0, 500, 500)); - final Paint paint = Paint() + final SurfacePaint paint = SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 3 ..color = black12Color; - final Paint redPaint = Paint() + final SurfacePaint redPaint = SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 1 ..color = redAccentColor; diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/path_transform_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/path_transform_test.dart index 0107f8f6e7d..e1b93372a4f 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/path_transform_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/path_transform_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'dart:math' as math; @@ -25,7 +24,7 @@ void testMain() async { // Commit a recording canvas to a bitmap, and compare with the expected Future _checkScreenshot(RecordingCanvas rc, String fileName, {Rect region = const Rect.fromLTWH(0, 0, 500, 500), - double maxDiffRatePercent = null}) async { + double? maxDiffRatePercent = null}) async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect, RenderStrategy()); rc.endRecording(); @@ -35,7 +34,7 @@ void testMain() async { final html.Element sceneElement = html.Element.tag('flt-scene'); try { sceneElement.append(engineCanvas.rootElement); - html.document.body.append(sceneElement); + html.document.body!.append(sceneElement); await matchGoldenFile('$fileName.png', region: region, maxDiffRatePercent: maxDiffRatePercent); } finally { // The page is reused across tests, so remove the element after taking the @@ -59,7 +58,7 @@ void testMain() async { path.lineTo(300, 200); rc.drawPath( path, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color(0xFF404000)); @@ -70,7 +69,7 @@ void testMain() async { matrix4: testMatrixTranslateRotate.toFloat64()); rc.drawPath( transformedPath, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color.fromRGBO(0, 128, 255, 1.0)); @@ -84,7 +83,7 @@ void testMain() async { path.addRect(Rect.fromLTRB(50, 40, 300, 100)); rc.drawPath( path, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color(0xFF404000)); @@ -95,7 +94,7 @@ void testMain() async { matrix4: testMatrixTranslateRotate.toFloat64()); rc.drawPath( transformedPath, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color.fromRGBO(0, 128, 255, 1.0)); @@ -110,7 +109,7 @@ void testMain() async { path.quadraticBezierTo(100, 300, 400, 300); rc.drawPath( path, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color(0xFF404000)); @@ -121,7 +120,7 @@ void testMain() async { matrix4: testMatrixTranslateRotate.toFloat64()); rc.drawPath( transformedPath, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color.fromRGBO(0, 128, 255, 1.0)); @@ -147,7 +146,7 @@ void testMain() async { rc.drawPath( path, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color(0xFF404000)); @@ -158,7 +157,7 @@ void testMain() async { matrix4: testMatrixTranslateRotate.toFloat64()); rc.drawPath( transformedPath, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color.fromRGBO(0, 128, 255, 1.0)); @@ -180,7 +179,7 @@ void testMain() async { rc.drawPath( path, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color(0xFF404000)); @@ -192,7 +191,7 @@ void testMain() async { matrix4: testMatrixTranslateRotate.toFloat64()); rc.drawPath( transformedPath, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color.fromRGBO(0, 128, 255, 1.0)); @@ -209,7 +208,7 @@ void testMain() async { rc.drawPath( path, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color(0xFF404000)); @@ -221,7 +220,7 @@ void testMain() async { matrix4: testMatrixTranslateRotate.toFloat64()); rc.drawPath( transformedPath, - Paint() + SurfacePaint() ..style = PaintingStyle.stroke ..strokeWidth = 2.0 ..color = const Color.fromRGBO(0, 128, 255, 1.0)); diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/picture_golden_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/picture_golden_test.dart index 1c61fff196a..b0316d3c615 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/picture_golden_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/picture_golden_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'package:test/bootstrap/browser.dart'; @@ -19,18 +18,18 @@ void main() { void testMain() { group('Picture', () { test('toImage produces an image', () async { - final EnginePictureRecorder recorder = ui.PictureRecorder(); + final EnginePictureRecorder recorder = EnginePictureRecorder(); final RecordingCanvas canvas = recorder.beginRecording(ui.Rect.fromLTRB(0, 0, 200, 100)); canvas.drawCircle( const ui.Offset(100, 50), 40, - ui.Paint() + SurfacePaint() ..color = ui.Color.fromARGB(255, 255, 100, 100), ); final ui.Picture picture = recorder.endRecording(); - final HtmlImage image = await picture.toImage(200, 100); + final HtmlImage image = (await picture.toImage(200, 100)) as HtmlImage; expect(image, isNotNull); - html.document.body + html.document.body! ..style.margin = '0' ..append(image.imgElement); try { diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/radial_gradient_golden_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/radial_gradient_golden_test.dart index e4d68192018..e1ae4a96171 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/radial_gradient_golden_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/radial_gradient_golden_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/ui.dart' hide TextStyle; @@ -29,7 +28,7 @@ void testMain() async { double maxDiffRatePercent = 0, Rect region = const Rect.fromLTWH(0, 0, 500, 500)}) async { final RecordingCanvas rc = RecordingCanvas(region); - final Paint paint = Paint()..shader = shader; + final SurfacePaint paint = SurfacePaint()..shader = shader; final Path path = Path(); path.addRect(paintRect); rc.drawPath(path, paint); diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/shader_mask_golden_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/shader_mask_golden_test.dart index 38ba1ea46b3..62bc2b7877b 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/shader_mask_golden_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/shader_mask_golden_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'package:test/bootstrap/browser.dart'; @@ -97,26 +96,26 @@ void testMain() async { Picture _drawTestPictureWithCircles( Rect region, double offsetX, double offsetY) { - final EnginePictureRecorder recorder = PictureRecorder(); + final EnginePictureRecorder recorder = EnginePictureRecorder(); final RecordingCanvas canvas = recorder.beginRecording(region); canvas.drawCircle(Offset(offsetX + 30, offsetY + 30), 30, - Paint()..style = PaintingStyle.fill); + SurfacePaint()..style = PaintingStyle.fill); canvas.drawCircle( Offset(offsetX + 110, offsetY + 30), 30, - Paint() + SurfacePaint() ..style = PaintingStyle.fill ..color = const Color(0xFFFF0000)); canvas.drawCircle( Offset(offsetX + 30, offsetY + 110), 30, - Paint() + SurfacePaint() ..style = PaintingStyle.fill ..color = const Color(0xFF00FF00)); canvas.drawCircle( Offset(offsetX + 110, offsetY + 110), 30, - Paint() + SurfacePaint() ..style = PaintingStyle.fill ..color = const Color(0xFF0000FF)); return recorder.endRecording(); @@ -148,5 +147,5 @@ void _renderScene(BlendMode blendMode) { builder.addPicture(Offset.zero, circles2); builder.pop(); - html.document.body.append(builder.build().webOnlyRootElement); + html.document.body!.append(builder.build().webOnlyRootElement!); } diff --git a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/text_placeholders_test.dart b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/text_placeholders_test.dart index 8b46adcb384..5044c864a26 100644 --- a/engine/src/flutter/lib/web_ui/test/golden_tests/engine/text_placeholders_test.dart +++ b/engine/src/flutter/lib/web_ui/test/golden_tests/engine/text_placeholders_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:ui/src/engine.dart'; import 'package:ui/ui.dart'; @@ -94,8 +93,8 @@ const Size placeholderSize = Size(80.0, 50.0); void _paintTextWithPlaceholder( RecordingCanvas canvas, Offset offset, { - String before, - String after, + required String before, + required String after, PlaceholderAlignment placeholderAlignment = PlaceholderAlignment.baseline, TextAlign textAlignment = TextAlign.left, }) { @@ -112,7 +111,7 @@ void _paintTextWithPlaceholder( final TextBox placeholderBox = paragraph.getBoxesForPlaceholders().single; canvas.drawRect( placeholderBox.toRect().shift(offset), - Paint()..color = red, + SurfacePaint()..color = red, ); } diff --git a/engine/src/flutter/lib/web_ui/test/gradient_test.dart b/engine/src/flutter/lib/web_ui/test/gradient_test.dart index b4335dd3532..5cf6edacf94 100644 --- a/engine/src/flutter/lib/web_ui/test/gradient_test.dart +++ b/engine/src/flutter/lib/web_ui/test/gradient_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; @@ -17,7 +16,7 @@ void testMain() { expect( Gradient.radial( Offset.zero, - null, + 5.0, [const Color(0xFFFFFFFF), const Color(0xFFFFFFFF)], [0.0, 1.0], TileMode.mirror), diff --git a/engine/src/flutter/lib/web_ui/test/hash_codes_test.dart b/engine/src/flutter/lib/web_ui/test/hash_codes_test.dart index cca96671b71..7f56a727b68 100644 --- a/engine/src/flutter/lib/web_ui/test/hash_codes_test.dart +++ b/engine/src/flutter/lib/web_ui/test/hash_codes_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/ui.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/keyboard_test.dart b/engine/src/flutter/lib/web_ui/test/keyboard_test.dart index 2b042b9fc1f..5444b301dfd 100644 --- a/engine/src/flutter/lib/web_ui/test/keyboard_test.dart +++ b/engine/src/flutter/lib/web_ui/test/keyboard_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'dart:js_util' as js_util; import 'dart:typed_data'; @@ -20,7 +19,7 @@ void main() { void testMain() { group('Keyboard', () { /// Used to save and restore [ui.window.onPlatformMessage] after each test. - ui.PlatformMessageCallback savedCallback; + ui.PlatformMessageCallback? savedCallback; setUp(() { savedCallback = ui.window.onPlatformMessage; @@ -34,17 +33,17 @@ void testMain() { expect(Keyboard.instance, isNull); Keyboard.initialize(); expect(Keyboard.instance, isA()); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); expect(Keyboard.instance, isNull); }); test('dispatches keyup to flutter/keyevent channel', () { Keyboard.initialize(); - String channelReceived; - Map dataReceived; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + String? channelReceived; + Map? dataReceived; + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { channelReceived = channel; dataReceived = const JSONMessageCodec().decodeMessage(data); }; @@ -63,7 +62,7 @@ void testMain() { 'metaState': 0x0, }); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }, // TODO(nurhan): https://github.com/flutter/flutter/issues/50815 skip: browserEngine == BrowserEngine.edge); @@ -71,10 +70,10 @@ void testMain() { test('dispatches keydown to flutter/keyevent channel', () { Keyboard.initialize(); - String channelReceived; - Map dataReceived; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + String? channelReceived; + Map? dataReceived; + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { channelReceived = channel; dataReceived = const JSONMessageCodec().decodeMessage(data); }; @@ -94,7 +93,7 @@ void testMain() { }); expect(event.defaultPrevented, isFalse); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }, // TODO(nurhan): https://github.com/flutter/flutter/issues/50815 skip: browserEngine == BrowserEngine.edge); @@ -102,9 +101,9 @@ void testMain() { test('dispatches correct meta state', () { Keyboard.initialize(); - Map dataReceived; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + Map? dataReceived; + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { dataReceived = const JSONMessageCodec().decodeMessage(data); }; @@ -144,7 +143,7 @@ void testMain() { 'metaState': 0x1 | 0x2 | 0x8, }); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }, // TODO(nurhan): https://github.com/flutter/flutter/issues/50815 skip: browserEngine == BrowserEngine.edge); @@ -153,8 +152,8 @@ void testMain() { Keyboard.initialize(); List> messages = >[]; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { messages.add(const JSONMessageCodec().decodeMessage(data)); }; @@ -197,7 +196,7 @@ void testMain() { expectedMessage, ]); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }, // TODO(nurhan): https://github.com/flutter/flutter/issues/50815 skip: browserEngine == BrowserEngine.edge); @@ -206,8 +205,8 @@ void testMain() { Keyboard.initialize(); int count = 0; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { count += 1; }; @@ -216,7 +215,7 @@ void testMain() { dispatchKeyboardEvent('keyup'); expect(count, 2); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); expect(Keyboard.instance, isNull); // No more event dispatching. @@ -230,11 +229,11 @@ void testMain() { Keyboard.initialize(); int count = 0; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { count += 1; - ByteData response = const JSONMessageCodec().encodeMessage({'handled': true}); - callback(response); + final ByteData response = const JSONMessageCodec().encodeMessage({'handled': true})!; + callback!(response); }; final html.KeyboardEvent event = dispatchKeyboardEvent( @@ -246,18 +245,18 @@ void testMain() { expect(event.defaultPrevented, isTrue); expect(count, 1); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }); test("Doesn't prevent default when key is not handled by the framework", () { Keyboard.initialize(); int count = 0; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { count += 1; - ByteData response = const JSONMessageCodec().encodeMessage({'handled': false}); - callback(response); + ByteData response = const JSONMessageCodec().encodeMessage({'handled': false})!; + callback!(response); }; final html.KeyboardEvent event = dispatchKeyboardEvent( @@ -269,15 +268,15 @@ void testMain() { expect(event.defaultPrevented, isFalse); expect(count, 1); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }); test('keyboard events should be triggered on text fields', () { Keyboard.initialize(); int count = 0; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { count += 1; }; @@ -293,18 +292,18 @@ void testMain() { expect(count, 1); }); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }); test('the "Tab" key should never be ignored', () { Keyboard.initialize(); int count = 0; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { count += 1; - ByteData response = const JSONMessageCodec().encodeMessage({'handled': true}); - callback(response); + ByteData response = const JSONMessageCodec().encodeMessage({'handled': true})!; + callback!(response); }; useTextEditingElement((html.Element element) { @@ -319,7 +318,7 @@ void testMain() { expect(count, 1); }); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }); testFakeAsync( @@ -335,8 +334,8 @@ void testMain() { Keyboard.initialize(); List> messages = >[]; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { messages.add(const JSONMessageCodec().decodeMessage(data)); }; @@ -428,7 +427,7 @@ void testMain() { } ]); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }, ); @@ -438,8 +437,8 @@ void testMain() { Keyboard.initialize(); List> messages = >[]; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { messages.add(const JSONMessageCodec().decodeMessage(data)); }; @@ -500,7 +499,7 @@ void testMain() { } messages.clear(); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }, ); @@ -510,8 +509,8 @@ void testMain() { Keyboard.initialize(); List> messages = >[]; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { messages.add(const JSONMessageCodec().decodeMessage(data)); }; @@ -532,7 +531,7 @@ void testMain() { async.elapse(Duration(seconds: 3)); expect(messages, hasLength(0)); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }, ); @@ -540,8 +539,8 @@ void testMain() { Keyboard.initialize(); List> messages = >[]; - ui.window.onPlatformMessage = (String channel, ByteData data, - ui.PlatformMessageResponseCallback callback) { + ui.window.onPlatformMessage = (String channel, ByteData? data, + ui.PlatformMessageResponseCallback? callback) { messages.add(const JSONMessageCodec().decodeMessage(data)); }; @@ -590,7 +589,7 @@ void testMain() { } ]); - Keyboard.instance.dispose(); + Keyboard.instance!.dispose(); }); }); } @@ -602,7 +601,7 @@ void useTextEditingElement(ElementCallback callback) { input.classes.add(HybridTextEditing.textEditingClass); try { - html.document.body.append(input); + html.document.body!.append(input); callback(input); } finally { input.remove(); @@ -611,9 +610,9 @@ void useTextEditingElement(ElementCallback callback) { html.KeyboardEvent dispatchKeyboardEvent( String type, { - html.EventTarget target, - String key, - String code, + html.EventTarget? target, + String? key, + String? code, bool repeat = false, bool isShiftPressed = false, bool isAltPressed = false, diff --git a/engine/src/flutter/lib/web_ui/test/locale_test.dart b/engine/src/flutter/lib/web_ui/test/locale_test.dart index 316a42ae110..284c5ad395c 100644 --- a/engine/src/flutter/lib/web_ui/test/locale_test.dart +++ b/engine/src/flutter/lib/web_ui/test/locale_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/ui.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/mock_engine_canvas.dart b/engine/src/flutter/lib/web_ui/test/mock_engine_canvas.dart index 91b59ceb8e3..69569b085b9 100644 --- a/engine/src/flutter/lib/web_ui/test/mock_engine_canvas.dart +++ b/engine/src/flutter/lib/web_ui/test/mock_engine_canvas.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html' as html; import 'dart:typed_data'; @@ -13,7 +12,7 @@ import 'package:ui/ui.dart'; /// that were passed. class MockCanvasCall { MockCanvasCall._({ - this.methodName, + required this.methodName, this.arguments, }); @@ -35,7 +34,8 @@ class MockEngineCanvas implements EngineCanvas { final List methodCallLog = []; @override - html.Element get rootElement => null; + html.Element get rootElement => _rootElement; + html.Element _rootElement = html.DivElement(); void _called(String methodName, {dynamic arguments}) { methodCallLog.add(MockCanvasCall._( diff --git a/engine/src/flutter/lib/web_ui/test/paragraph_test.dart b/engine/src/flutter/lib/web_ui/test/paragraph_test.dart index a6f7b054170..0f2db859c47 100644 --- a/engine/src/flutter/lib/web_ui/test/paragraph_test.dart +++ b/engine/src/flutter/lib/web_ui/test/paragraph_test.dart @@ -2,35 +2,34 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/src/engine.dart'; import 'package:ui/ui.dart' hide window; -void testEachMeasurement(String description, VoidCallback body, {bool skip}) { +void testEachMeasurement(String description, VoidCallback body, {bool? skip}) { test('$description (dom measurement)', () async { try { TextMeasurementService.initialize(rulerCacheCapacity: 2); - WebExperiments.instance.useCanvasText = false; - WebExperiments.instance.useCanvasRichText = false; + WebExperiments.instance!.useCanvasText = false; + WebExperiments.instance!.useCanvasRichText = false; return body(); } finally { - WebExperiments.instance.useCanvasText = null; - WebExperiments.instance.useCanvasRichText = null; + WebExperiments.instance!.useCanvasText = null; + WebExperiments.instance!.useCanvasRichText = null; TextMeasurementService.clearCache(); } }, skip: skip); test('$description (canvas measurement)', () async { try { TextMeasurementService.initialize(rulerCacheCapacity: 2); - WebExperiments.instance.useCanvasText = true; - WebExperiments.instance.useCanvasRichText = false; + WebExperiments.instance!.useCanvasText = true; + WebExperiments.instance!.useCanvasRichText = false; return body(); } finally { - WebExperiments.instance.useCanvasText = null; - WebExperiments.instance.useCanvasRichText = null; + WebExperiments.instance!.useCanvasText = null; + WebExperiments.instance!.useCanvasRichText = null; TextMeasurementService.clearCache(); } }, skip: skip); @@ -195,8 +194,8 @@ void testMain() async { test('getPositionForOffset multi-line', () { // [Paragraph.getPositionForOffset] for multi-line text doesn't work well // with dom-based measurement. - WebExperiments.instance.useCanvasText = true; - WebExperiments.instance.useCanvasRichText = false; + WebExperiments.instance!.useCanvasText = true; + WebExperiments.instance!.useCanvasRichText = false; TextMeasurementService.initialize(rulerCacheCapacity: 2); final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle( @@ -292,13 +291,13 @@ void testMain() async { ); TextMeasurementService.clearCache(); - WebExperiments.instance.useCanvasText = null; - WebExperiments.instance.useCanvasRichText = null; + WebExperiments.instance!.useCanvasText = null; + WebExperiments.instance!.useCanvasRichText = null; }); test('getPositionForOffset multi-line centered', () { - WebExperiments.instance.useCanvasText = true; - WebExperiments.instance.useCanvasRichText = false; + WebExperiments.instance!.useCanvasText = true; + WebExperiments.instance!.useCanvasRichText = false; TextMeasurementService.initialize(rulerCacheCapacity: 2); final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle( @@ -401,8 +400,8 @@ void testMain() async { ); TextMeasurementService.clearCache(); - WebExperiments.instance.useCanvasText = null; - WebExperiments.instance.useCanvasRichText = null; + WebExperiments.instance!.useCanvasText = null; + WebExperiments.instance!.useCanvasRichText = null; }); test('getWordBoundary', () { @@ -892,8 +891,8 @@ void testMain() async { test('longestLine', () { // [Paragraph.longestLine] is only supported by canvas-based measurement. - WebExperiments.instance.useCanvasText = true; - WebExperiments.instance.useCanvasRichText = false; + WebExperiments.instance!.useCanvasText = true; + WebExperiments.instance!.useCanvasRichText = false; TextMeasurementService.initialize(rulerCacheCapacity: 2); final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle( @@ -908,8 +907,8 @@ void testMain() async { expect(paragraph.longestLine, 50.0); TextMeasurementService.clearCache(); - WebExperiments.instance.useCanvasText = null; - WebExperiments.instance.useCanvasRichText = null; + WebExperiments.instance!.useCanvasText = null; + WebExperiments.instance!.useCanvasRichText = null; }); testEachMeasurement('getLineBoundary (single-line)', () { @@ -936,8 +935,8 @@ void testMain() async { test('getLineBoundary (multi-line)', () { // [Paragraph.getLineBoundary] for multi-line paragraphs is only supported // by canvas-based measurement. - WebExperiments.instance.useCanvasText = true; - WebExperiments.instance.useCanvasRichText = false; + WebExperiments.instance!.useCanvasText = true; + WebExperiments.instance!.useCanvasRichText = false; TextMeasurementService.initialize(rulerCacheCapacity: 2); final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle( @@ -980,8 +979,8 @@ void testMain() async { } TextMeasurementService.clearCache(); - WebExperiments.instance.useCanvasText = null; - WebExperiments.instance.useCanvasRichText = null; + WebExperiments.instance!.useCanvasText = null; + WebExperiments.instance!.useCanvasRichText = null; }); testEachMeasurement('width should be a whole integer', () { diff --git a/engine/src/flutter/lib/web_ui/test/rect_test.dart b/engine/src/flutter/lib/web_ui/test/rect_test.dart index a526b4590e9..3899e4ffe43 100644 --- a/engine/src/flutter/lib/web_ui/test/rect_test.dart +++ b/engine/src/flutter/lib/web_ui/test/rect_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/ui.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/rrect_test.dart b/engine/src/flutter/lib/web_ui/test/rrect_test.dart index 02943b8413a..03a2d9854a0 100644 --- a/engine/src/flutter/lib/web_ui/test/rrect_test.dart +++ b/engine/src/flutter/lib/web_ui/test/rrect_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart' hide TypeMatcher, isInstanceOf; import 'package:ui/ui.dart'; diff --git a/engine/src/flutter/lib/web_ui/test/title_test.dart b/engine/src/flutter/lib/web_ui/test/title_test.dart index af366760e49..17a24898217 100644 --- a/engine/src/flutter/lib/web_ui/test/title_test.dart +++ b/engine/src/flutter/lib/web_ui/test/title_test.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.6 import 'dart:html'; import 'package:test/bootstrap/browser.dart';