Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 06e1ed2

Browse files
authored
[web] Move remaining web-only APIs to dart:ui_web (#44516)
- Warn on `webOnlyInitializePlatform` and replace all usages with `ui_web.bootstrapEngine`. - Remove unused `webOnlyPaintedBy` parameter. - `webOnlyDebugPhysicalSizeOverride` => `ui_web.debugPhysicalSizeOverride`. - `webOnlyInstantiateImageCodecFromUrl` => `ui_web.createImageCodecFromUrl`. - `WebOnlyImageCodecChunkCallback` => `ui_web.ImageCodecChunkCallback`. - `_webOnlyDidWarnAboutPerformanceOverlay` => `_didWarnAboutPerformanceOverlay`. - Remove unnecessary usage of `futurize`. Part of flutter/flutter#126831
1 parent dcb3fe0 commit 06e1ed2

28 files changed

+144
-47
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2142,6 +2142,7 @@ ORIGIN: ../../../flutter/lib/web_ui/lib/ui.dart + ../../../flutter/LICENSE
21422142
ORIGIN: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web.dart + ../../../flutter/LICENSE
21432143
ORIGIN: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/asset_manager.dart + ../../../flutter/LICENSE
21442144
ORIGIN: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/benchmarks.dart + ../../../flutter/LICENSE
2145+
ORIGIN: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/images.dart + ../../../flutter/LICENSE
21452146
ORIGIN: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/initialization.dart + ../../../flutter/LICENSE
21462147
ORIGIN: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/navigation/platform_location.dart + ../../../flutter/LICENSE
21472148
ORIGIN: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/navigation/url_strategy.dart + ../../../flutter/LICENSE
@@ -4870,6 +4871,7 @@ FILE: ../../../flutter/lib/web_ui/lib/ui.dart
48704871
FILE: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web.dart
48714872
FILE: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/asset_manager.dart
48724873
FILE: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/benchmarks.dart
4874+
FILE: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/images.dart
48734875
FILE: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/initialization.dart
48744876
FILE: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/navigation/platform_location.dart
48754877
FILE: ../../../flutter/lib/web_ui/lib/ui_web/src/ui_web/navigation/url_strategy.dart

lib/web_ui/lib/initialization.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ part of ui;
3131
// TODO(mdebbar): Deprecate this and remove it.
3232
// https://github.com/flutter/flutter/issues/127395
3333
Future<void> webOnlyInitializePlatform() async {
34+
assert(() {
35+
engine.printWarning(
36+
'The webOnlyInitializePlatform API is deprecated and will be removed in a '
37+
'future release. Please use `bootstrapEngine` from `dart:ui_web` instead.',
38+
);
39+
return true;
40+
}());
3441
await engine.initializeEngine();
3542
}
3643

lib/web_ui/lib/painting.dart

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -533,9 +533,22 @@ class TargetImageSize {
533533
final int? height;
534534
}
535535

536-
Future<Codec> webOnlyInstantiateImageCodecFromUrl(Uri uri,
537-
{engine.WebOnlyImageCodecChunkCallback? chunkCallback}) =>
538-
engine.renderer.instantiateImageCodecFromUrl(uri, chunkCallback: chunkCallback);
536+
// TODO(mdebbar): Deprecate this and remove it.
537+
// https://github.com/flutter/flutter/issues/127395
538+
Future<Codec> webOnlyInstantiateImageCodecFromUrl(
539+
Uri uri, {
540+
ui_web.ImageCodecChunkCallback? chunkCallback,
541+
}) {
542+
assert(() {
543+
engine.printWarning(
544+
'The webOnlyInstantiateImageCodecFromUrl API is deprecated and will be '
545+
'removed in a future release. Please use `createImageCodecFromUrl` from '
546+
'`dart:ui_web` instead.',
547+
);
548+
return true;
549+
}());
550+
return ui_web.createImageCodecFromUrl(uri, chunkCallback: chunkCallback);
551+
}
539552

540553
void decodeImageFromList(Uint8List list, ImageDecoderCallback callback) {
541554
_decodeImageFromListAsync(list, callback);

lib/web_ui/lib/src/engine/canvaskit/image.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'dart:typed_data';
88

99
import 'package:ui/src/engine.dart';
1010
import 'package:ui/ui.dart' as ui;
11+
import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
1112

1213
/// Instantiates a [ui.Codec] backed by an `SkAnimatedImage` from Skia.
1314
FutureOr<ui.Codec> skiaInstantiateImageCodec(Uint8List list,
@@ -159,7 +160,7 @@ const String _kNetworkImageMessage = 'Failed to load network image.';
159160
/// Instantiates a [ui.Codec] backed by an `SkAnimatedImage` from Skia after
160161
/// requesting from URI.
161162
Future<ui.Codec> skiaInstantiateWebImageCodec(
162-
String url, WebOnlyImageCodecChunkCallback? chunkCallback) async {
163+
String url, ui_web.ImageCodecChunkCallback? chunkCallback) async {
163164
final Uint8List list = await fetchImage(url, chunkCallback);
164165
if (browserSupportsImageDecoder) {
165166
return CkBrowserImageDecoder.create(data: list, debugSource: url);
@@ -169,7 +170,7 @@ Future<ui.Codec> skiaInstantiateWebImageCodec(
169170
}
170171

171172
/// Sends a request to fetch image data.
172-
Future<Uint8List> fetchImage(String url, WebOnlyImageCodecChunkCallback? chunkCallback) async {
173+
Future<Uint8List> fetchImage(String url, ui_web.ImageCodecChunkCallback? chunkCallback) async {
173174
try {
174175
final HttpFetchResponse response = await httpFetch(url);
175176
final int? contentLength = response.contentLength;
@@ -200,7 +201,7 @@ Future<Uint8List> fetchImage(String url, WebOnlyImageCodecChunkCallback? chunkCa
200201
/// Reads the [payload] in chunks using the browser's Streams API
201202
///
202203
/// See: https://developer.mozilla.org/en-US/docs/Web/API/Streams_API
203-
Future<Uint8List> readChunked(HttpFetchPayload payload, int contentLength, WebOnlyImageCodecChunkCallback chunkCallback) async {
204+
Future<Uint8List> readChunked(HttpFetchPayload payload, int contentLength, ui_web.ImageCodecChunkCallback chunkCallback) async {
204205
final JSUint8Array result = createUint8ArrayFromLength(contentLength);
205206
int position = 0;
206207
int cumulativeBytesLoaded = 0;

lib/web_ui/lib/src/engine/canvaskit/layer_scene_builder.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ class LayerSceneBuilder implements ui.SceneBuilder {
8181
ui.Offset offset = ui.Offset.zero,
8282
double width = 0.0,
8383
double height = 0.0,
84-
Object? webOnlyPaintedBy,
8584
}) {
8685
currentLayer.add(PlatformViewLayer(viewId, offset, width, height));
8786
}

lib/web_ui/lib/src/engine/canvaskit/renderer.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ class CanvasKitRenderer implements Renderer {
209209
@override
210210
Future<ui.Codec> instantiateImageCodecFromUrl(
211211
Uri uri, {
212-
WebOnlyImageCodecChunkCallback? chunkCallback
212+
ui_web.ImageCodecChunkCallback? chunkCallback
213213
}) => skiaInstantiateWebImageCodec(uri.toString(), chunkCallback);
214214

215215
@override

lib/web_ui/lib/src/engine/html/renderer.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'dart:typed_data';
88

99
import 'package:ui/src/engine.dart';
1010
import 'package:ui/ui.dart' as ui;
11+
import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
1112

1213
class HtmlRenderer implements Renderer {
1314
static HtmlRenderer get instance => _instance;
@@ -176,11 +177,9 @@ class HtmlRenderer implements Renderer {
176177
@override
177178
Future<ui.Codec> instantiateImageCodecFromUrl(
178179
Uri uri, {
179-
WebOnlyImageCodecChunkCallback? chunkCallback}) {
180-
return futurize<ui.Codec>((Callback<ui.Codec> callback) {
181-
callback(HtmlCodec(uri.toString(), chunkCallback: chunkCallback));
182-
return null;
183-
});
180+
ui_web.ImageCodecChunkCallback? chunkCallback,
181+
}) async {
182+
return HtmlCodec(uri.toString(), chunkCallback: chunkCallback);
184183
}
185184

186185
@override

lib/web_ui/lib/src/engine/html/scene_builder.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ class SurfaceSceneBuilder implements ui.SceneBuilder {
329329
/// overlay or not.
330330
///
331331
/// We use this to avoid spamming the console with redundant warning messages.
332-
static bool _webOnlyDidWarnAboutPerformanceOverlay = false;
332+
static bool _didWarnAboutPerformanceOverlay = false;
333333

334334
void _addPerformanceOverlay(
335335
int enabledOptions,
@@ -338,8 +338,8 @@ class SurfaceSceneBuilder implements ui.SceneBuilder {
338338
double top,
339339
double bottom,
340340
) {
341-
if (!_webOnlyDidWarnAboutPerformanceOverlay) {
342-
_webOnlyDidWarnAboutPerformanceOverlay = true;
341+
if (!_didWarnAboutPerformanceOverlay) {
342+
_didWarnAboutPerformanceOverlay = true;
343343
printWarning("The performance overlay isn't supported on the web");
344344
}
345345
}

lib/web_ui/lib/src/engine/html_image_codec.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'dart:async';
66
import 'dart:typed_data';
77

88
import 'package:ui/ui.dart' as ui;
9+
import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
910

1011
import 'browser_detection.dart';
1112
import 'dom.dart';
@@ -20,14 +21,15 @@ Object? get _jsImageDecodeFunction => getJsProperty<Object?>(
2021
);
2122
final bool _supportsDecode = _jsImageDecodeFunction != null;
2223

23-
typedef WebOnlyImageCodecChunkCallback = void Function(
24-
int cumulativeBytesLoaded, int expectedTotalBytes);
24+
// TODO(mdebbar): Deprecate this and remove it.
25+
// https://github.com/flutter/flutter/issues/127395
26+
typedef WebOnlyImageCodecChunkCallback = ui_web.ImageCodecChunkCallback;
2527

2628
class HtmlCodec implements ui.Codec {
2729
HtmlCodec(this.src, {this.chunkCallback});
2830

2931
final String src;
30-
final WebOnlyImageCodecChunkCallback? chunkCallback;
32+
final ui_web.ImageCodecChunkCallback? chunkCallback;
3133

3234
@override
3335
int get frameCount => 1;

lib/web_ui/lib/src/engine/renderer.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ import 'dart:typed_data';
88

99
import 'package:ui/src/engine/skwasm/skwasm_stub.dart' if (dart.library.ffi) 'package:ui/src/engine/skwasm/skwasm_impl.dart';
1010
import 'package:ui/ui.dart' as ui;
11+
import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
1112

1213
import 'browser_detection.dart';
1314
import 'canvaskit/renderer.dart';
1415
import 'configuration.dart';
1516
import 'embedder.dart';
1617
import 'fonts.dart';
1718
import 'html/renderer.dart';
18-
import 'html_image_codec.dart';
1919

2020
final Renderer _renderer = Renderer._internal();
2121
Renderer get renderer => _renderer;
@@ -131,7 +131,7 @@ abstract class Renderer {
131131

132132
Future<ui.Codec> instantiateImageCodecFromUrl(
133133
Uri uri, {
134-
WebOnlyImageCodecChunkCallback? chunkCallback,
134+
ui_web.ImageCodecChunkCallback? chunkCallback,
135135
});
136136

137137
void decodeImageFromPixels(

0 commit comments

Comments
 (0)