Reland manual roll of Dart SDK from 82c4571bb2de to a677378ae254 (#49034)
Includes type annotations for JSArray/JSPromise
(see https://dart-review.googlesource.com/c/sdk/+/337923)
diff --git a/DEPS b/DEPS
index ec3cd76..68ff627 100644
--- a/DEPS
+++ b/DEPS
@@ -66,7 +66,7 @@
# Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS
# You can use //tools/dart/create_updated_flutter_deps.py to produce
# updated revision list of existing dependencies.
- 'dart_revision': '82c4571bb2ded15cca71862158f2a7a78ee9127f',
+ 'dart_revision': 'a677378ae25424f8e74b2f750e879458e9a17488',
# WARNING: DO NOT EDIT MANUALLY
# The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py
diff --git a/ci/licenses_golden/licenses_dart b/ci/licenses_golden/licenses_dart
index 88d6634..12694e6 100644
--- a/ci/licenses_golden/licenses_dart
+++ b/ci/licenses_golden/licenses_dart
@@ -1,4 +1,4 @@
-Signature: fa0827b53a214003c14110498dcee743
+Signature: 9566e23501be49ccdb4d0e710a9b74e7
====================================================================================================
LIBRARY: dart
diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart
index fea055f..a0de371 100644
--- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart
+++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart
@@ -2942,7 +2942,7 @@
external set fontStyle(SkFontStyle? value);
@JS('shadows')
- external set _shadows(JSArray? value);
+ external set _shadows(JSArray<JSAny?>? value);
set shadows(List<SkTextShadow>? value) =>
// TODO(joshualitt): remove this cast when we reify JS types on JS
// backends.
@@ -2950,7 +2950,7 @@
_shadows = (value as List<JSAny>?)?.toJS;
@JS('fontFeatures')
- external set _fontFeatures(JSArray? value);
+ external set _fontFeatures(JSArray<JSAny?>? value);
set fontFeatures(List<SkFontFeature>? value) =>
// TODO(joshualitt): remove this cast when we reify JS types on JS
// backends.
@@ -2958,7 +2958,7 @@
_fontFeatures = (value as List<JSAny>?)?.toJS;
@JS('fontVariations')
- external set _fontVariations(JSArray? value);
+ external set _fontVariations(JSArray<JSAny?>? value);
set fontVariations(List<SkFontVariation>? value) =>
// TODO(joshualitt): remove this cast when we reify JS types on JS
// backends.
@@ -3200,7 +3200,7 @@
extension SkGlyphClusterInfoExtension on SkGlyphClusterInfo {
@JS('graphemeLayoutBounds')
- external JSArray get _bounds;
+ external JSArray<JSAny?> get _bounds;
@JS('dir')
external SkTextDirection get _direction;
@@ -3256,7 +3256,7 @@
double getIdeographicBaseline() => _getIdeographicBaseline().toDartDouble;
@JS('getLineMetrics')
- external JSArray _getLineMetrics();
+ external JSArray<JSAny?> _getLineMetrics();
List<SkLineMetrics> getLineMetrics() =>
_getLineMetrics().toDart.cast<SkLineMetrics>();
@@ -3289,7 +3289,7 @@
double getMaxWidth() => _getMaxWidth().toDartDouble;
@JS('getRectsForRange')
- external JSArray _getRectsForRange(
+ external JSArray<JSAny?> _getRectsForRange(
JSNumber start,
JSNumber end,
SkRectHeightStyle heightStyle,
@@ -3304,7 +3304,7 @@
widthStyle).toDart.cast<SkRectWithDirection>();
@JS('getRectsForPlaceholders')
- external JSArray _getRectsForPlaceholders();
+ external JSArray<JSAny?> _getRectsForPlaceholders();
List<SkRectWithDirection> getRectsForPlaceholders() =>
_getRectsForPlaceholders().toDart.cast<SkRectWithDirection>();
diff --git a/lib/web_ui/lib/src/engine/canvaskit/image_web_codecs.dart b/lib/web_ui/lib/src/engine/canvaskit/image_web_codecs.dart
index 74a06d6..054e764 100644
--- a/lib/web_ui/lib/src/engine/canvaskit/image_web_codecs.dart
+++ b/lib/web_ui/lib/src/engine/canvaskit/image_web_codecs.dart
@@ -142,7 +142,7 @@
// In dart2wasm, Uint8List is not the same as a JS Uint8Array. So we
// explicitly construct the JS object here.
final JSUint8Array destination = createUint8ArrayFromLength(size);
- final JSPromise copyPromise = videoFrame.copyTo(destination);
+ final JSPromise<JSAny?> copyPromise = videoFrame.copyTo(destination);
await promiseToFuture<void>(copyPromise);
// In dart2wasm, `toDart` incurs a copy here. On JS backends, this is a
diff --git a/lib/web_ui/lib/src/engine/dom.dart b/lib/web_ui/lib/src/engine/dom.dart
index cd2d3a4..21b2a8f 100644
--- a/lib/web_ui/lib/src/engine/dom.dart
+++ b/lib/web_ui/lib/src/engine/dom.dart
@@ -110,9 +110,9 @@
}
@JS('fetch')
- external JSPromise _fetch1(JSString url);
+ external JSPromise<JSAny?> _fetch1(JSString url);
@JS('fetch')
- external JSPromise _fetch2(JSString url, JSAny headers);
+ external JSPromise<JSAny?> _fetch2(JSString url, JSAny headers);
// ignore: non_constant_identifier_names
external DomURL get URL;
@@ -149,7 +149,7 @@
external JSVoid _postMessage1(JSAny message, JSString targetOrigin);
@JS('postMessage')
external JSVoid _postMessage2(
- JSAny message, JSString targetOrigin, JSArray messagePorts);
+ JSAny message, JSString targetOrigin, JSArray<JSAny?> messagePorts);
void postMessage(Object message, String targetOrigin,
[List<DomMessagePort>? messagePorts]) {
if (messagePorts == null) {
@@ -199,18 +199,18 @@
external DomSymbol get domSymbol;
@JS('createImageBitmap')
-external JSPromise _createImageBitmap1(
+external JSPromise<JSAny?> _createImageBitmap1(
JSAny source,
);
@JS('createImageBitmap')
-external JSPromise _createImageBitmap2(
+external JSPromise<JSAny?> _createImageBitmap2(
JSAny source,
JSNumber x,
JSNumber y,
JSNumber width,
JSNumber height,
);
-JSPromise createImageBitmap(JSAny source,
+JSPromise<JSAny?> createImageBitmap(JSAny source,
[({int x, int y, int width, int height})? bounds]) {
if (bounds != null) {
return _createImageBitmap2(source, bounds.x.toJS, bounds.y.toJS,
@@ -248,7 +248,7 @@
String get userAgent => _userAgent.toDart;
@JS('languages')
- external JSArray? get _languages;
+ external JSArray<JSAny?>? get _languages;
List<String>? get languages => _languages?.toDart
.map<String>((JSAny? any) => (any! as JSString).toDart)
.toList();
@@ -947,7 +947,7 @@
set height(double? value) => _height = value?.toJS;
@JS('decode')
- external JSPromise _decode();
+ external JSPromise<JSAny?> _decode();
Future<Object?> decode() => js_util.promiseToFuture<Object?>(_decode());
}
@@ -1886,16 +1886,16 @@
external _DomReadableStream get body;
@JS('arrayBuffer')
- external JSPromise _arrayBuffer();
+ external JSPromise<JSAny?> _arrayBuffer();
Future<Object?> arrayBuffer() =>
js_util.promiseToFuture<Object?>(_arrayBuffer());
@JS('json')
- external JSPromise _json();
+ external JSPromise<JSAny?> _json();
Future<Object?> json() => js_util.promiseToFuture<Object?>(_json());
@JS('text')
- external JSPromise _text();
+ external JSPromise<JSAny?> _text();
Future<String> text() => js_util.promiseToFuture<String>(_text());
}
@@ -1923,7 +1923,7 @@
extension _DomStreamReaderExtension on _DomStreamReader {
@JS('read')
- external JSPromise _read();
+ external JSPromise<JSAny?> _read();
Future<_DomStreamChunk> read() =>
js_util.promiseToFuture<_DomStreamChunk>(_read());
}
@@ -2045,7 +2045,7 @@
extension DomFontFaceExtension on DomFontFace {
@JS('load')
- external JSPromise _load();
+ external JSPromise<JSAny?> _load();
Future<DomFontFace> load() => js_util.promiseToFuture(_load());
@JS('family')
@@ -2166,11 +2166,11 @@
extension DomClipboardExtension on DomClipboard {
@JS('readText')
- external JSPromise _readText();
+ external JSPromise<JSAny?> _readText();
Future<String> readText() => js_util.promiseToFuture<String>(_readText());
@JS('writeText')
- external JSPromise _writeText(JSString data);
+ external JSPromise<JSAny?> _writeText(JSString data);
Future<dynamic> writeText(String data) =>
js_util.promiseToFuture(_writeText(data.toJS));
}
@@ -2340,26 +2340,26 @@
@JS('Blob')
@staticInterop
class DomBlob {
- external factory DomBlob(JSArray parts);
+ external factory DomBlob(JSArray<JSAny?> parts);
- external factory DomBlob.withOptions(JSArray parts, JSAny options);
+ external factory DomBlob.withOptions(JSArray<JSAny?> parts, JSAny options);
}
extension DomBlobExtension on DomBlob {
- external JSPromise arrayBuffer();
+ external JSPromise<JSAny?> arrayBuffer();
}
DomBlob createDomBlob(List<Object?> parts, [Map<String, dynamic>? options]) {
if (options == null) {
- return DomBlob(parts.toJSAnyShallow as JSArray);
+ return DomBlob(parts.toJSAnyShallow as JSArray<JSAny?>);
} else {
return DomBlob.withOptions(
- parts.toJSAnyShallow as JSArray, options.toJSAnyDeep);
+ parts.toJSAnyShallow as JSArray<JSAny?>, options.toJSAnyDeep);
}
}
typedef DomMutationCallback = void Function(
- JSArray mutation, DomMutationObserver observer);
+ JSArray<JSAny?> mutation, DomMutationObserver observer);
@JS('MutationObserver')
@staticInterop
@@ -2565,7 +2565,7 @@
double? get tiltY => _tiltY?.toDartDouble;
@JS('getCoalescedEvents')
- external JSArray _getCoalescedEvents();
+ external JSArray<JSAny?> _getCoalescedEvents();
List<DomPointerEvent> getCoalescedEvents() =>
_getCoalescedEvents().toDart.cast<DomPointerEvent>();
}
@@ -2886,11 +2886,11 @@
}
@JS('convertToBlob')
- external JSPromise _convertToBlob1();
+ external JSPromise<JSAny?> _convertToBlob1();
@JS('convertToBlob')
- external JSPromise _convertToBlob2(JSAny options);
+ external JSPromise<JSAny?> _convertToBlob2(JSAny options);
Future<DomBlob> convertToBlob([Map<Object?, Object?>? options]) {
- final JSPromise blob;
+ final JSPromise<JSAny?> blob;
if (options == null) {
blob = _convertToBlob1();
} else {
@@ -3013,7 +3013,7 @@
extension DomScreenOrientationExtension on DomScreenOrientation {
@JS('lock')
- external JSPromise _lock(JSString orientation);
+ external JSPromise<JSAny?> _lock(JSString orientation);
Future<dynamic> lock(String orientation) =>
js_util.promiseToFuture(_lock(orientation.toJS));
@@ -3163,7 +3163,7 @@
/// Internally converts the `List<dynamic>` of entries into the expected
/// `List<DomResizeObserverEntry>`
DomResizeObserver? createDomResizeObserver(DomResizeObserverCallbackFn fn) =>
- DomResizeObserver((JSArray entries, DomResizeObserver observer) {
+ DomResizeObserver((JSArray<JSAny?> entries, DomResizeObserver observer) {
fn(entries.toDart.cast<DomResizeObserverEntry>(), observer);
}.toJS);
@@ -3480,7 +3480,7 @@
// TODO(joshualitt): `locales` should really be typed as `JSAny?`, and we
// should pass `JSUndefined`. Revisit this after we reify `JSUndefined` on
// Dart2Wasm.
- external factory DomSegmenter(JSArray locales, JSAny options);
+ external factory DomSegmenter(JSArray<JSAny?> locales, JSAny options);
}
extension DomSegmenterExtension on DomSegmenter {
@@ -3580,7 +3580,7 @@
@JS('Intl.v8BreakIterator')
@staticInterop
class DomV8BreakIterator {
- external factory DomV8BreakIterator(JSArray locales, JSAny options);
+ external factory DomV8BreakIterator(JSArray<JSAny?> locales, JSAny options);
}
extension DomV8BreakIteratorExtension on DomV8BreakIterator {
@@ -3679,7 +3679,7 @@
@JS()
@staticInterop
-extension JSArrayExtension on JSArray {
+extension JSArrayExtension on JSArray<JSAny?> {
external void push(JSAny value);
external JSNumber get length;
}
diff --git a/lib/web_ui/lib/src/engine/js_interop/js_promise.dart b/lib/web_ui/lib/src/engine/js_interop/js_promise.dart
index b394a00..b535cf9 100644
--- a/lib/web_ui/lib/src/engine/js_interop/js_promise.dart
+++ b/lib/web_ui/lib/src/engine/js_interop/js_promise.dart
@@ -18,14 +18,14 @@
@JS('Promise')
external JSAny get _promiseConstructor;
-JSPromise createPromise(JSFunction executor) =>
+JSPromise<JSAny?> createPromise(JSFunction executor) =>
js_util.callConstructor(
_promiseConstructor,
<Object>[executor],
);
-JSPromise futureToPromise<T extends JSAny?>(Future<T> future) {
+JSPromise<JSAny?> futureToPromise<T extends JSAny?>(Future<T> future) {
return createPromise((JSFunction resolver, JSFunction rejecter) {
future.then(
(T value) => resolver.call(null, value),
diff --git a/lib/web_ui/lib/src/engine/platform_dispatcher.dart b/lib/web_ui/lib/src/engine/platform_dispatcher.dart
index fb739f7..8327b3d 100644
--- a/lib/web_ui/lib/src/engine/platform_dispatcher.dart
+++ b/lib/web_ui/lib/src/engine/platform_dispatcher.dart
@@ -986,8 +986,8 @@
void _addFontSizeObserver() {
const String styleAttribute = 'style';
- _fontSizeObserver =
- createDomMutationObserver((JSArray mutations, DomMutationObserver _) {
+ _fontSizeObserver = createDomMutationObserver(
+ (JSArray<JSAny?> mutations, DomMutationObserver _) {
for (final JSAny? mutation in mutations.toDart) {
final DomMutationRecord record = mutation! as DomMutationRecord;
if (record.type == 'attributes' &&
diff --git a/lib/web_ui/lib/src/engine/safe_browser_api.dart b/lib/web_ui/lib/src/engine/safe_browser_api.dart
index 73ba477..f2674d9 100644
--- a/lib/web_ui/lib/src/engine/safe_browser_api.dart
+++ b/lib/web_ui/lib/src/engine/safe_browser_api.dart
@@ -214,7 +214,7 @@
external JSBoolean get _complete;
bool get complete => _complete.toDart;
- external JSPromise decode(DecodeOptions options);
+ external JSPromise<JSAny?> decode(DecodeOptions options);
external JSVoid close();
}
@@ -288,8 +288,9 @@
double allocationSize() => _allocationSize().toDartDouble;
@JS('copyTo')
- external JSPromise _copyTo(JSAny destination);
- JSPromise copyTo(Object destination) => _copyTo(destination.toJSAnyShallow);
+ external JSPromise<JSAny?> _copyTo(JSAny destination);
+ JSPromise<JSAny?> copyTo(Object destination) =>
+ _copyTo(destination.toJSAnyShallow);
@JS('format')
external JSString? get _format;
@@ -330,7 +331,7 @@
class ImageTrackList {}
extension ImageTrackListExtension on ImageTrackList {
- external JSPromise get ready;
+ external JSPromise<JSAny?> get ready;
external ImageTrack? get selectedTrack;
}
diff --git a/lib/web_ui/lib/src/engine/view_embedder/hot_restart_cache_handler.dart b/lib/web_ui/lib/src/engine/view_embedder/hot_restart_cache_handler.dart
index fe714c5..eb8be79 100644
--- a/lib/web_ui/lib/src/engine/view_embedder/hot_restart_cache_handler.dart
+++ b/lib/web_ui/lib/src/engine/view_embedder/hot_restart_cache_handler.dart
@@ -13,10 +13,10 @@
/// to clear. Delay removal of old visible state to make the
/// transition appear smooth.
@JS('window.__flutterState')
-external JSArray? get _jsHotRestartStore;
+external JSArray<JSAny?>? get _jsHotRestartStore;
@JS('window.__flutterState')
-external set _jsHotRestartStore(JSArray? nodes);
+external set _jsHotRestartStore(JSArray<JSAny?>? nodes);
/// Handles [DomElement]s that need to be removed after a hot-restart.
///
@@ -36,7 +36,7 @@
/// Removes every element that was registered prior to the hot-restart from
/// the DOM.
void _resetHotRestartStore() {
- final JSArray? jsStore = _jsHotRestartStore;
+ final JSArray<JSAny?>? jsStore = _jsHotRestartStore;
if (jsStore != null) {
// We are in a post hot-restart world, clear the elements now.
@@ -47,7 +47,7 @@
}
}
}
- _jsHotRestartStore = JSArray();
+ _jsHotRestartStore = JSArray<JSAny?>();
}
/// Registers a [DomElement] to be removed after hot-restart.
diff --git a/lib/web_ui/test/engine/surface/scene_builder_test.dart b/lib/web_ui/test/engine/surface/scene_builder_test.dart
index 2a653c0..3c893dd 100644
--- a/lib/web_ui/test/engine/surface/scene_builder_test.dart
+++ b/lib/web_ui/test/engine/surface/scene_builder_test.dart
@@ -487,7 +487,7 @@
// Watches DOM mutations and counts deletions and additions to the child
// list of the `<flt-scene>` element.
- final DomMutationObserver observer = createDomMutationObserver((JSArray mutations, _) {
+ final DomMutationObserver observer = createDomMutationObserver((JSArray<JSAny?> mutations, _) {
for (final DomMutationRecord record in mutations.toDart.cast<DomMutationRecord>()) {
actualDeletions.addAll(record.removedNodes!);
actualAdditions.addAll(record.addedNodes!);
diff --git a/lib/web_ui/test/engine/view_embedder/hot_restart_cache_handler_test.dart b/lib/web_ui/test/engine/view_embedder/hot_restart_cache_handler_test.dart
index 934718c..6c1ccac 100644
--- a/lib/web_ui/test/engine/view_embedder/hot_restart_cache_handler_test.dart
+++ b/lib/web_ui/test/engine/view_embedder/hot_restart_cache_handler_test.dart
@@ -13,10 +13,10 @@
import 'package:ui/src/engine/view_embedder/hot_restart_cache_handler.dart';
@JS('window.__flutterState')
-external JSArray? get _jsHotRestartStore;
+external JSArray<JSAny?>? get _jsHotRestartStore;
@JS('window.__flutterState')
-external set _jsHotRestartStore(JSArray? nodes);
+external set _jsHotRestartStore(JSArray<JSAny?>? nodes);
void main() {
internalBootstrapBrowserTest(() => doTests);