@@ -7,12 +7,15 @@ import 'dart:typed_data';
7
7
8
8
import 'package:test/bootstrap/browser.dart' ;
9
9
import 'package:test/test.dart' ;
10
+ import 'package:ui/src/engine/canvaskit/image.dart' ;
11
+ import 'package:ui/src/engine/dom.dart' ;
10
12
import 'package:ui/src/engine/html/image.dart' ;
11
13
import 'package:ui/src/engine/html_image_element_codec.dart' ;
12
14
import 'package:ui/ui.dart' as ui;
13
15
import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
14
16
15
17
import '../../common/test_initialization.dart' ;
18
+ import '../../ui/utils.dart' ;
16
19
17
20
void main () {
18
21
internalBootstrapBrowserTest (() => testMain);
@@ -60,16 +63,20 @@ Future<void> testMain() async {
60
63
expect (image.height, height);
61
64
});
62
65
test ('loads sample image' , () async {
63
- final HtmlImageElementCodec codec =
64
- HtmlRendererImageCodec ('sample_image1.png' );
66
+ final HtmlImageElementCodec codec = createImageElementCodec ('sample_image1.png' );
65
67
final ui.FrameInfo frameInfo = await codec.getNextFrame ();
68
+
69
+ expect (codec.imgElement, isNotNull);
70
+ expect (codec.imgElement! .src, contains ('sample_image1.png' ));
71
+ expect (codec.imgElement! .crossOrigin, isHtml ? isNull : 'anonymous' );
72
+ expect (codec.imgElement! .decoding, 'async' );
73
+
66
74
expect (frameInfo.image, isNotNull);
67
75
expect (frameInfo.image.width, 100 );
68
76
expect (frameInfo.image.toString (), '[100×100]' );
69
77
});
70
78
test ('dispose image image' , () async {
71
- final HtmlImageElementCodec codec =
72
- HtmlRendererImageCodec ('sample_image1.png' );
79
+ final HtmlImageElementCodec codec = createImageElementCodec ('sample_image1.png' );
73
80
final ui.FrameInfo frameInfo = await codec.getNextFrame ();
74
81
expect (frameInfo.image, isNotNull);
75
82
expect (frameInfo.image.debugDisposed, isFalse);
@@ -78,7 +85,7 @@ Future<void> testMain() async {
78
85
});
79
86
test ('provides image loading progress' , () async {
80
87
final StringBuffer buffer = StringBuffer ();
81
- final HtmlImageElementCodec codec = HtmlRendererImageCodec (
88
+ final HtmlImageElementCodec codec = createImageElementCodec (
82
89
'sample_image1.png' , chunkCallback: (int loaded, int total) {
83
90
buffer.write ('$loaded /$total ,' );
84
91
});
@@ -89,7 +96,7 @@ Future<void> testMain() async {
89
96
/// Regression test for Firefox
90
97
/// https://github.com/flutter/flutter/issues/66412
91
98
test ('Returns nonzero natural width/height' , () async {
92
- final HtmlImageElementCodec codec = HtmlRendererImageCodec (
99
+ final HtmlImageElementCodec codec = createImageElementCodec (
93
100
'data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9I'
94
101
'jAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dG'
95
102
'l0bGU+QWJzdHJhY3QgaWNvbjwvdGl0bGU+PHBhdGggZD0iTTEyIDBjOS42MDEgMCAx'
@@ -103,14 +110,20 @@ Future<void> testMain() async {
103
110
final ui.FrameInfo frameInfo = await codec.getNextFrame ();
104
111
expect (frameInfo.image.width, isNot (0 ));
105
112
});
106
- });
113
+ }, skip : isSkwasm );
107
114
108
115
group ('ImageCodecUrl' , () {
109
116
test ('loads sample image from web' , () async {
110
117
final Uri uri = Uri .base .resolve ('sample_image1.png' );
111
118
final HtmlImageElementCodec codec =
112
119
await ui_web.createImageCodecFromUrl (uri) as HtmlImageElementCodec ;
113
120
final ui.FrameInfo frameInfo = await codec.getNextFrame ();
121
+
122
+ expect (codec.imgElement, isNotNull);
123
+ expect (codec.imgElement! .src, contains ('sample_image1.png' ));
124
+ expect (codec.imgElement! .crossOrigin, isHtml ? isNull : 'anonymous' );
125
+ expect (codec.imgElement! .decoding, 'async' );
126
+
114
127
expect (frameInfo.image, isNotNull);
115
128
expect (frameInfo.image.width, 100 );
116
129
});
@@ -124,5 +137,14 @@ Future<void> testMain() async {
124
137
await codec.getNextFrame ();
125
138
expect (buffer.toString (), '0/100,100/100,' );
126
139
});
127
- });
140
+ }, skip: isSkwasm);
141
+ }
142
+
143
+ HtmlImageElementCodec createImageElementCodec (
144
+ String src, {
145
+ ui_web.ImageCodecChunkCallback ? chunkCallback,
146
+ }) {
147
+ return isHtml
148
+ ? HtmlRendererImageCodec (src, chunkCallback: chunkCallback)
149
+ : CkImageElementCodec (src, chunkCallback: chunkCallback);
128
150
}
0 commit comments