@@ -7,12 +7,15 @@ import 'dart:typed_data';
77
88import 'package:test/bootstrap/browser.dart' ;
99import 'package:test/test.dart' ;
10+ import 'package:ui/src/engine/canvaskit/image.dart' ;
11+ import 'package:ui/src/engine/dom.dart' ;
1012import 'package:ui/src/engine/html/image.dart' ;
1113import 'package:ui/src/engine/html_image_element_codec.dart' ;
1214import 'package:ui/ui.dart' as ui;
1315import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
1416
1517import '../../common/test_initialization.dart' ;
18+ import '../../ui/utils.dart' ;
1619
1720void main () {
1821 internalBootstrapBrowserTest (() => testMain);
@@ -60,16 +63,20 @@ Future<void> testMain() async {
6063 expect (image.height, height);
6164 });
6265 test ('loads sample image' , () async {
63- final HtmlImageElementCodec codec =
64- HtmlRendererImageCodec ('sample_image1.png' );
66+ final HtmlImageElementCodec codec = createImageElementCodec ('sample_image1.png' );
6567 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+
6674 expect (frameInfo.image, isNotNull);
6775 expect (frameInfo.image.width, 100 );
6876 expect (frameInfo.image.toString (), '[100×100]' );
6977 });
7078 test ('dispose image image' , () async {
71- final HtmlImageElementCodec codec =
72- HtmlRendererImageCodec ('sample_image1.png' );
79+ final HtmlImageElementCodec codec = createImageElementCodec ('sample_image1.png' );
7380 final ui.FrameInfo frameInfo = await codec.getNextFrame ();
7481 expect (frameInfo.image, isNotNull);
7582 expect (frameInfo.image.debugDisposed, isFalse);
@@ -78,7 +85,7 @@ Future<void> testMain() async {
7885 });
7986 test ('provides image loading progress' , () async {
8087 final StringBuffer buffer = StringBuffer ();
81- final HtmlImageElementCodec codec = HtmlRendererImageCodec (
88+ final HtmlImageElementCodec codec = createImageElementCodec (
8289 'sample_image1.png' , chunkCallback: (int loaded, int total) {
8390 buffer.write ('$loaded /$total ,' );
8491 });
@@ -89,7 +96,7 @@ Future<void> testMain() async {
8996 /// Regression test for Firefox
9097 /// https://github.com/flutter/flutter/issues/66412
9198 test ('Returns nonzero natural width/height' , () async {
92- final HtmlImageElementCodec codec = HtmlRendererImageCodec (
99+ final HtmlImageElementCodec codec = createImageElementCodec (
93100 'data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9I'
94101 'jAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dG'
95102 'l0bGU+QWJzdHJhY3QgaWNvbjwvdGl0bGU+PHBhdGggZD0iTTEyIDBjOS42MDEgMCAx'
@@ -103,14 +110,20 @@ Future<void> testMain() async {
103110 final ui.FrameInfo frameInfo = await codec.getNextFrame ();
104111 expect (frameInfo.image.width, isNot (0 ));
105112 });
106- });
113+ }, skip : isSkwasm );
107114
108115 group ('ImageCodecUrl' , () {
109116 test ('loads sample image from web' , () async {
110117 final Uri uri = Uri .base .resolve ('sample_image1.png' );
111118 final HtmlImageElementCodec codec =
112119 await ui_web.createImageCodecFromUrl (uri) as HtmlImageElementCodec ;
113120 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+
114127 expect (frameInfo.image, isNotNull);
115128 expect (frameInfo.image.width, 100 );
116129 });
@@ -124,5 +137,14 @@ Future<void> testMain() async {
124137 await codec.getNextFrame ();
125138 expect (buffer.toString (), '0/100,100/100,' );
126139 });
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);
128150}
0 commit comments