From ca4147670e46dea589427d1c6426cfb4e47bc06b Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Tue, 20 Jun 2023 14:13:11 -0700 Subject: [PATCH] Refactor JSNumber.toDart and Object.toJS JSNumber.toDart will now be two functions: toDartDouble and toDartInt. Note that some code that looks like `toDart.toInt()` was kept as `toDartDouble.toInt()` instead of `toDartInt`, since `toDartInt` throws if the value is not an integer. Object.toJS is now Object.toJSBox. An actual box is introduced on all backends now, and is unwrapped in JSBoxedDartObject.toDart. There are many usages of toJSAnyShallow that we should modify, but that's for a later CL. --- .../src/engine/canvaskit/canvaskit_api.dart | 144 ++++++++--------- .../lib/src/engine/canvaskit/image.dart | 4 +- lib/web_ui/lib/src/engine/configuration.dart | 2 +- lib/web_ui/lib/src/engine/dom.dart | 147 +++++++++--------- lib/web_ui/lib/src/engine/initialization.dart | 3 +- lib/web_ui/lib/src/engine/profiler.dart | 5 +- .../lib/src/engine/safe_browser_api.dart | 16 +- .../src/engine/skwasm/skwasm_impl/memory.dart | 2 +- .../engine/skwasm/skwasm_impl/surface.dart | 4 +- lib/web_ui/test/engine/profiler_test.dart | 14 +- 10 files changed, 168 insertions(+), 173 deletions(-) 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 4aa608f4e23c9..be0e8bc19e8ff 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -130,19 +130,19 @@ extension CanvasKitExtension on CanvasKit { // Text decoration enum is embedded in the CanvasKit object itself. @JS('NoDecoration') external JSNumber get _NoDecoration; - double get NoDecoration => _NoDecoration.toDart; + double get NoDecoration => _NoDecoration.toDartDouble; @JS('UnderlineDecoration') external JSNumber get _UnderlineDecoration; - double get UnderlineDecoration => _UnderlineDecoration.toDart; + double get UnderlineDecoration => _UnderlineDecoration.toDartDouble; @JS('OverlineDecoration') external JSNumber get _OverlineDecoration; - double get OverlineDecoration => _OverlineDecoration.toDart; + double get OverlineDecoration => _OverlineDecoration.toDartDouble; @JS('LineThroughDecoration') external JSNumber get _LineThroughDecoration; - double get LineThroughDecoration => _LineThroughDecoration.toDart; + double get LineThroughDecoration => _LineThroughDecoration.toDartDouble; // End of text decoration enum. external SkTextDecorationStyleEnum get DecorationStyle; @@ -159,7 +159,7 @@ extension CanvasKitExtension on CanvasKit { DomCanvasElement canvas, SkWebGLContextOptions options); double GetWebGLContext( DomCanvasElement canvas, SkWebGLContextOptions options) => - _GetWebGLContext(canvas, options).toDart; + _GetWebGLContext(canvas, options).toDartDouble; @JS('MakeGrContext') external SkGrContext _MakeGrContext(JSNumber glContext); @@ -286,11 +286,11 @@ extension SkSurfaceExtension on SkSurface { @JS('width') external JSNumber _width(); - double width() => _width().toDart; + double width() => _width().toDartDouble; @JS('height') external JSNumber _height(); - double height() => _height().toDart; + double height() => _height().toDartDouble; external JSVoid dispose(); external SkImage makeImageSnapshot(); @@ -327,7 +327,7 @@ class SkFontSlant {} extension SkFontSlantExtension on SkFontSlant { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skFontSlants = [ @@ -363,7 +363,7 @@ class SkFontWeight {} extension SkFontWeightExtension on SkFontWeight { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skFontWeights = [ @@ -398,7 +398,7 @@ class SkAffinity {} extension SkAffinityExtension on SkAffinity { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skAffinitys = [ @@ -426,7 +426,7 @@ class SkTextDirection {} extension SkTextDirectionExtension on SkTextDirection { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } // Flutter enumerates text directions as RTL, LTR, while CanvasKit @@ -460,7 +460,7 @@ class SkTextAlign {} extension SkTextAlignExtension on SkTextAlign { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skTextAligns = [ @@ -494,7 +494,7 @@ class SkTextHeightBehavior {} extension SkTextHeightBehaviorExtension on SkTextHeightBehavior { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skTextHeightBehaviors = @@ -531,7 +531,7 @@ class SkRectHeightStyle {} extension SkRectHeightStyleExtension on SkRectHeightStyle { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skRectHeightStyles = [ @@ -563,7 +563,7 @@ class SkRectWidthStyle {} extension SkRectWidthStyleExtension on SkRectWidthStyle { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skRectWidthStyles = [ @@ -593,7 +593,7 @@ class SkVertexMode {} extension SkVertexModeExtension on SkVertexMode { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skVertexModes = [ @@ -623,7 +623,7 @@ class SkPointMode {} extension SkPointModeExtension on SkPointMode { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skPointModes = [ @@ -652,7 +652,7 @@ class SkClipOp {} extension SkClipOpExtension on SkClipOp { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skClipOps = [ @@ -680,7 +680,7 @@ class SkFillType {} extension SkFillTypeExtension on SkFillType { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skFillTypes = [ @@ -711,7 +711,7 @@ class SkPathOp {} extension SkPathOpExtension on SkPathOp { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skPathOps = [ @@ -744,7 +744,7 @@ class SkBlurStyle {} extension SkBlurStyleExtension on SkBlurStyle { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skBlurStyles = [ @@ -775,7 +775,7 @@ class SkStrokeCap {} extension SkStrokeCapExtension on SkStrokeCap { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skStrokeCaps = [ @@ -804,7 +804,7 @@ class SkPaintStyle {} extension SkPaintStyleExtension on SkPaintStyle { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skPaintStyles = [ @@ -859,7 +859,7 @@ class SkBlendMode {} extension SkBlendModeExtension on SkBlendMode { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skBlendModes = [ @@ -915,7 +915,7 @@ class SkStrokeJoin {} extension SkStrokeJoinExtension on SkStrokeJoin { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skStrokeJoins = [ @@ -946,7 +946,7 @@ class SkTileMode {} extension SkTileModeExtension on SkTileMode { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skTileModes = [ @@ -976,7 +976,7 @@ class SkFilterMode {} extension SkFilterModeExtension on SkFilterMode { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } SkFilterMode toSkFilterMode(ui.FilterQuality filterQuality) { @@ -1002,7 +1002,7 @@ class SkMipmapMode {} extension SkMipmapModeExtension on SkMipmapMode { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } SkMipmapMode toSkMipmapMode(ui.FilterQuality filterQuality) { @@ -1028,7 +1028,7 @@ class SkAlphaType {} extension SkAlphaTypeExtension on SkAlphaType { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } @JS() @@ -1056,7 +1056,7 @@ class SkColorType {} extension SkColorTypeExtension on SkColorType { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } @JS() @@ -1067,31 +1067,31 @@ class SkAnimatedImage {} extension SkAnimatedImageExtension on SkAnimatedImage { @JS('getFrameCount') external JSNumber _getFrameCount(); - double getFrameCount() => _getFrameCount().toDart; + double getFrameCount() => _getFrameCount().toDartDouble; @JS('getRepetitionCount') external JSNumber _getRepetitionCount(); - double getRepetitionCount() => _getRepetitionCount().toDart; + double getRepetitionCount() => _getRepetitionCount().toDartDouble; /// Returns duration in milliseconds. @JS('currentFrameDuration') external JSNumber _currentFrameDuration(); - double currentFrameDuration() => _currentFrameDuration().toDart; + double currentFrameDuration() => _currentFrameDuration().toDartDouble; /// Advances to the next frame and returns its duration in milliseconds. @JS('decodeNextFrame') external JSNumber _decodeNextFrame(); - double decodeNextFrame() => _decodeNextFrame().toDart; + double decodeNextFrame() => _decodeNextFrame().toDartDouble; external SkImage makeImageAtCurrentFrame(); @JS('width') external JSNumber _width(); - double width() => _width().toDart; + double width() => _width().toDartDouble; @JS('height') external JSNumber _height(); - double height() => _height().toDart; + double height() => _height().toDartDouble; /// Deletes the C++ object. /// @@ -1113,11 +1113,11 @@ extension SkImageExtension on SkImage { @JS('width') external JSNumber _width(); - double width() => _width().toDart; + double width() => _width().toDartDouble; @JS('height') external JSNumber _height(); - double height() => _height().toDart; + double height() => _height().toDartDouble; @JS('makeShaderCubic') external SkShader _makeShaderCubic( @@ -1624,7 +1624,7 @@ extension SkFloat32ListExtension on SkFloat32List { /// The number of objects this pointer refers to. @JS('length') external JSNumber get _length; - double get length => _length.toDart; + double get length => _length.toDartDouble; @JS('length') external set _length(JSNumber length); @@ -1655,7 +1655,7 @@ extension SkUint32ListExtension on SkUint32List { /// The number of objects this pointer refers to. @JS('length') external JSNumber get _length; - double get length => _length.toDart; + double get length => _length.toDartDouble; @JS('length') external set _length(JSNumber length); @@ -2084,7 +2084,7 @@ extension SkContourMeasureExtension on SkContourMeasure { @JS('length') external JSNumber _length(); - double length() => _length().toDart; + double length() => _length().toDartDouble; external JSVoid delete(); } @@ -2513,11 +2513,11 @@ extension SkCanvasExtension on SkCanvas { @JS('save') external JSNumber _save(); - double save() => _save().toDart; + double save() => _save().toDartDouble; @JS('getSaveCount') external JSNumber _getSaveCount(); - double getSaveCount() => _getSaveCount().toDart; + double getSaveCount() => _getSaveCount().toDartDouble; @JS('saveLayer') external JSVoid _saveLayer( @@ -2747,7 +2747,7 @@ class SkTextDecorationStyle {} extension SkTextDecorationStyleExtension on SkTextDecorationStyle { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skTextDecorationStyles = @@ -2779,7 +2779,7 @@ class SkTextBaseline {} extension SkTextBaselineExtension on SkTextBaseline { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skTextBaselines = [ @@ -2811,7 +2811,7 @@ class SkPlaceholderAlignment {} extension SkPlaceholderAlignmentExtension on SkPlaceholderAlignment { @JS('value') external JSNumber get _value; - double get value => _value.toDart; + double get value => _value.toDartDouble; } final List _skPlaceholderAlignments = @@ -3101,19 +3101,19 @@ class SkLineMetrics {} extension SkLineMetricsExtension on SkLineMetrics { @JS('startIndex') external JSNumber get _startIndex; - double get startIndex => _startIndex.toDart; + double get startIndex => _startIndex.toDartDouble; @JS('endIndex') external JSNumber get _endIndex; - double get endIndex => _endIndex.toDart; + double get endIndex => _endIndex.toDartDouble; @JS('endExcludingWhitespaces') external JSNumber get _endExcludingWhitespaces; - double get endExcludingWhitespaces => _endExcludingWhitespaces.toDart; + double get endExcludingWhitespaces => _endExcludingWhitespaces.toDartDouble; @JS('endIncludingNewline') external JSNumber get _endIncludingNewline; - double get endIncludingNewline => _endIncludingNewline.toDart; + double get endIncludingNewline => _endIncludingNewline.toDartDouble; @JS('isHardBreak') external JSBoolean get _isHardBreak; @@ -3121,31 +3121,31 @@ extension SkLineMetricsExtension on SkLineMetrics { @JS('ascent') external JSNumber get _ascent; - double get ascent => _ascent.toDart; + double get ascent => _ascent.toDartDouble; @JS('descent') external JSNumber get _descent; - double get descent => _descent.toDart; + double get descent => _descent.toDartDouble; @JS('height') external JSNumber get _height; - double get height => _height.toDart; + double get height => _height.toDartDouble; @JS('width') external JSNumber get _width; - double get width => _width.toDart; + double get width => _width.toDartDouble; @JS('left') external JSNumber get _left; - double get left => _left.toDart; + double get left => _left.toDartDouble; @JS('baseline') external JSNumber get _baseline; - double get baseline => _baseline.toDart; + double get baseline => _baseline.toDartDouble; @JS('lineNumber') external JSNumber get _lineNumber; - double get lineNumber => _lineNumber.toDart; + double get lineNumber => _lineNumber.toDartDouble; } @JS() @@ -3173,7 +3173,7 @@ class SkParagraph {} extension SkParagraphExtension on SkParagraph { @JS('getAlphabeticBaseline') external JSNumber _getAlphabeticBaseline(); - double getAlphabeticBaseline() => _getAlphabeticBaseline().toDart; + double getAlphabeticBaseline() => _getAlphabeticBaseline().toDartDouble; @JS('didExceedMaxLines') external JSBoolean _didExceedMaxLines(); @@ -3181,11 +3181,11 @@ extension SkParagraphExtension on SkParagraph { @JS('getHeight') external JSNumber _getHeight(); - double getHeight() => _getHeight().toDart; + double getHeight() => _getHeight().toDartDouble; @JS('getIdeographicBaseline') external JSNumber _getIdeographicBaseline(); - double getIdeographicBaseline() => _getIdeographicBaseline().toDart; + double getIdeographicBaseline() => _getIdeographicBaseline().toDartDouble; @JS('getLineMetrics') external JSArray _getLineMetrics(); @@ -3194,19 +3194,19 @@ extension SkParagraphExtension on SkParagraph { @JS('getLongestLine') external JSNumber _getLongestLine(); - double getLongestLine() => _getLongestLine().toDart; + double getLongestLine() => _getLongestLine().toDartDouble; @JS('getMaxIntrinsicWidth') external JSNumber _getMaxIntrinsicWidth(); - double getMaxIntrinsicWidth() => _getMaxIntrinsicWidth().toDart; + double getMaxIntrinsicWidth() => _getMaxIntrinsicWidth().toDartDouble; @JS('getMinIntrinsicWidth') external JSNumber _getMinIntrinsicWidth(); - double getMinIntrinsicWidth() => _getMinIntrinsicWidth().toDart; + double getMinIntrinsicWidth() => _getMinIntrinsicWidth().toDartDouble; @JS('getMaxWidth') external JSNumber _getMaxWidth(); - double getMaxWidth() => _getMaxWidth().toDart; + double getMaxWidth() => _getMaxWidth().toDartDouble; @JS('getRectsForRange') external JSArray _getRectsForRange( @@ -3259,7 +3259,7 @@ extension SkTextPositionExtnsion on SkTextPosition { @JS('pos') external JSNumber get _pos; - double get pos => _pos.toDart; + double get pos => _pos.toDartDouble; } @JS() @@ -3269,11 +3269,11 @@ class SkTextRange {} extension SkTextRangeExtension on SkTextRange { @JS('start') external JSNumber get _start; - double get start => _start.toDart; + double get start => _start.toDartDouble; @JS('end') external JSNumber get _end; - double get end => _end.toDart; + double get end => _end.toDartDouble; } @JS() @@ -3391,7 +3391,7 @@ class SkData {} extension SkDataExtension on SkData { @JS('size') external JSNumber _size(); - double size() => _size().toDart; + double size() => _size().toDartDouble; @JS('isEmpty') external JSBoolean _isEmpty(); @@ -3435,7 +3435,7 @@ extension SkImageInfoExtension on SkImageInfo { @JS('height') external JSNumber get _height; - double get height => _height.toDart; + double get height => _height.toDartDouble; @JS('isEmpty') external JSBoolean get _isEmpty; @@ -3451,7 +3451,7 @@ extension SkImageInfoExtension on SkImageInfo { @JS('width') external JSNumber get _width; - double get width => _width.toDart; + double get width => _width.toDartDouble; external SkImageInfo makeAlphaType(SkAlphaType alphaType); external SkImageInfo makeColorSpace(ColorSpace colorSpace); @@ -3494,11 +3494,11 @@ extension SkPartialImageInfoExtension on SkPartialImageInfo { @JS('height') external JSNumber get _height; - double get height => _height.toDart; + double get height => _height.toDartDouble; @JS('width') external JSNumber get _width; - double get width => _width.toDart; + double get width => _width.toDartDouble; } /// Helper interop methods for [patchCanvasKitModule]. diff --git a/lib/web_ui/lib/src/engine/canvaskit/image.dart b/lib/web_ui/lib/src/engine/canvaskit/image.dart index 77fe97e73a3fe..2fcfa6b6f3791 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/image.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/image.dart @@ -205,10 +205,10 @@ Future readChunked(HttpFetchPayload payload, int contentLength, WebOn int position = 0; int cumulativeBytesLoaded = 0; await payload.read((JSUint8Array1 chunk) { - cumulativeBytesLoaded += chunk.length.toDart.toInt(); + cumulativeBytesLoaded += chunk.length.toDartInt; chunkCallback(cumulativeBytesLoaded, contentLength); result.set(chunk, position.toJS); - position += chunk.length.toDart.toInt(); + position += chunk.length.toDartInt; }); return result.toDart; } diff --git a/lib/web_ui/lib/src/engine/configuration.dart b/lib/web_ui/lib/src/engine/configuration.dart index 62b05c7a4fc0f..781024bc1d611 100644 --- a/lib/web_ui/lib/src/engine/configuration.dart +++ b/lib/web_ui/lib/src/engine/configuration.dart @@ -312,7 +312,7 @@ extension JsFlutterConfigurationExtension on JsFlutterConfiguration { @JS('canvasKitMaximumSurfaces') external JSNumber? get _canvasKitMaximumSurfaces; - double? get canvasKitMaximumSurfaces => _canvasKitMaximumSurfaces?.toDart; + double? get canvasKitMaximumSurfaces => _canvasKitMaximumSurfaces?.toDartDouble; @JS('debugShowSemanticsNodes') external JSBoolean? get _debugShowSemanticsNodes; diff --git a/lib/web_ui/lib/src/engine/dom.dart b/lib/web_ui/lib/src/engine/dom.dart index 26ed2f9674025..b8b24a4239381 100644 --- a/lib/web_ui/lib/src/engine/dom.dart +++ b/lib/web_ui/lib/src/engine/dom.dart @@ -41,9 +41,6 @@ extension ObjectToJSAnyExtension on Object { if (isWasm) { return toJSAnyDeep; } else { - // TODO(joshualitt): remove this cast when we reify JS types on JS - // backends. - // ignore: unnecessary_cast return this as JSAny; } } @@ -72,18 +69,18 @@ extension DomWindowExtension on DomWindow { @JS('devicePixelRatio') external JSNumber get _devicePixelRatio; - double get devicePixelRatio => _devicePixelRatio.toDart; + double get devicePixelRatio => _devicePixelRatio.toDartDouble; external DomDocument get document; external DomHistory get history; @JS('innerHeight') external JSNumber? get _innerHeight; - double? get innerHeight => _innerHeight?.toDart; + double? get innerHeight => _innerHeight?.toDartDouble; @JS('innerWidth') external JSNumber? get _innerWidth; - double? get innerWidth => _innerWidth?.toDart; + double? get innerWidth => _innerWidth?.toDartDouble; external DomLocation get location; external DomNavigator get navigator; @@ -135,7 +132,7 @@ extension DomWindowExtension on DomWindow { @JS('requestAnimationFrame') external JSNumber _requestAnimationFrame(JSFunction callback); double requestAnimationFrame(DomRequestAnimationFrameCallback callback) => - _requestAnimationFrame(callback.toJS).toDart; + _requestAnimationFrame(callback.toJS).toDartDouble; @JS('postMessage') external JSVoid _postMessage1(JSAny message, JSString targetOrigin); @@ -199,7 +196,7 @@ extension DomNavigatorExtension on DomNavigator { @JS('maxTouchPoints') external JSNumber? get _maxTouchPoints; - double? get maxTouchPoints => _maxTouchPoints?.toDart; + double? get maxTouchPoints => _maxTouchPoints?.toDartDouble; @JS('vendor') external JSString get _vendor; @@ -381,7 +378,7 @@ extension DomEventExtension on DomEvent { @JS('timeStamp') external JSNumber? get _timeStamp; - double? get timeStamp => _timeStamp?.toDart; + double? get timeStamp => _timeStamp?.toDartDouble; @JS('type') external JSString get _type; @@ -428,11 +425,11 @@ class DomProgressEvent extends DomEvent { extension DomProgressEventExtension on DomProgressEvent { @JS('loaded') external JSNumber? get _loaded; - double? get loaded => _loaded?.toDart; + double? get loaded => _loaded?.toDartDouble; @JS('total') external JSNumber? get _total; - double? get total => _total?.toDart; + double? get total => _total?.toDartDouble; } @JS() @@ -524,11 +521,11 @@ extension DomElementExtension on DomElement { @JS('clientHeight') external JSNumber get _clientHeight; - double get clientHeight => _clientHeight.toDart; + double get clientHeight => _clientHeight.toDartDouble; @JS('clientWidth') external JSNumber get _clientWidth; - double get clientWidth => _clientWidth.toDart; + double get clientWidth => _clientWidth.toDartDouble; @JS('id') external JSString get _id; @@ -593,13 +590,13 @@ extension DomElementExtension on DomElement { @JS('tabIndex') external JSNumber? get _tabIndex; - double? get tabIndex => _tabIndex?.toDart; + double? get tabIndex => _tabIndex?.toDartDouble; external JSVoid focus(); @JS('scrollTop') external JSNumber get _scrollTop; - double get scrollTop => _scrollTop.toDart; + double get scrollTop => _scrollTop.toDartDouble; @JS('scrollTop') external set _scrollTop(JSNumber value); @@ -607,7 +604,7 @@ extension DomElementExtension on DomElement { @JS('scrollLeft') external JSNumber get _scrollLeft; - double get scrollLeft => _scrollLeft.toDart; + double get scrollLeft => _scrollLeft.toDartDouble; @JS('scrollLeft') external set _scrollLeft(JSNumber value); @@ -824,15 +821,15 @@ class DomHTMLElement extends DomElement {} extension DomHTMLElementExtension on DomHTMLElement { @JS('offsetWidth') external JSNumber get _offsetWidth; - double get offsetWidth => _offsetWidth.toDart; + double get offsetWidth => _offsetWidth.toDartDouble; @JS('offsetLeft') external JSNumber get _offsetLeft; - double get offsetLeft => _offsetLeft.toDart; + double get offsetLeft => _offsetLeft.toDartDouble; @JS('offsetTop') external JSNumber get _offsetTop; - double get offsetTop => _offsetTop.toDart; + double get offsetTop => _offsetTop.toDartDouble; external DomHTMLElement? get offsetParent; } @@ -897,11 +894,11 @@ extension DomHTMLImageElementExtension on DomHTMLImageElement { @JS('naturalWidth') external JSNumber get _naturalWidth; - double get naturalWidth => _naturalWidth.toDart; + double get naturalWidth => _naturalWidth.toDartDouble; @JS('naturalHeight') external JSNumber get _naturalHeight; - double get naturalHeight => _naturalHeight.toDart; + double get naturalHeight => _naturalHeight.toDartDouble; @JS('width') external set _width(JSNumber? value); @@ -991,7 +988,7 @@ extension DomPerformanceExtension on DomPerformance { @JS('now') external JSNumber _now(); - double now() => _now().toDart; + double now() => _now().toDartDouble; } @JS() @@ -1030,7 +1027,7 @@ DomCanvasElement createDomCanvasElement({int? width, int? height}) { extension DomCanvasElementExtension on DomCanvasElement { @JS('width') external JSNumber? get _width; - double? get width => _width?.toDart; + double? get width => _width?.toDartDouble; @JS('width') external set _width(JSNumber? value); @@ -1038,7 +1035,7 @@ extension DomCanvasElementExtension on DomCanvasElement { @JS('height') external JSNumber? get _height; - double? get height => _height?.toDart; + double? get height => _height?.toDartDouble; @JS('height') external set _height(JSNumber? value); @@ -1082,15 +1079,15 @@ class WebGLContext {} extension WebGLContextExtension on WebGLContext { @JS('getParameter') external JSNumber _getParameter(JSNumber value); - int getParameter(int value) => _getParameter(value.toJS).toDart.toInt(); + int getParameter(int value) => _getParameter(value.toJS).toDartDouble.toInt(); @JS('SAMPLES') external JSNumber get _samples; - int get samples => _samples.toDart.toInt(); + int get samples => _samples.toDartDouble.toInt(); @JS('STENCIL_BITS') external JSNumber get _stencilBits; - int get stencilBits => _stencilBits.toDart.toInt(); + int get stencilBits => _stencilBits.toDartDouble.toInt(); } @JS() @@ -1750,7 +1747,7 @@ class DomResponse {} extension DomResponseExtension on DomResponse { @JS('status') external JSNumber get _status; - int get status => _status.toDart.toInt(); + int get status => _status.toDartInt; external DomHeaders get headers; @@ -1828,7 +1825,7 @@ class DomTextMetrics {} extension DomTextMetricsExtension on DomTextMetrics { @JS('width') external JSNumber? get _width; - double? get width => _width?.toDart; + double? get width => _width?.toDartDouble; } @JS() @@ -1850,35 +1847,35 @@ class DomRectReadOnly {} extension DomRectReadOnlyExtension on DomRectReadOnly { @JS('x') external JSNumber get _x; - double get x => _x.toDart; + double get x => _x.toDartDouble; @JS('y') external JSNumber get _y; - double get y => _y.toDart; + double get y => _y.toDartDouble; @JS('width') external JSNumber get _width; - double get width => _width.toDart; + double get width => _width.toDartDouble; @JS('height') external JSNumber get _height; - double get height => _height.toDart; + double get height => _height.toDartDouble; @JS('top') external JSNumber get _top; - double get top => _top.toDart; + double get top => _top.toDartDouble; @JS('right') external JSNumber get _right; - double get right => _right.toDart; + double get right => _right.toDartDouble; @JS('bottom') external JSNumber get _bottom; - double get bottom => _bottom.toDart; + double get bottom => _bottom.toDartDouble; @JS('left') external JSNumber get _left; - double get left => _left.toDart; + double get left => _left.toDartDouble; } DomRect createDomRectFromPoints(DomPoint a, DomPoint b) { @@ -1956,11 +1953,11 @@ class DomVisualViewport extends DomEventTarget {} extension DomVisualViewportExtension on DomVisualViewport { @JS('height') external JSNumber? get _height; - double? get height => _height?.toDart; + double? get height => _height?.toDartDouble; @JS('width') external JSNumber? get _width; - double? get width => _width?.toDart; + double? get width => _width?.toDartDouble; } @JS() @@ -1987,11 +1984,11 @@ extension DomHTMLTextAreaElementExtension on DomHTMLTextAreaElement { @JS('selectionStart') external JSNumber? get _selectionStart; - double? get selectionStart => _selectionStart?.toDart; + double? get selectionStart => _selectionStart?.toDartDouble; @JS('selectionEnd') external JSNumber? get _selectionEnd; - double? get selectionEnd => _selectionEnd?.toDart; + double? get selectionEnd => _selectionEnd?.toDartDouble; @JS('selectionStart') external set _selectionStart(JSNumber? value); @@ -2072,11 +2069,11 @@ extension DomKeyboardEventExtension on DomKeyboardEvent { @JS('keyCode') external JSNumber get _keyCode; - double get keyCode => _keyCode.toDart; + double get keyCode => _keyCode.toDartDouble; @JS('location') external JSNumber get _location; - double get location => _location.toDart; + double get location => _location.toDartDouble; @JS('metaKey') external JSBoolean get _metaKey; @@ -2326,38 +2323,38 @@ class DomMouseEvent extends DomUIEvent { extension DomMouseEventExtension on DomMouseEvent { @JS('clientX') external JSNumber get _clientX; - double get clientX => _clientX.toDart; + double get clientX => _clientX.toDartDouble; @JS('clientY') external JSNumber get _clientY; - double get clientY => _clientY.toDart; + double get clientY => _clientY.toDartDouble; @JS('offsetX') external JSNumber get _offsetX; - double get offsetX => _offsetX.toDart; + double get offsetX => _offsetX.toDartDouble; @JS('offsetY') external JSNumber get _offsetY; - double get offsetY => _offsetY.toDart; + double get offsetY => _offsetY.toDartDouble; @JS('pageX') external JSNumber get _pageX; - double get pageX => _pageX.toDart; + double get pageX => _pageX.toDartDouble; @JS('pageY') external JSNumber get _pageY; - double get pageY => _pageY.toDart; + double get pageY => _pageY.toDartDouble; DomPoint get client => DomPoint(clientX, clientY); DomPoint get offset => DomPoint(offsetX, offsetY); @JS('button') external JSNumber get _button; - double get button => _button.toDart; + double get button => _button.toDartDouble; @JS('buttons') external JSNumber? get _buttons; - double? get buttons => _buttons?.toDart; + double? get buttons => _buttons?.toDartDouble; @JS('ctrlKey') external JSBoolean get _ctrlKey; @@ -2386,7 +2383,7 @@ class DomPointerEvent extends DomMouseEvent { extension DomPointerEventExtension on DomPointerEvent { @JS('pointerId') external JSNumber? get _pointerId; - double? get pointerId => _pointerId?.toDart; + double? get pointerId => _pointerId?.toDartDouble; @JS('pointerType') external JSString? get _pointerType; @@ -2394,15 +2391,15 @@ extension DomPointerEventExtension on DomPointerEvent { @JS('pressure') external JSNumber? get _pressure; - double? get pressure => _pressure?.toDart; + double? get pressure => _pressure?.toDartDouble; @JS('tiltX') external JSNumber? get _tiltX; - double? get tiltX => _tiltX?.toDart; + double? get tiltX => _tiltX?.toDartDouble; @JS('tiltY') external JSNumber? get _tiltY; - double? get tiltY => _tiltY?.toDart; + double? get tiltY => _tiltY?.toDartDouble; @JS('getCoalescedEvents') external JSArray _getCoalescedEvents(); @@ -2429,23 +2426,23 @@ class DomWheelEvent extends DomMouseEvent { extension DomWheelEventExtension on DomWheelEvent { @JS('deltaX') external JSNumber get _deltaX; - double get deltaX => _deltaX.toDart; + double get deltaX => _deltaX.toDartDouble; @JS('deltaY') external JSNumber get _deltaY; - double get deltaY => _deltaY.toDart; + double get deltaY => _deltaY.toDartDouble; @JS('wheelDeltaX') external JSNumber? get _wheelDeltaX; - double? get wheelDeltaX => _wheelDeltaX?.toDart; + double? get wheelDeltaX => _wheelDeltaX?.toDartDouble; @JS('wheelDeltaY') external JSNumber? get _wheelDeltaY; - double? get wheelDeltaY => _wheelDeltaY?.toDart; + double? get wheelDeltaY => _wheelDeltaY?.toDartDouble; @JS('deltaMode') external JSNumber get _deltaMode; - double get deltaMode => _deltaMode.toDart; + double get deltaMode => _deltaMode.toDartDouble; } DomWheelEvent createDomWheelEvent(String type, [Map? init]) { @@ -2496,15 +2493,15 @@ class DomTouch { extension DomTouchExtension on DomTouch { @JS('identifier') external JSNumber? get _identifier; - double? get identifier => _identifier?.toDart; + double? get identifier => _identifier?.toDartDouble; @JS('clientX') external JSNumber get _clientX; - double get clientX => _clientX.toDart; + double get clientX => _clientX.toDartDouble; @JS('clientY') external JSNumber get _clientY; - double get clientY => _clientY.toDart; + double get clientY => _clientY.toDartDouble; DomPoint get client => DomPoint(clientX, clientY); } @@ -2594,11 +2591,11 @@ extension DomHTMLInputElementExtension on DomHTMLInputElement { @JS('selectionStart') external JSNumber? get _selectionStart; - double? get selectionStart => _selectionStart?.toDart; + double? get selectionStart => _selectionStart?.toDartDouble; @JS('selectionEnd') external JSNumber? get _selectionEnd; - double? get selectionEnd => _selectionEnd?.toDart; + double? get selectionEnd => _selectionEnd?.toDartDouble; @JS('selectionStart') external set _selectionStart(JSNumber? value); @@ -2696,11 +2693,11 @@ class DomOffscreenCanvas extends DomEventTarget { extension DomOffscreenCanvasExtension on DomOffscreenCanvas { @JS('height') external JSNumber? get _height; - double? get height => _height?.toDart; + double? get height => _height?.toDartDouble; @JS('width') external JSNumber? get _width; - double? get width => _width?.toDart; + double? get width => _width?.toDartDouble; @JS('height') external set _height(JSNumber? value); @@ -2809,9 +2806,9 @@ extension DomCSSStyleSheetExtension on DomCSSStyleSheet { external JSNumber _insertRule2(JSString rule, JSNumber index); double insertRule(String rule, [int? index]) { if (index == null) { - return _insertRule1(rule.toJS).toDart; + return _insertRule1(rule.toJS).toDartDouble; } else { - return _insertRule2(rule.toJS, index.toJS).toDart; + return _insertRule2(rule.toJS, index.toJS).toDartDouble; } } } @@ -3163,7 +3160,7 @@ class _DomList {} extension DomListExtension on _DomList { @JS('length') external JSNumber get _length; - double get length => _length.toDart; + double get length => _length.toDartDouble; @JS('item') external DomNode _item(JSNumber index); @@ -3215,7 +3212,7 @@ class _DomTouchList {} extension DomTouchListExtension on _DomTouchList { @JS('length') external JSNumber get _length; - double get length => _length.toDart; + double get length => _length.toDartDouble; @JS('item') external DomNode _item(JSNumber index); @@ -3358,7 +3355,7 @@ class DomSegment {} extension DomSegmentExtension on DomSegment { @JS('index') external JSNumber get _index; - int get index => _index.toDart.toInt(); + int get index => _index.toDartDouble.toInt(); @JS('isWordLike') external JSBoolean get _isWordLike; @@ -3396,15 +3393,15 @@ extension DomV8BreakIteratorExtension on DomV8BreakIterator { @JS('first') external JSNumber _first(); - double first() => _first().toDart; + double first() => _first().toDartDouble; @JS('next') external JSNumber _next(); - double next() => _next().toDart; + double next() => _next().toDartDouble; @JS('current') external JSNumber _current(); - double current() => _current().toDart; + double current() => _current().toDartDouble; @JS('breakType') external JSString _breakType(); diff --git a/lib/web_ui/lib/src/engine/initialization.dart b/lib/web_ui/lib/src/engine/initialization.dart index 7d265c424c17b..2dc4d6d654b10 100644 --- a/lib/web_ui/lib/src/engine/initialization.dart +++ b/lib/web_ui/lib/src/engine/initialization.dart @@ -169,7 +169,8 @@ Future initializeEngineServices({ // milliseconds as a double value, with sub-millisecond information // hidden in the fraction. So we first multiply it by 1000 to uncover // microsecond precision, and only then convert to `int`. - final int highResTimeMicroseconds = (1000 * highResTime.toDart).toInt(); + final int highResTimeMicroseconds = + (1000 * highResTime.toDartDouble).toInt(); // In Flutter terminology "building a frame" consists of "beginning // frame" and "drawing frame". diff --git a/lib/web_ui/lib/src/engine/profiler.dart b/lib/web_ui/lib/src/engine/profiler.dart index ec2d97abc96a4..5c1167b8f73d6 100644 --- a/lib/web_ui/lib/src/engine/profiler.dart +++ b/lib/web_ui/lib/src/engine/profiler.dart @@ -12,8 +12,7 @@ import 'platform_dispatcher.dart'; import 'safe_browser_api.dart'; @JS('window._flutter_internal_on_benchmark') -external JSAny? get _onBenchmark; -Object? get onBenchmark => _onBenchmark?.toObjectShallow; +external JSBoxedDartObject? get onBenchmark; /// A function that computes a value of type [R]. /// @@ -106,7 +105,7 @@ class Profiler { void benchmark(String name, double value) { _checkBenchmarkMode(); - final OnBenchmark? callback = onBenchmark as OnBenchmark?; + final OnBenchmark? callback = onBenchmark?.toDart as OnBenchmark?; if (callback != null) { callback(name, value); } 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 bc7b6bd3a4e7b..59fc2bf5a00e2 100644 --- a/lib/web_ui/lib/src/engine/safe_browser_api.dart +++ b/lib/web_ui/lib/src/engine/safe_browser_api.dart @@ -302,7 +302,7 @@ class VideoFrame implements DomCanvasImageSource {} extension VideoFrameExtension on VideoFrame { @JS('allocationSize') external JSNumber _allocationSize(); - double allocationSize() => _allocationSize().toDart; + double allocationSize() => _allocationSize().toDartDouble; @JS('copyTo') external JsPromise _copyTo(JSAny destination); @@ -314,23 +314,23 @@ extension VideoFrameExtension on VideoFrame { @JS('codedWidth') external JSNumber get _codedWidth; - double get codedWidth => _codedWidth.toDart; + double get codedWidth => _codedWidth.toDartDouble; @JS('codedHeight') external JSNumber get _codedHeight; - double get codedHeight => _codedHeight.toDart; + double get codedHeight => _codedHeight.toDartDouble; @JS('displayWidth') external JSNumber get _displayWidth; - double get displayWidth => _displayWidth.toDart; + double get displayWidth => _displayWidth.toDartDouble; @JS('displayHeight') external JSNumber get _displayHeight; - double get displayHeight => _displayHeight.toDart; + double get displayHeight => _displayHeight.toDartDouble; @JS('duration') external JSNumber? get _duration; - double? get duration => _duration?.toDart; + double? get duration => _duration?.toDartDouble; external VideoFrame clone(); external JSVoid close(); @@ -364,11 +364,11 @@ class ImageTrack {} extension ImageTrackExtension on ImageTrack { @JS('repetitionCount') external JSNumber get _repetitionCount; - double get repetitionCount => _repetitionCount.toDart; + double get repetitionCount => _repetitionCount.toDartDouble; @JS('frameCount') external JSNumber get _frameCount; - double get frameCount => _frameCount.toDart; + double get frameCount => _frameCount.toDartDouble; } void scaleCanvas2D(Object context2d, num x, num y) { diff --git a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/memory.dart b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/memory.dart index 2497f83490ff0..030122c83f5e3 100644 --- a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/memory.dart +++ b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/memory.dart @@ -29,7 +29,7 @@ typedef DisposeFunction = void Function(Pointer); class SkwasmFinalizationRegistry { SkwasmFinalizationRegistry(this.dispose) : registry = createDomFinalizationRegistry(((JSNumber address) => - dispose(Pointer.fromAddress(address.toDart.toInt())) + dispose(Pointer.fromAddress(address.toDartDouble.toInt())) ).toJS); final DomFinalizationRegistry registry; diff --git a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/surface.dart b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/surface.dart index 049e770203b9f..215f28027daae 100644 --- a/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/surface.dart +++ b/lib/web_ui/lib/src/engine/skwasm/skwasm_impl/surface.dart @@ -75,9 +75,9 @@ class SkwasmSurface { } void _callbackHandler(JSNumber jsCallbackId, JSNumber jsPointer) { - final int callbackId = jsCallbackId.toDart.toInt(); + final int callbackId = jsCallbackId.toDartDouble.toInt(); final Completer completer = _pendingCallbacks.remove(callbackId)!; - completer.complete(jsPointer.toDart.toInt()); + completer.complete(jsPointer.toDartDouble.toInt()); } void dispose() { diff --git a/lib/web_ui/test/engine/profiler_test.dart b/lib/web_ui/test/engine/profiler_test.dart index 551af1225e3ec..ef085c4905cc6 100644 --- a/lib/web_ui/test/engine/profiler_test.dart +++ b/lib/web_ui/test/engine/profiler_test.dart @@ -4,7 +4,6 @@ import 'dart:js_interop'; -import 'package:js/js_util.dart' as js_util; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; import 'package:ui/src/engine.dart'; @@ -12,8 +11,7 @@ import 'package:ui/src/engine.dart'; import '../common/spy.dart'; @JS('window._flutter_internal_on_benchmark') -external set _onBenchmark (JSAny? object); -set onBenchmark (Object? object) => _onBenchmark = object?.toJSAnyShallow; +external set onBenchmark(JSBoxedDartObject? object); void main() { internalBootstrapBrowserTest(() => testMain); @@ -46,9 +44,9 @@ void _profilerTests() { test('can listen to benchmarks', () { final List data = []; - onBenchmark = js_util.allowInterop((String name, num value) { + onBenchmark = (String name, num value) { data.add(BenchmarkDatapoint(name, value)); - }); + }.toJSBox; Profiler.instance.benchmark('foo', 123); expect(data, [BenchmarkDatapoint('foo', 123)]); @@ -69,9 +67,9 @@ void _profilerTests() { final List data = []; // Wrong callback signature. - onBenchmark = js_util.allowInterop((num value) { + onBenchmark = (num value) { data.add(BenchmarkDatapoint('bad', value)); - }); + }.toJSBox; expect( () => Profiler.instance.benchmark('foo', 123), @@ -82,7 +80,7 @@ void _profilerTests() { expect(data, isEmpty); // Not even a callback. - onBenchmark = 'string'; + onBenchmark = 'string'.toJSBox; expect( () => Profiler.instance.benchmark('foo', 123), throwsA(isA()),