Skip to content

Commit 94c63f8

Browse files
authored
Memory leaks clean up 2 (#145757)
1 parent 8953ba6 commit 94c63f8

File tree

7 files changed

+37
-7
lines changed

7 files changed

+37
-7
lines changed

packages/flutter/test/widgets/box_decoration_test.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'dart:ui' as ui show Image;
99
import 'package:flutter/foundation.dart';
1010
import 'package:flutter/material.dart';
1111
import 'package:flutter_test/flutter_test.dart';
12+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
1213

1314
import '../image_data.dart';
1415

@@ -36,7 +37,10 @@ Future<void> main() async {
3637
AutomatedTestWidgetsFlutterBinding();
3738
TestImageProvider.image = await decodeImageFromList(Uint8List.fromList(kTransparentImage));
3839

39-
testWidgets('DecoratedBox handles loading images', (WidgetTester tester) async {
40+
testWidgets('DecoratedBox handles loading images',
41+
// TODO(polina-c): dispose ImageStreamCompleterHandle, https://github.com/flutter/flutter/issues/145599 [leaks-to-clean]
42+
experimentalLeakTesting: LeakTesting.settings.withIgnoredAll(),
43+
(WidgetTester tester) async {
4044
final GlobalKey key = GlobalKey();
4145
final Completer<void> completer = Completer<void>();
4246
await tester.pumpWidget(
@@ -59,7 +63,10 @@ Future<void> main() async {
5963
expect(tester.binding.hasScheduledFrame, isFalse);
6064
});
6165

62-
testWidgets('Moving a DecoratedBox', (WidgetTester tester) async {
66+
testWidgets('Moving a DecoratedBox',
67+
// TODO(polina-c): dispose ImageStreamCompleterHandle, https://github.com/flutter/flutter/issues/145599 [leaks-to-clean]
68+
experimentalLeakTesting: LeakTesting.settings.withIgnoredAll(),
69+
(WidgetTester tester) async {
6370
final Completer<void> completer = Completer<void>();
6471
final Widget subtree = KeyedSubtree(
6572
key: GlobalKey(),

packages/flutter/test/widgets/context_menu_controller_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ void main() {
110110
expect(find.byKey(key1), findsNothing);
111111

112112
final ContextMenuController controller = ContextMenuController();
113+
addTearDown(controller.remove);
113114

114115
// Instantiating the controller does not shown it.
115116
await tester.pump();

packages/flutter/test/widgets/image_headers_test.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ import 'dart:io';
77

88
import 'package:flutter/widgets.dart';
99
import 'package:flutter_test/flutter_test.dart';
10+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
1011

1112
import '../image_data.dart';
1213

1314
void main() {
1415
final MockHttpClient client = MockHttpClient();
1516

16-
testWidgets('Headers', (WidgetTester tester) async {
17+
testWidgets('Headers',
18+
// TODO(polina-c): dispose ImageStreamCompleterHandle, https://github.com/flutter/flutter/issues/145599 [leaks-to-clean]
19+
experimentalLeakTesting: LeakTesting.settings.withIgnoredAll(),
20+
(WidgetTester tester) async {
1721
HttpOverrides.runZoned<Future<void>>(() async {
1822
await tester.pumpWidget(Image.network(
1923
'https://www.example.com/images/frame.png',

packages/flutter/test/widgets/image_icon_test.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:flutter/rendering.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import '../painting/mocks_for_image_cache.dart';
1011

@@ -20,7 +21,10 @@ void main() {
2021
);
2122
});
2223

23-
testWidgets('ImageIcon sizing - no theme, default size', (WidgetTester tester) async {
24+
testWidgets('ImageIcon sizing - no theme, default size',
25+
// TODO(polina-c): dispose ImageStreamCompleterHandle, https://github.com/flutter/flutter/issues/145599 [leaks-to-clean]
26+
experimentalLeakTesting: LeakTesting.settings.withIgnoredAll(),
27+
(WidgetTester tester) async {
2428
await tester.pumpWidget(
2529
Center(
2630
child: ImageIcon(image),
@@ -32,7 +36,10 @@ void main() {
3236
expect(find.byType(Image), findsOneWidget);
3337
});
3438

35-
testWidgets('Icon opacity', (WidgetTester tester) async {
39+
testWidgets('Icon opacity',
40+
// TODO(polina-c): dispose ImageStreamCompleterHandle, https://github.com/flutter/flutter/issues/145599 [leaks-to-clean]
41+
experimentalLeakTesting: LeakTesting.settings.withIgnoredAll(),
42+
(WidgetTester tester) async {
3643
await tester.pumpWidget(
3744
Center(
3845
child: IconTheme(

packages/flutter/test/widgets/image_rtl_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'dart:ui' as ui show Image;
77
import 'package:flutter/foundation.dart';
88
import 'package:flutter/widgets.dart';
99
import 'package:flutter_test/flutter_test.dart';
10+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
1011

1112
class TestImageProvider extends ImageProvider<TestImageProvider> {
1213
const TestImageProvider(this.image);
@@ -27,6 +28,9 @@ class TestImageProvider extends ImageProvider<TestImageProvider> {
2728
}
2829

2930
void main() {
31+
// TODO(polina-c): dispose ImageStreamCompleterHandle, https://github.com/flutter/flutter/issues/145599 [leaks-to-clean]
32+
LeakTesting.settings = LeakTesting.settings.withIgnoredAll();
33+
3034
late ui.Image testImage;
3135

3236
setUpAll(() async {

packages/flutter/test/widgets/image_test.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2066,7 +2066,10 @@ void main() {
20662066
);
20672067
});
20682068

2069-
testWidgets('Animated GIFs do not require layout for subsequent frames', (WidgetTester tester) async {
2069+
testWidgets('Animated GIFs do not require layout for subsequent frames',
2070+
// TODO(polina-c): clean up leaks, https://github.com/flutter/flutter/issues/134787 [leaks-to-clean]
2071+
experimentalLeakTesting: LeakTesting.settings.withIgnoredAll(),
2072+
(WidgetTester tester) async {
20702073
final ui.Codec codec = (await tester.runAsync(() {
20712074
return ui.instantiateImageCodec(Uint8List.fromList(kAnimatedGif));
20722075
}))!;

packages/flutter/test/widgets/obscured_animated_image_test.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'dart:ui' as ui show Image;
88
import 'package:flutter/material.dart';
99
import 'package:flutter/rendering.dart';
1010
import 'package:flutter_test/flutter_test.dart';
11+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
1112

1213
import '../image_data.dart';
1314
import '../painting/fake_codec.dart';
@@ -17,7 +18,10 @@ Future<void> main() async {
1718
final FakeCodec fakeCodec = await FakeCodec.fromData(Uint8List.fromList(kAnimatedGif));
1819
final FakeImageProvider fakeImageProvider = FakeImageProvider(fakeCodec);
1920

20-
testWidgets('Obscured image does not animate', (WidgetTester tester) async {
21+
testWidgets('Obscured image does not animate',
22+
// TODO(polina-c): dispose ImageStreamCompleterHandle, https://github.com/flutter/flutter/issues/145599 [leaks-to-clean]
23+
experimentalLeakTesting: LeakTesting.settings.withIgnoredAll(),
24+
(WidgetTester tester) async {
2125
final GlobalKey imageKey = GlobalKey();
2226
await tester.pumpWidget(
2327
MaterialApp(

0 commit comments

Comments
 (0)