Revert "[web] Switch to doubles (#37336)" (flutter/engine#37609)

This reverts commit e3bed0a86d.
This commit is contained in:
joshualitt
2022-11-14 16:44:30 -08:00
committed by GitHub
parent ce487c43ac
commit bd77bcebbb
30 changed files with 323 additions and 282 deletions

View File

@@ -84,7 +84,7 @@ class AssetManager {
printWarning('Asset manifest does not exist at `$url` ignoring.');
return Uint8List.fromList(utf8.encode('{}')).buffer.asByteData();
}
throw AssetManagerException(url, request.status!.toInt());
throw AssetManagerException(url, request.status!);
}
final String? constructorName = target == null ? 'null' :

View File

@@ -142,7 +142,7 @@ OperatingSystem detectOperatingSystem({
// iDevices requesting a "desktop site" spoof their UA so it looks like a Mac.
// This checks if we're in a touch device, or on a real mac.
final int maxTouchPoints =
overrideMaxTouchPoints ?? domWindow.navigator.maxTouchPoints?.toInt() ?? 0;
overrideMaxTouchPoints ?? domWindow.navigator.maxTouchPoints ?? 0;
if (maxTouchPoints > 2) {
return OperatingSystem.iOs;
}

View File

@@ -35,7 +35,7 @@ class CkCanvas {
final SkCanvas skCanvas;
int? get saveCount => skCanvas.getSaveCount().toInt();
int? get saveCount => skCanvas.getSaveCount();
void clear(ui.Color color) {
skCanvas.clear(toSharedSkColor1(color));
@@ -272,7 +272,7 @@ class CkCanvas {
}
int save() {
return skCanvas.save().toInt();
return skCanvas.save();
}
void saveLayer(ui.Rect bounds, CkPaint? paint) {

View File

@@ -96,10 +96,10 @@ extension CanvasKitExtension on CanvasKit {
);
// Text decoration enum is embedded in the CanvasKit object itself.
external double get NoDecoration;
external double get UnderlineDecoration;
external double get OverlineDecoration;
external double get LineThroughDecoration;
external int get NoDecoration;
external int get UnderlineDecoration;
external int get OverlineDecoration;
external int get LineThroughDecoration;
// End of text decoration enum.
external SkTextDecorationStyleEnum get DecorationStyle;
@@ -109,7 +109,7 @@ extension CanvasKitExtension on CanvasKit {
external SkFontMgrNamespace get FontMgr;
external TypefaceFontProviderNamespace get TypefaceFontProvider;
external SkTypefaceFactory get Typeface;
external double GetWebGLContext(
external int GetWebGLContext(
DomCanvasElement canvas, SkWebGLContextOptions options);
external SkGrContext MakeGrContext(int glContext);
external SkSurface? MakeOnScreenGLSurface(
@@ -195,8 +195,8 @@ class SkSurface {}
extension SkSurfaceExtension on SkSurface {
external SkCanvas getCanvas();
external void flush();
external double width();
external double height();
external int width();
external int height();
external void dispose();
external SkImage makeImageSnapshot();
}
@@ -226,7 +226,7 @@ extension SkFontSlantEnumExtension on SkFontSlantEnum {
class SkFontSlant {}
extension SkFontSlantExtension on SkFontSlant {
external double get value;
external int get value;
}
final List<SkFontSlant> _skFontSlants = <SkFontSlant>[
@@ -260,7 +260,7 @@ extension SkFontWeightEnumExtension on SkFontWeightEnum {
class SkFontWeight {}
extension SkFontWeightExtension on SkFontWeight {
external double get value;
external int get value;
}
final List<SkFontWeight> _skFontWeights = <SkFontWeight>[
@@ -293,7 +293,7 @@ extension SkAffinityEnumExtension on SkAffinityEnum {
class SkAffinity {}
extension SkAffinityExtension on SkAffinity {
external double get value;
external int get value;
}
final List<SkAffinity> _skAffinitys = <SkAffinity>[
@@ -319,7 +319,7 @@ extension SkTextDirectionEnumExtension on SkTextDirectionEnum {
class SkTextDirection {}
extension SkTextDirectionExtension on SkTextDirection {
external double get value;
external int get value;
}
// Flutter enumerates text directions as RTL, LTR, while CanvasKit
@@ -351,7 +351,7 @@ extension SkTextAlignEnumExtension on SkTextAlignEnum {
class SkTextAlign {}
extension SkTextAlignExtension on SkTextAlign {
external double get value;
external int get value;
}
final List<SkTextAlign> _skTextAligns = <SkTextAlign>[
@@ -383,7 +383,7 @@ extension SkTextHeightBehaviorEnumExtension on SkTextHeightBehaviorEnum {
class SkTextHeightBehavior {}
extension SkTextHeightBehaviorExtension on SkTextHeightBehavior {
external double get value;
external int get value;
}
final List<SkTextHeightBehavior> _skTextHeightBehaviors =
@@ -418,7 +418,7 @@ extension SkRectHeightStyleEnumExtension on SkRectHeightStyleEnum {
class SkRectHeightStyle {}
extension SkRectHeightStyleExtension on SkRectHeightStyle {
external double get value;
external int get value;
}
final List<SkRectHeightStyle> _skRectHeightStyles = <SkRectHeightStyle>[
@@ -448,7 +448,7 @@ extension SkRectWidthStyleEnumExtension on SkRectWidthStyleEnum {
class SkRectWidthStyle {}
extension SkRectWidthStyleExtension on SkRectWidthStyle {
external double get value;
external int get value;
}
final List<SkRectWidthStyle> _skRectWidthStyles = <SkRectWidthStyle>[
@@ -476,7 +476,7 @@ extension SkVertexModeEnumExtension on SkVertexModeEnum {
class SkVertexMode {}
extension SkVertexModeExtension on SkVertexMode {
external double get value;
external int get value;
}
final List<SkVertexMode> _skVertexModes = <SkVertexMode>[
@@ -504,7 +504,7 @@ extension SkPointModeEnumExtension on SkPointModeEnum {
class SkPointMode {}
extension SkPointModeExtension on SkPointMode {
external double get value;
external int get value;
}
final List<SkPointMode> _skPointModes = <SkPointMode>[
@@ -531,7 +531,7 @@ extension SkClipOpEnumExtension on SkClipOpEnum {
class SkClipOp {}
extension SkClipOpExtension on SkClipOp {
external double get value;
external int get value;
}
final List<SkClipOp> _skClipOps = <SkClipOp>[
@@ -557,7 +557,7 @@ extension SkFillTypeEnumExtension on SkFillTypeEnum {
class SkFillType {}
extension SkFillTypeExtension on SkFillType {
external double get value;
external int get value;
}
final List<SkFillType> _skFillTypes = <SkFillType>[
@@ -586,7 +586,7 @@ extension SkPathOpEnumExtension on SkPathOpEnum {
class SkPathOp {}
extension SkPathOpExtension on SkPathOp {
external double get value;
external int get value;
}
final List<SkPathOp> _skPathOps = <SkPathOp>[
@@ -617,7 +617,7 @@ extension SkBlurStyleEnumExtension on SkBlurStyleEnum {
class SkBlurStyle {}
extension SkBlurStyleExtension on SkBlurStyle {
external double get value;
external int get value;
}
final List<SkBlurStyle> _skBlurStyles = <SkBlurStyle>[
@@ -646,7 +646,7 @@ extension SkStrokeCapEnumExtension on SkStrokeCapEnum {
class SkStrokeCap {}
extension SkStrokeCapExtension on SkStrokeCap {
external double get value;
external int get value;
}
final List<SkStrokeCap> _skStrokeCaps = <SkStrokeCap>[
@@ -673,7 +673,7 @@ extension SkPaintStyleEnumExtension on SkPaintStyleEnum {
class SkPaintStyle {}
extension SkPaintStyleExtension on SkPaintStyle {
external double get value;
external int get value;
}
final List<SkPaintStyle> _skPaintStyles = <SkPaintStyle>[
@@ -726,7 +726,7 @@ extension SkBlendModeEnumExtension on SkBlendModeEnum {
class SkBlendMode {}
extension SkBlendModeExtension on SkBlendMode {
external double get value;
external int get value;
}
final List<SkBlendMode> _skBlendModes = <SkBlendMode>[
@@ -780,7 +780,7 @@ extension SkStrokeJoinEnumExtension on SkStrokeJoinEnum {
class SkStrokeJoin {}
extension SkStrokeJoinExtension on SkStrokeJoin {
external double get value;
external int get value;
}
final List<SkStrokeJoin> _skStrokeJoins = <SkStrokeJoin>[
@@ -809,7 +809,7 @@ extension SkTileModeEnumExtension on SkTileModeEnum {
class SkTileMode {}
extension SkTileModeExtension on SkTileMode {
external double get value;
external int get value;
}
final List<SkTileMode> _skTileModes = <SkTileMode>[
@@ -837,7 +837,7 @@ extension SkFilterModeEnumExtension on SkFilterModeEnum {
class SkFilterMode {}
extension SkFilterModeExtension on SkFilterMode {
external double get value;
external int get value;
}
SkFilterMode toSkFilterMode(ui.FilterQuality filterQuality) {
@@ -861,7 +861,7 @@ extension SkMipmapModeEnumExtension on SkMipmapModeEnum {
class SkMipmapMode {}
extension SkMipmapModeExtension on SkMipmapMode {
external double get value;
external int get value;
}
SkMipmapMode toSkMipmapMode(ui.FilterQuality filterQuality) {
@@ -885,7 +885,7 @@ extension SkAlphaTypeEnumExtension on SkAlphaTypeEnum {
class SkAlphaType {}
extension SkAlphaTypeExtension on SkAlphaType {
external double get value;
external int get value;
}
@JS()
@@ -911,7 +911,7 @@ extension SkColorTypeEnumExtension on SkColorTypeEnum {
class SkColorType {}
extension SkColorTypeExtension on SkColorType {
external double get value;
external int get value;
}
@JS()
@@ -920,19 +920,19 @@ extension SkColorTypeExtension on SkColorType {
class SkAnimatedImage {}
extension SkAnimatedImageExtension on SkAnimatedImage {
external double getFrameCount();
external int getFrameCount();
external double getRepetitionCount();
external int getRepetitionCount();
/// Returns duration in milliseconds.
external double currentFrameDuration();
external int currentFrameDuration();
/// Advances to the next frame and returns its duration in milliseconds.
external double decodeNextFrame();
external int decodeNextFrame();
external SkImage makeImageAtCurrentFrame();
external double width();
external double height();
external int width();
external int height();
/// Deletes the C++ object.
///
@@ -948,8 +948,8 @@ class SkImage {}
extension SkImageExtension on SkImage {
external void delete();
external double width();
external double height();
external int width();
external int height();
external SkShader makeShaderCubic(
SkTileMode tileModeX,
SkTileMode tileModeY,
@@ -1786,8 +1786,8 @@ extension SkCanvasExtension on SkCanvas {
SkBlendMode blendMode,
SkPaint paint,
);
external double save();
external double getSaveCount();
external int save();
external int getSaveCount();
external void saveLayer(
SkPaint? paint,
Float32List? bounds,
@@ -1902,7 +1902,7 @@ extension SkTextDecorationStyleEnumExtension on SkTextDecorationStyleEnum {
class SkTextDecorationStyle {}
extension SkTextDecorationStyleExtension on SkTextDecorationStyle {
external double get value;
external int get value;
}
final List<SkTextDecorationStyle> _skTextDecorationStyles =
@@ -1932,7 +1932,7 @@ extension SkTextBaselineEnumExtension on SkTextBaselineEnum {
class SkTextBaseline {}
extension SkTextBaselineExtension on SkTextBaseline {
external double get value;
external int get value;
}
final List<SkTextBaseline> _skTextBaselines = <SkTextBaseline>[
@@ -1962,7 +1962,7 @@ extension SkPlaceholderAlignmentEnumExtension on SkPlaceholderAlignmentEnum {
class SkPlaceholderAlignment {}
extension SkPlaceholderAlignmentExtension on SkPlaceholderAlignment {
external double get value;
external int get value;
}
final List<SkPlaceholderAlignment> _skPlaceholderAlignments =
@@ -2120,10 +2120,10 @@ extension TypefaceFontProviderExtension on TypefaceFontProvider {
class SkLineMetrics {}
extension SkLineMetricsExtension on SkLineMetrics {
external double get startIndex;
external double get endIndex;
external double get endExcludingWhitespaces;
external double get endIncludingNewline;
external int get startIndex;
external int get endIndex;
external int get endExcludingWhitespaces;
external int get endIncludingNewline;
external bool get isHardBreak;
external double get ascent;
external double get descent;
@@ -2131,7 +2131,7 @@ extension SkLineMetricsExtension on SkLineMetrics {
external double get width;
external double get left;
external double get baseline;
external double get lineNumber;
external int get lineNumber;
}
@JS()
@@ -2171,7 +2171,7 @@ class SkTextPosition {}
extension SkTextPositionExtnsion on SkTextPosition {
external SkAffinity get affinity;
external double get pos;
external int get pos;
}
@JS()
@@ -2179,8 +2179,8 @@ extension SkTextPositionExtnsion on SkTextPosition {
class SkTextRange {}
extension SkTextRangeExtension on SkTextRange {
external double get start;
external double get end;
external int get start;
external int get end;
}
@JS()
@@ -2475,7 +2475,7 @@ void debugResetBrowserSupportsFinalizationRegistry() {
class SkData {}
extension SkDataExtension on SkData {
external double size();
external int size();
external bool isEmpty();
external Uint8List bytes();
external void delete();
@@ -2498,11 +2498,11 @@ extension SkImageInfoExtension on SkImageInfo {
external SkAlphaType get alphaType;
external ColorSpace get colorSpace;
external SkColorType get colorType;
external double get height;
external int get height;
external bool get isEmpty;
external bool get isOpaque;
external Float32List get bounds;
external double get width;
external int get width;
external SkImageInfo makeAlphaType(SkAlphaType alphaType);
external SkImageInfo makeColorSpace(ColorSpace colorSpace);
external SkImageInfo makeColorType(SkColorType colorType);
@@ -2526,8 +2526,8 @@ extension SkPartialImageInfoExtension on SkPartialImageInfo {
external SkAlphaType get alphaType;
external ColorSpace get colorSpace;
external SkColorType get colorType;
external double get height;
external double get width;
external int get height;
external int get width;
}
/// Helper interop methods for [patchCanvasKitModule].

View File

@@ -111,7 +111,7 @@ Future<Uint8List> fetchImage(
if (chunkCallback != null) {
request.addEventListener('progress', allowInterop((DomEvent event) {
event = event as DomProgressEvent;
chunkCallback.call(event.loaded!.toInt(), event.total!.toInt());
chunkCallback.call(event.loaded!, event.total!);
}));
}
@@ -123,7 +123,7 @@ Future<Uint8List> fetchImage(
}));
request.addEventListener('load', allowInterop((DomEvent event) {
final int status = request.status!.toInt();
final int status = request.status!;
final bool accepted = status >= 200 && status < 300;
final bool fileUri = status == 0; // file:// URIs have status of 0.
final bool notModified = status == 304;
@@ -173,8 +173,8 @@ class CkImage implements ui.Image, StackTraceDebugger {
'be able to resurrect it once it has been garbage collected.');
return;
}
final int originalWidth = skImage.width().toInt();
final int originalHeight = skImage.height().toInt();
final int originalWidth = skImage.width();
final int originalHeight = skImage.height();
box = SkiaObjectBox<CkImage, SkImage>.resurrectable(this, skImage, () {
final SkImage? skImage = canvasKit.MakeImage(
SkImageInfo(
@@ -277,13 +277,13 @@ class CkImage implements ui.Image, StackTraceDebugger {
@override
int get width {
assert(_debugCheckIsNotDisposed());
return skImage.width().toInt();
return skImage.width();
}
@override
int get height {
assert(_debugCheckIsNotDisposed());
return skImage.height().toInt();
return skImage.height();
}
@override
@@ -328,8 +328,8 @@ class CkImage implements ui.Image, StackTraceDebugger {
alphaType: alphaType,
colorType: colorType,
colorSpace: colorSpace,
width: skImage.width().toInt(),
height: skImage.height().toInt(),
width: skImage.width(),
height: skImage.height(),
);
bytes = skImage.readPixels(0, 0, imageInfo);
} else {

View File

@@ -45,8 +45,8 @@ class CkAnimatedImage extends ManagedSkiaObject<SkAnimatedImage>
);
}
_frameCount = animatedImage.getFrameCount().toInt();
_repetitionCount = animatedImage.getRepetitionCount().toInt();
_frameCount = animatedImage.getFrameCount();
_repetitionCount = animatedImage.getRepetitionCount();
// Normally CanvasKit initializes `SkAnimatedImage` to point to the first
// frame in the animation. However, if the Skia object has been deleted then
@@ -116,7 +116,7 @@ class CkAnimatedImage extends ManagedSkiaObject<SkAnimatedImage>
// current Skia frame, then advance SkAnimatedImage to the next frame, and
// return the current frame.
final ui.FrameInfo currentFrame = AnimatedImageFrameInfo(
Duration(milliseconds: animatedImage.currentFrameDuration().toInt()),
Duration(milliseconds: animatedImage.currentFrameDuration()),
CkImage(animatedImage.makeImageAtCurrentFrame()),
);

View File

@@ -179,8 +179,8 @@ class CkBrowserImageDecoder implements ui.Codec {
// package:js bindings don't work with getters that return a Promise, which
// is why js_util is used instead.
await promiseToFuture<void>(getJsProperty(webDecoder, 'completed'));
frameCount = webDecoder.tracks.selectedTrack!.frameCount.toInt();
repetitionCount = webDecoder.tracks.selectedTrack!.repetitionCount.toInt();
frameCount = webDecoder.tracks.selectedTrack!.frameCount;
repetitionCount = webDecoder.tracks.selectedTrack!.repetitionCount;
_cachedWebDecoder = webDecoder;
@@ -234,15 +234,15 @@ class CkBrowserImageDecoder implements ui.Codec {
alphaType: canvasKit.AlphaType.Premul,
colorType: canvasKit.ColorType.RGBA_8888,
colorSpace: SkColorSpaceSRGB,
width: frame.displayWidth.toInt(),
height: frame.displayHeight.toInt(),
width: frame.displayWidth,
height: frame.displayHeight,
),
);
// Duration can be null if the image is not animated. However, Flutter
// requires a non-null value. 0 indicates that the frame is meant to be
// displayed indefinitely, which is fine for a static image.
final Duration duration = Duration(microseconds: frame.duration?.toInt() ?? 0);
final Duration duration = Duration(microseconds: frame.duration ?? 0);
if (skImage == null) {
throw ImageCodecException(
@@ -445,7 +445,7 @@ bool _shouldReadPixelsUnmodified(VideoFrame videoFrame, ui.ImageByteFormat forma
}
Future<ByteBuffer> readVideoFramePixelsUnmodified(VideoFrame videoFrame) async {
final int size = videoFrame.allocationSize().toInt();
final int size = videoFrame.allocationSize();
final Uint8List destination = Uint8List(size);
final JsPromise copyPromise = videoFrame.copyTo(destination);
await promiseToFuture<void>(copyPromise);
@@ -453,8 +453,8 @@ Future<ByteBuffer> readVideoFramePixelsUnmodified(VideoFrame videoFrame) async {
}
Future<Uint8List> encodeVideoFrameAsPng(VideoFrame videoFrame) async {
final int width = videoFrame.displayWidth.toInt();
final int height = videoFrame.displayHeight.toInt();
final int width = videoFrame.displayWidth;
final int height = videoFrame.displayHeight;
final DomCanvasElement canvas = createDomCanvasElement(width: width, height:
height);
final DomCanvasRenderingContext2D ctx = canvas.context2D;

View File

@@ -327,7 +327,7 @@ class Surface {
antialias: _kUsingMSAA ? 1 : 0,
majorVersion: webGLVersion,
),
).toInt();
);
_glContext = glContext;
@@ -429,8 +429,8 @@ class CkSurface {
int? get context => _glContext;
int width() => surface.width().toInt();
int height() => surface.height().toInt();
int width() => surface.width();
int height() => surface.height();
void dispose() {
if (_isDisposed) {

View File

@@ -363,15 +363,15 @@ class CkTextStyle implements ui.TextStyle {
}
if (decoration != null) {
int decorationValue = canvasKit.NoDecoration.toInt();
int decorationValue = canvasKit.NoDecoration;
if (decoration.contains(ui.TextDecoration.underline)) {
decorationValue |= canvasKit.UnderlineDecoration.toInt();
decorationValue |= canvasKit.UnderlineDecoration;
}
if (decoration.contains(ui.TextDecoration.overline)) {
decorationValue |= canvasKit.OverlineDecoration.toInt();
decorationValue |= canvasKit.OverlineDecoration;
}
if (decoration.contains(ui.TextDecoration.lineThrough)) {
decorationValue |= canvasKit.LineThroughDecoration.toInt();
decorationValue |= canvasKit.LineThroughDecoration;
}
properties.decoration = decorationValue;
}
@@ -785,7 +785,7 @@ class CkParagraph extends SkiaObject<SkParagraph> implements ui.Paragraph {
break;
}
final SkTextRange skRange = paragraph.getWordBoundary(characterPosition);
return ui.TextRange(start: skRange.start.toInt(), end: skRange.end.toInt());
return ui.TextRange(start: skRange.start, end: skRange.end);
}
@override
@@ -808,7 +808,7 @@ class CkParagraph extends SkiaObject<SkParagraph> implements ui.Paragraph {
final int offset = position.offset;
for (final SkLineMetrics metric in metrics) {
if (offset >= metric.startIndex && offset <= metric.endIndex) {
return ui.TextRange(start: metric.startIndex.toInt(), end: metric.endIndex.toInt());
return ui.TextRange(start: metric.startIndex, end: metric.endIndex);
}
}
return ui.TextRange.empty;
@@ -876,7 +876,7 @@ class CkLineMetrics implements ui.LineMetrics {
double get width => skLineMetrics.width;
@override
int get lineNumber => skLineMetrics.lineNumber.toInt();
int get lineNumber => skLineMetrics.lineNumber;
}
class CkParagraphBuilder implements ui.ParagraphBuilder {

View File

@@ -35,9 +35,9 @@ Float32List makeFreshSkColor(ui.Color color) {
ui.TextPosition fromPositionWithAffinity(SkTextPosition positionWithAffinity) {
final ui.TextAffinity affinity =
ui.TextAffinity.values[positionWithAffinity.affinity.value.toInt()];
ui.TextAffinity.values[positionWithAffinity.affinity.value];
return ui.TextPosition(
offset: positionWithAffinity.pos.toInt(),
offset: positionWithAffinity.pos,
affinity: affinity,
);
}

View File

@@ -204,8 +204,7 @@ class FlutterConfiguration {
///
/// This value can be specified using either the `FLUTTER_WEB_MAXIMUM_SURFACES`
/// environment variable, or using the runtime configuration.
int get canvasKitMaximumSurfaces =>
_configuration?.canvasKitMaximumSurfaces?.toInt() ?? _defaultCanvasKitMaximumSurfaces;
int get canvasKitMaximumSurfaces => _configuration?.canvasKitMaximumSurfaces ?? _defaultCanvasKitMaximumSurfaces;
static const int _defaultCanvasKitMaximumSurfaces = int.fromEnvironment(
'FLUTTER_WEB_MAXIMUM_SURFACES',
defaultValue: 8,
@@ -252,7 +251,7 @@ class JsFlutterConfiguration {}
extension JsFlutterConfigurationExtension on JsFlutterConfiguration {
external String? get canvasKitBaseUrl;
external bool? get canvasKitForceCpuOnly;
external double? get canvasKitMaximumSurfaces;
external int? get canvasKitMaximumSurfaces;
external bool? get debugShowSemanticsNodes;
external DomElement? get hostElement;
external String? get renderer;

View File

@@ -28,11 +28,13 @@ class DomWindow extends DomEventTarget {}
extension DomWindowExtension on DomWindow {
external DomConsole get console;
external double get devicePixelRatio;
external num get devicePixelRatio;
external DomDocument get document;
external DomHistory get history;
external double? get innerHeight;
external double? get innerWidth;
int? get innerHeight =>
js_util.getProperty<double?>(this, 'innerHeight')?.toInt();
int? get innerWidth =>
js_util.getProperty<double?>(this, 'innerWidth')?.toInt();
external DomLocation get location;
external DomNavigator get navigator;
external DomVisualViewport? get visualViewport;
@@ -50,7 +52,9 @@ extension DomWindowExtension on DomWindow {
if (pseudoElt != null) pseudoElt
]) as DomCSSStyleDeclaration;
external DomScreen? get screen;
external double requestAnimationFrame(DomRequestAnimationFrameCallback callback);
int requestAnimationFrame(DomRequestAnimationFrameCallback callback) =>
js_util.callMethod<double>(this, 'requestAnimationFrame',
<Object>[callback]).toInt();
void postMessage(Object message, String targetOrigin,
[List<DomMessagePort>? messagePorts]) =>
js_util.callMethod(this, 'postMessage', <Object?>[
@@ -88,7 +92,8 @@ class DomNavigator {}
extension DomNavigatorExtension on DomNavigator {
external DomClipboard? get clipboard;
external double? get maxTouchPoints;
int? get maxTouchPoints =>
js_util.getProperty<double?>(this, 'maxTouchPoints')?.toInt();
external String get vendor;
external String get language;
external String? get platform;
@@ -174,7 +179,7 @@ class DomEvent {}
extension DomEventExtension on DomEvent {
external DomEventTarget? get target;
external double? get timeStamp;
external num? get timeStamp;
external String get type;
external void preventDefault();
external void stopPropagation();
@@ -198,8 +203,10 @@ DomEvent createDomEvent(String type, String name) {
class DomProgressEvent extends DomEvent {}
extension DomProgressEventExtension on DomProgressEvent {
external double? get loaded;
external double? get total;
int? get loaded =>
js_util.getProperty<double?>(this, 'loaded')?.toInt();
int? get total =>
js_util.getProperty<double?>(this, 'total')?.toInt();
}
@JS()
@@ -250,8 +257,10 @@ DomElement createDomElement(String tag) => domDocument.createElement(tag);
extension DomElementExtension on DomElement {
Iterable<DomElement> get children => createDomListWrapper<DomElement>(
js_util.getProperty<_DomList>(this, 'children'));
external double get clientHeight;
external double get clientWidth;
int get clientHeight =>
js_util.getProperty<double>(this, 'clientHeight').toInt();
int get clientWidth =>
js_util.getProperty<double>(this, 'clientWidth').toInt();
external String get id;
external set id(String id);
external set innerHtml(String? html);
@@ -271,13 +280,18 @@ extension DomElementExtension on DomElement {
external void setAttribute(String name, Object value);
void appendText(String text) => append(createDomText(text));
external void removeAttribute(String name);
external set tabIndex(double? value);
external double? get tabIndex;
set tabIndex(int? value) =>
js_util.setProperty<double?>(this, 'tabIndex', value?.toDouble());
int? get tabIndex =>
js_util.getProperty<double?>(this, 'tabIndex')?.toInt();
external void focus();
external double get scrollTop;
external set scrollTop(double value);
external double get scrollLeft;
external set scrollLeft(double value);
int get scrollTop => js_util.getProperty<double>(this, 'scrollTop').toInt();
set scrollTop(int value) =>
js_util.setProperty<double>(this, 'scrollTop', value.toDouble());
int get scrollLeft =>
js_util.getProperty<double>(this, 'scrollLeft').toInt();
set scrollLeft(int value) =>
js_util.setProperty<double>(this, 'scrollLeft', value.toDouble());
external DomTokenList get classList;
external set className(String value);
external String get className;
@@ -457,7 +471,8 @@ extension DomCSSStyleDeclarationExtension on DomCSSStyleDeclaration {
class DomHTMLElement extends DomElement {}
extension DomHTMLElementExtension on DomHTMLElement {
external double get offsetWidth;
int get offsetWidth =>
js_util.getProperty<double>(this, 'offsetWidth').toInt();
}
@JS()
@@ -495,10 +510,14 @@ extension DomHTMLImageElementExtension on DomHTMLImageElement {
external set alt(String? value);
external String? get src;
external set src(String? value);
external double get naturalWidth;
external double get naturalHeight;
external set width(double? value);
external set height(double? value);
int get naturalWidth =>
js_util.getProperty<double>(this, 'naturalWidth').toInt();
int get naturalHeight =>
js_util.getProperty<double>(this, 'naturalHeight').toInt();
set width(int? value) =>
js_util.setProperty<double?>(this, 'width', value?.toDouble());
set height(int? value) =>
js_util.setProperty<double?>(this, 'height', value?.toDouble());
Future<dynamic> decode() =>
js_util.promiseToFuture(js_util.callMethod(this, 'decode', <Object>[]));
}
@@ -581,19 +600,23 @@ DomCanvasElement createDomCanvasElement({int? width, int? height}) {
final DomCanvasElement canvas =
domWindow.document.createElement('canvas') as DomCanvasElement;
if (width != null) {
canvas.width = width.toDouble();
canvas.width = width;
}
if (height != null) {
canvas.height = height.toDouble();
canvas.height = height;
}
return canvas;
}
extension DomCanvasElementExtension on DomCanvasElement {
external double? get width;
external set width(double? value);
external double? get height;
external set height(double? value);
int? get width =>
js_util.getProperty<double?>(this, 'width')?.toInt();
set width(int? value) =>
js_util.setProperty<double?>(this, 'width', value?.toDouble());
int? get height =>
js_util.getProperty<double?>(this, 'height')?.toInt();
set height(int? value) =>
js_util.setProperty<double?>(this, 'height', value?.toDouble());
external bool? get isConnected;
String toDataURL([String type = 'image/png']) =>
js_util.callMethod(this, 'toDataURL', <Object>[type]);
@@ -729,7 +752,8 @@ extension DomXMLHttpRequestExtension on DomXMLHttpRequest {
external dynamic get response;
external String? get responseText;
external String get responseType;
external double? get status;
int? get status =>
js_util.getProperty<double?>(this, 'status')?.toInt();
external set responseType(String value);
void open(String method, String url, [bool? async]) => js_util.callMethod(
this, 'open', <Object>[method, url, if (async != null) async]);
@@ -747,7 +771,7 @@ Future<DomXMLHttpRequest> domHttpRequest(String url,
}
xhr.addEventListener('load', allowInterop((DomEvent e) {
final int status = xhr.status!.toInt();
final int status = xhr.status!;
final bool accepted = status >= 200 && status < 300;
final bool fileUri = status == 0;
final bool notModified = status == 304;
@@ -783,7 +807,7 @@ DomText createDomText(String data) => domDocument.createTextNode(data);
class DomTextMetrics {}
extension DomTextMetricsExtension on DomTextMetrics {
external double? get width;
external num? get width;
}
@JS()
@@ -801,14 +825,14 @@ extension DomExceptionExtension on DomException {
class DomRectReadOnly {}
extension DomRectReadOnlyExtension on DomRectReadOnly {
external double get x;
external double get y;
external double get width;
external double get height;
external double get top;
external double get right;
external double get bottom;
external double get left;
external num get x;
external num get y;
external num get width;
external num get height;
external num get top;
external num get right;
external num get bottom;
external num get left;
}
DomRect createDomRectFromPoints(DomPoint a, DomPoint b) {
@@ -860,8 +884,8 @@ typedef DomFontFaceSetForEachCallback = void Function(
class DomVisualViewport extends DomEventTarget {}
extension DomVisualViewportExtension on DomVisualViewport {
external double? get height;
external double? get width;
external num? get height;
external num? get width;
}
@JS()
@@ -876,10 +900,10 @@ extension DomHTMLTextAreaElementExtension on DomHTMLTextAreaElement {
external void select();
external set placeholder(String? value);
external set name(String value);
external double? get selectionStart;
external double? get selectionEnd;
external set selectionStart(double? value);
external set selectionEnd(double? value);
external int? get selectionStart;
external int? get selectionEnd;
external set selectionStart(int? value);
external set selectionEnd(int? value);
external String? get value;
void setSelectionRange(int start, int end, [String? direction]) =>
js_util.callMethod(this, 'setSelectionRange',
@@ -925,8 +949,10 @@ extension DomKeyboardEventExtension on DomKeyboardEvent {
external String? get code;
external bool get ctrlKey;
external String? get key;
external double get keyCode;
external double get location;
int get keyCode =>
js_util.getProperty<double>(this, 'keyCode').toInt();
int get location =>
js_util.getProperty<double>(this, 'location').toInt();
external bool get metaKey;
external bool? get repeat;
external bool get shiftKey;
@@ -1081,14 +1107,16 @@ DomPath2D createDomPath2D([Object? path]) =>
class DomMouseEvent extends DomUIEvent {}
extension DomMouseEventExtension on DomMouseEvent {
external double get clientX;
external double get clientY;
external double get offsetX;
external double get offsetY;
external num get clientX;
external num get clientY;
external num get offsetX;
external num get offsetY;
DomPoint get client => DomPoint(clientX, clientY);
DomPoint get offset => DomPoint(offsetX, offsetY);
external double get button;
external double? get buttons;
int get button =>
js_util.getProperty<double>(this, 'button').toInt();
int? get buttons =>
js_util.getProperty<double?>(this, 'buttons')?.toInt();
external bool getModifierState(String keyArg);
}
@@ -1101,11 +1129,14 @@ DomMouseEvent createDomMouseEvent(String type, [Map<dynamic, dynamic>? init]) =>
class DomPointerEvent extends DomMouseEvent {}
extension DomPointerEventExtension on DomPointerEvent {
external double? get pointerId;
int? get pointerId =>
js_util.getProperty<double?>(this, 'pointerId')?.toInt();
external String? get pointerType;
external double? get pressure;
external double? get tiltX;
external double? get tiltY;
external num? get pressure;
int? get tiltX =>
js_util.getProperty<double?>(this, 'tiltX')?.toInt();
int? get tiltY =>
js_util.getProperty<double?>(this, 'tiltY')?.toInt();
List<DomPointerEvent> getCoalescedEvents() =>
js_util.callMethod<List<Object?>>(
this, 'getCoalescedEvents', <Object>[]).cast<DomPointerEvent>();
@@ -1121,9 +1152,10 @@ DomPointerEvent createDomPointerEvent(String type,
class DomWheelEvent extends DomMouseEvent {}
extension DomWheelEventExtension on DomWheelEvent {
external double get deltaX;
external double get deltaY;
external double get deltaMode;
external num get deltaX;
external num get deltaY;
int get deltaMode =>
js_util.getProperty<double>(this, 'deltaMode').toInt();
}
@JS()
@@ -1145,9 +1177,10 @@ extension DomTouchEventExtension on DomTouchEvent {
class DomTouch {}
extension DomTouchExtension on DomTouch {
external double? get identifier;
external double get clientX;
external double get clientY;
int? get identifier =>
js_util.getProperty<double?>(this, 'identifier')?.toInt();
external num get clientX;
external num get clientY;
DomPoint get client => DomPoint(clientX, clientY);
}
@@ -1187,10 +1220,14 @@ extension DomHTMLInputElementExtension on DomHTMLInputElement {
external set placeholder(String? value);
external set name(String? value);
external set autocomplete(String value);
external double? get selectionStart;
external double? get selectionEnd;
external set selectionStart(double? value);
external set selectionEnd(double? value);
int? get selectionStart =>
js_util.getProperty<double?>(this, 'selectionStart')?.toInt();
int? get selectionEnd =>
js_util.getProperty<double?>(this, 'selectionEnd')?.toInt();
set selectionStart(int? value) =>
js_util.setProperty<double?>(this, 'selectionStart', value?.toDouble());
set selectionEnd(int? value) =>
js_util.setProperty<double?>(this, 'selectionEnd', value?.toDouble());
void setSelectionRange(int start, int end, [String? direction]) =>
js_util.callMethod(this, 'setSelectionRange',
<Object>[start.toDouble(), end.toDouble(),
@@ -1239,10 +1276,14 @@ DomHTMLLabelElement createDomHTMLLabelElement() =>
class DomOffscreenCanvas extends DomEventTarget {}
extension DomOffscreenCanvasExtension on DomOffscreenCanvas {
external double? get height;
external double? get width;
external set height(double? value);
external set width(double? value);
int? get height =>
js_util.getProperty<double?>(this, 'height')?.toInt();
int? get width =>
js_util.getProperty<double?>(this, 'width')?.toInt();
set height(int? value) =>
js_util.setProperty<double?>(this, 'height', value?.toDouble());
set width(int? value) =>
js_util.setProperty<double?>(this, 'width', value?.toDouble());
Object? getContext(String contextType, [Map<dynamic, dynamic>? attributes]) {
return js_util.callMethod(this, 'getContext', <Object?>[
contextType,
@@ -1307,10 +1348,10 @@ class DomCSSStyleSheet extends DomStyleSheet {}
extension DomCSSStyleSheetExtension on DomCSSStyleSheet {
external DomCSSRuleList get cssRules;
double insertRule(String rule, [int? index]) => js_util
int insertRule(String rule, [int? index]) => js_util
.callMethod<double>(
this, 'insertRule',
<Object>[rule, if (index != null) index.toDouble()]);
<Object>[rule, if (index != null) index.toDouble()]).toInt();
}
@JS()
@@ -1419,7 +1460,8 @@ extension DomMessageChannelExtension on DomMessageChannel {
class DomCSSRuleList {}
extension DomCSSRuleListExtension on DomCSSRuleList {
external double get length;
int get length =>
js_util.getProperty<double>(this, 'length').toInt();
}
/// A factory to create `TrustedTypePolicy` objects.
@@ -1578,7 +1620,8 @@ bool domInstanceOfString(Object? element, String objectType) =>
class _DomList {}
extension DomListExtension on _DomList {
external double get length;
int get length =>
js_util.getProperty<double>(this, 'length').toInt();
DomNode item(int index) =>
js_util.callMethod<DomNode>(this, 'item', <Object>[index.toDouble()]);
}
@@ -1612,7 +1655,7 @@ class _DomListWrapper<T> extends Iterable<T> {
/// Override the length to avoid iterating through the whole collection.
@override
int get length => list.length.toInt();
int get length => list.length;
}
/// This is a work around for a `TypeError` which can be triggered by calling
@@ -1638,9 +1681,9 @@ class DomV8BreakIterator {}
extension DomV8BreakIteratorExtension on DomV8BreakIterator {
external void adoptText(String text);
external double first();
external double next();
external double current();
external int first();
external int next();
external int current();
external String breakType();
}

View File

@@ -340,7 +340,7 @@ class FlutterViewEmbedder {
// Firefox returns correct values for innerHeight, innerWidth.
// Firefox also triggers domWindow.onResize therefore this timer does
// not need to be set up for Firefox.
final int initialInnerWidth = domWindow.innerWidth!.toInt();
final int initialInnerWidth = domWindow.innerWidth!;
// Counts how many times screen size was checked. It is checked up to 5
// times.
int checkCount = 0;
@@ -551,7 +551,7 @@ void applyGlobalCssRulesToSheet(
// - See: https://github.com/flutter/flutter/issues/44803
sheet.insertRule(
'flt-paragraph, flt-span {line-height: 100%;}',
sheet.cssRules.length.toInt(),
sheet.cssRules.length,
);
}
@@ -571,7 +571,7 @@ void applyGlobalCssRulesToSheet(
left: 0;
}
''',
sheet.cssRules.length.toInt(),
sheet.cssRules.length,
);
if (isWebKit) {
@@ -579,7 +579,7 @@ void applyGlobalCssRulesToSheet(
'flt-semantics input[type=range]::-webkit-slider-thumb {'
' -webkit-appearance: none;'
'}',
sheet.cssRules.length.toInt());
sheet.cssRules.length);
}
if (isFirefox) {
@@ -587,12 +587,12 @@ void applyGlobalCssRulesToSheet(
'input::-moz-selection {'
' background-color: transparent;'
'}',
sheet.cssRules.length.toInt());
sheet.cssRules.length);
sheet.insertRule(
'textarea::-moz-selection {'
' background-color: transparent;'
'}',
sheet.cssRules.length.toInt());
sheet.cssRules.length);
} else {
// On iOS, the invisible semantic text field has a visible cursor and
// selection highlight. The following 2 CSS rules force everything to be
@@ -601,12 +601,12 @@ void applyGlobalCssRulesToSheet(
'input::selection {'
' background-color: transparent;'
'}',
sheet.cssRules.length.toInt());
sheet.cssRules.length);
sheet.insertRule(
'textarea::selection {'
' background-color: transparent;'
'}',
sheet.cssRules.length.toInt());
sheet.cssRules.length);
}
sheet.insertRule('''
flt-semantics input,
@@ -614,7 +614,7 @@ void applyGlobalCssRulesToSheet(
flt-semantics [contentEditable="true"] {
caret-color: transparent;
}
''', sheet.cssRules.length.toInt());
''', sheet.cssRules.length);
// By default on iOS, Safari would highlight the element that's being tapped
// on using gray background. This CSS rule disables that.
@@ -623,7 +623,7 @@ void applyGlobalCssRulesToSheet(
$glassPaneTagName * {
-webkit-tap-highlight-color: transparent;
}
''', sheet.cssRules.length.toInt());
''', sheet.cssRules.length);
}
// Hide placeholder text
@@ -633,7 +633,7 @@ void applyGlobalCssRulesToSheet(
opacity: 0;
}
''',
sheet.cssRules.length.toInt(),
sheet.cssRules.length,
);
// This css prevents an autofill overlay brought by the browser during
@@ -647,7 +647,7 @@ void applyGlobalCssRulesToSheet(
.transparentTextEditing:-webkit-autofill:active {
-webkit-transition-delay: 99999s;
}
''', sheet.cssRules.length.toInt());
''', sheet.cssRules.length);
}
}

View File

@@ -48,8 +48,8 @@ class PersistedScene extends PersistedContainerSurface {
// TODO(yjbanov): in the add2app scenario where we might be hosted inside
// a custom element, this will be different. We will need to
// update this code when we add add2app support.
final double screenWidth = domWindow.innerWidth!;
final double screenHeight = domWindow.innerHeight!;
final double screenWidth = domWindow.innerWidth!.toDouble();
final double screenHeight = domWindow.innerHeight!.toDouble();
localClipBounds = ui.Rect.fromLTRB(0, 0, screenWidth, screenHeight);
projectedClip = null;
}

View File

@@ -97,7 +97,7 @@ class DebugSurfaceStats {
DomCanvasRenderingContext2D? _debugSurfaceStatsOverlayCtx;
void debugRepaintSurfaceStatsOverlay(PersistedScene scene) {
final int overlayWidth = domWindow.innerWidth!.toInt();
final int overlayWidth = domWindow.innerWidth!;
const int rowHeight = 30;
const int rowCount = 4;
const int overlayHeight = rowHeight * rowCount;
@@ -296,7 +296,7 @@ void debugPrintSurfaceStats(PersistedScene scene, int frameNumber) {
final int pixelCount = canvasElements
.cast<DomCanvasElement>()
.map<int>((DomCanvasElement e) {
final int pixels = (e.width! * e.height!).toInt();
final int pixels = e.width! * e.height!;
canvasInfo.writeln(' - ${e.width!} x ${e.height!} = $pixels pixels');
return pixels;
}).fold(0, (int total, int pixels) => total + pixels);

View File

@@ -53,8 +53,8 @@ class HtmlCodec implements ui.Codec {
// ignore: unawaited_futures
imgElement.decode().then((dynamic _) {
chunkCallback?.call(100, 100);
int naturalWidth = imgElement.naturalWidth.toInt();
int naturalHeight = imgElement.naturalHeight.toInt();
int naturalWidth = imgElement.naturalWidth;
int naturalHeight = imgElement.naturalHeight;
// Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=700533.
if (naturalWidth == 0 && naturalHeight == 0 && browserEngine == BrowserEngine.firefox) {
const int kDefaultImageSizeFallback = 300;
@@ -103,8 +103,8 @@ class HtmlCodec implements ui.Codec {
imgElement.removeEventListener('error', errorListener);
final HtmlImage image = HtmlImage(
imgElement,
imgElement.naturalWidth.toInt(),
imgElement.naturalHeight.toInt(),
imgElement.naturalWidth,
imgElement.naturalHeight,
);
completer.complete(SingleFrameInfo(image));
});
@@ -188,8 +188,8 @@ class HtmlImage implements ui.Image {
case ui.ImageByteFormat.rawRgba:
case ui.ImageByteFormat.rawStraightRgba:
final DomCanvasElement canvas = createDomCanvasElement()
..width = width.toDouble()
..height = height.toDouble();
..width = width
..height = height;
final DomCanvasRenderingContext2D ctx = canvas.context2D;
ctx.drawImage(imgElement, 0, 0);
final DomImageData imageData = ctx.getImageData(0, 0, width, height);

View File

@@ -190,9 +190,9 @@ class FlutterHtmlKeyboardEvent {
String get type => _event.type;
String? get code => _event.code;
String? get key => _event.key;
int get keyCode => _event.keyCode.toInt();
int get keyCode => _event.keyCode;
bool? get repeat => _event.repeat;
int? get location => _event.location.toInt();
int? get location => _event.location;
num? get timeStamp => _event.timeStamp;
bool get altKey => _event.altKey;
bool get ctrlKey => _event.ctrlKey;

View File

@@ -64,8 +64,8 @@ class EnginePicture implements ui.Picture {
final String imageDataUrl = canvas.toDataUrl();
final DomHTMLImageElement imageElement = createDomHTMLImageElement()
..src = imageDataUrl
..width = width.toDouble()
..height = height.toDouble();
..width = width
..height = height;
// The image loads asynchronously. We need to wait before returning,
// otherwise the returned HtmlImage will be temporarily unusable.

View File

@@ -185,9 +185,9 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher {
/// Returns device pixel ratio returned by browser.
static double get browserDevicePixelRatio {
final double ratio = domWindow.devicePixelRatio;
// Guard against WebOS returning 0.
return (ratio == 0.0) ? 1.0 : ratio;
final double? ratio = domWindow.devicePixelRatio as double?;
// Guard against WebOS returning 0 and other browsers returning null.
return (ratio == null || ratio == 0.0) ? 1.0 : ratio;
}
/// A callback invoked when any window begins a frame.

View File

@@ -342,9 +342,9 @@ mixin _WheelEventListenerMixin on _BaseAdapter {
// Flutter only supports pixel scroll delta. Convert deltaMode values
// to pixels.
double deltaX = event.deltaX;
double deltaY = event.deltaY;
switch (event.deltaMode.toInt()) {
double deltaX = event.deltaX as double;
double deltaY = event.deltaY as double;
switch (event.deltaMode) {
case domDeltaLine:
_defaultScrollLineHeight ??= _computeDefaultScrollLineHeight();
deltaX *= _defaultScrollLineHeight!;
@@ -374,9 +374,9 @@ mixin _WheelEventListenerMixin on _BaseAdapter {
kind: ui.PointerDeviceKind.mouse,
signalKind: ui.PointerSignalKind.scroll,
device: _mouseDeviceId,
physicalX: event.clientX * ui.window.devicePixelRatio,
physicalY: event.clientY * ui.window.devicePixelRatio,
buttons: event.buttons!.toInt(),
physicalX: event.clientX.toDouble() * ui.window.devicePixelRatio,
physicalY: event.clientY.toDouble() * ui.window.devicePixelRatio,
buttons: event.buttons!,
pressure: 1.0,
pressureMax: 1.0,
scrollDeltaX: deltaX,
@@ -647,14 +647,14 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin {
final List<ui.PointerData> pointerData = <ui.PointerData>[];
final _ButtonSanitizer sanitizer = _ensureSanitizer(device);
final _SanitizedDetails? up =
sanitizer.sanitizeMissingRightClickUp(buttons: event.buttons!.toInt());
sanitizer.sanitizeMissingRightClickUp(buttons: event.buttons!);
if (up != null) {
_convertEventsToPointerData(data: pointerData, event: event, details: up);
}
final _SanitizedDetails down =
sanitizer.sanitizeDownEvent(
button: event.button.toInt(),
buttons: event.buttons!.toInt(),
button: event.button,
buttons: event.buttons!,
);
_convertEventsToPointerData(data: pointerData, event: event, details: down);
_callback(pointerData);
@@ -666,11 +666,11 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin {
final List<ui.PointerData> pointerData = <ui.PointerData>[];
final List<DomPointerEvent> expandedEvents = _expandEvents(event);
for (final DomPointerEvent event in expandedEvents) {
final _SanitizedDetails? up = sanitizer.sanitizeMissingRightClickUp(buttons: event.buttons!.toInt());
final _SanitizedDetails? up = sanitizer.sanitizeMissingRightClickUp(buttons: event.buttons!);
if (up != null) {
_convertEventsToPointerData(data: pointerData, event: event, details: up);
}
final _SanitizedDetails move = sanitizer.sanitizeMoveEvent(buttons: event.buttons!.toInt());
final _SanitizedDetails move = sanitizer.sanitizeMoveEvent(buttons: event.buttons!);
_convertEventsToPointerData(data: pointerData, event: event, details: move);
}
_callback(pointerData);
@@ -680,7 +680,7 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin {
final int device = _getPointerId(event);
final _ButtonSanitizer sanitizer = _ensureSanitizer(device);
final List<ui.PointerData> pointerData = <ui.PointerData>[];
final _SanitizedDetails? details = sanitizer.sanitizeLeaveEvent(buttons: event.buttons!.toInt());
final _SanitizedDetails? details = sanitizer.sanitizeLeaveEvent(buttons: event.buttons!);
if (details != null) {
_convertEventsToPointerData(data: pointerData, event: event, details: details);
_callback(pointerData);
@@ -691,7 +691,7 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin {
final int device = _getPointerId(event);
if (_hasSanitizer(device)) {
final List<ui.PointerData> pointerData = <ui.PointerData>[];
final _SanitizedDetails? details = _getSanitizer(device).sanitizeUpEvent(buttons: event.buttons?.toInt());
final _SanitizedDetails? details = _getSanitizer(device).sanitizeUpEvent(buttons: event.buttons);
_removePointerIfUnhoverable(event);
if (details != null) {
_convertEventsToPointerData(data: pointerData, event: event, details: details);
@@ -739,8 +739,8 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin {
kind: kind,
signalKind: ui.PointerSignalKind.none,
device: _getPointerId(event),
physicalX: event.clientX * ui.window.devicePixelRatio,
physicalY: event.clientY * ui.window.devicePixelRatio,
physicalX: event.clientX.toDouble() * ui.window.devicePixelRatio,
physicalY: event.clientY.toDouble() * ui.window.devicePixelRatio,
buttons: details.buttons,
pressure: pressure == null ? 0.0 : pressure.toDouble(),
pressureMax: 1.0,
@@ -781,13 +781,12 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin {
// might come before any PointerEvents, and since wheel events don't contain
// pointerId we always assign `device: _mouseDeviceId` to them.
final ui.PointerDeviceKind kind = _pointerTypeToDeviceKind(event.pointerType!);
return kind == ui.PointerDeviceKind.mouse ? _mouseDeviceId :
event.pointerId!.toInt();
return kind == ui.PointerDeviceKind.mouse ? _mouseDeviceId : event.pointerId!;
}
/// Tilt angle is -90 to + 90. Take maximum deflection and convert to radians.
double _computeHighestTilt(DomPointerEvent e) =>
(e.tiltX!.abs() > e.tiltY!.abs() ? e.tiltX : e.tiltY)! /
(e.tiltX!.abs() > e.tiltY!.abs() ? e.tiltX : e.tiltY)!.toDouble() /
180.0 *
math.pi;
}
@@ -834,9 +833,9 @@ class _TouchAdapter extends _BaseAdapter {
final Duration timeStamp = _BaseAdapter._eventTimeStampToDuration(event.timeStamp!);
final List<ui.PointerData> pointerData = <ui.PointerData>[];
for (final DomTouch touch in event.changedTouches!.cast<DomTouch>()) {
final bool nowPressed = _isTouchPressed(touch.identifier!.toInt());
final bool nowPressed = _isTouchPressed(touch.identifier!);
if (!nowPressed) {
_pressTouch(touch.identifier!.toInt());
_pressTouch(touch.identifier!);
_convertEventToPointerData(
data: pointerData,
change: ui.PointerChange.down,
@@ -854,7 +853,7 @@ class _TouchAdapter extends _BaseAdapter {
final Duration timeStamp = _BaseAdapter._eventTimeStampToDuration(event.timeStamp!);
final List<ui.PointerData> pointerData = <ui.PointerData>[];
for (final DomTouch touch in event.changedTouches!.cast<DomTouch>()) {
final bool nowPressed = _isTouchPressed(touch.identifier!.toInt());
final bool nowPressed = _isTouchPressed(touch.identifier!);
if (nowPressed) {
_convertEventToPointerData(
data: pointerData,
@@ -875,9 +874,9 @@ class _TouchAdapter extends _BaseAdapter {
final Duration timeStamp = _BaseAdapter._eventTimeStampToDuration(event.timeStamp!);
final List<ui.PointerData> pointerData = <ui.PointerData>[];
for (final DomTouch touch in event.changedTouches!.cast<DomTouch>()) {
final bool nowPressed = _isTouchPressed(touch.identifier!.toInt());
final bool nowPressed = _isTouchPressed(touch.identifier!);
if (nowPressed) {
_unpressTouch(touch.identifier!.toInt());
_unpressTouch(touch.identifier!);
_convertEventToPointerData(
data: pointerData,
change: ui.PointerChange.up,
@@ -894,9 +893,9 @@ class _TouchAdapter extends _BaseAdapter {
final Duration timeStamp = _BaseAdapter._eventTimeStampToDuration(event.timeStamp!);
final List<ui.PointerData> pointerData = <ui.PointerData>[];
for (final DomTouch touch in event.changedTouches!.cast<DomTouch>()) {
final bool nowPressed = _isTouchPressed(touch.identifier!.toInt());
final bool nowPressed = _isTouchPressed(touch.identifier!);
if (nowPressed) {
_unpressTouch(touch.identifier!.toInt());
_unpressTouch(touch.identifier!);
_convertEventToPointerData(
data: pointerData,
change: ui.PointerChange.cancel,
@@ -922,9 +921,9 @@ class _TouchAdapter extends _BaseAdapter {
change: change,
timeStamp: timeStamp,
signalKind: ui.PointerSignalKind.none,
device: touch.identifier!.toInt(),
physicalX: touch.clientX * ui.window.devicePixelRatio,
physicalY: touch.clientY * ui.window.devicePixelRatio,
device: touch.identifier!,
physicalX: touch.clientX.toDouble() * ui.window.devicePixelRatio,
physicalY: touch.clientY.toDouble() * ui.window.devicePixelRatio,
buttons: pressed ? _kPrimaryMouseButton : 0,
pressure: 1.0,
pressureMax: 1.0,
@@ -993,14 +992,14 @@ class _MouseAdapter extends _BaseAdapter with _WheelEventListenerMixin {
_addMouseEventListener(glassPaneElement, 'mousedown', (DomMouseEvent event) {
final List<ui.PointerData> pointerData = <ui.PointerData>[];
final _SanitizedDetails? up =
_sanitizer.sanitizeMissingRightClickUp(buttons: event.buttons!.toInt());
_sanitizer.sanitizeMissingRightClickUp(buttons: event.buttons!);
if (up != null) {
_convertEventsToPointerData(data: pointerData, event: event, details: up);
}
final _SanitizedDetails sanitizedDetails =
_sanitizer.sanitizeDownEvent(
button: event.button.toInt(),
buttons: event.buttons!.toInt(),
button: event.button,
buttons: event.buttons!,
);
_convertEventsToPointerData(data: pointerData, event: event, details: sanitizedDetails);
_callback(pointerData);
@@ -1008,18 +1007,18 @@ class _MouseAdapter extends _BaseAdapter with _WheelEventListenerMixin {
_addMouseEventListener(domWindow, 'mousemove', (DomMouseEvent event) {
final List<ui.PointerData> pointerData = <ui.PointerData>[];
final _SanitizedDetails? up = _sanitizer.sanitizeMissingRightClickUp(buttons: event.buttons!.toInt());
final _SanitizedDetails? up = _sanitizer.sanitizeMissingRightClickUp(buttons: event.buttons!);
if (up != null) {
_convertEventsToPointerData(data: pointerData, event: event, details: up);
}
final _SanitizedDetails move = _sanitizer.sanitizeMoveEvent(buttons: event.buttons!.toInt());
final _SanitizedDetails move = _sanitizer.sanitizeMoveEvent(buttons: event.buttons!);
_convertEventsToPointerData(data: pointerData, event: event, details: move);
_callback(pointerData);
});
_addMouseEventListener(glassPaneElement, 'mouseleave', (DomMouseEvent event) {
final List<ui.PointerData> pointerData = <ui.PointerData>[];
final _SanitizedDetails? details = _sanitizer.sanitizeLeaveEvent(buttons: event.buttons!.toInt());
final _SanitizedDetails? details = _sanitizer.sanitizeLeaveEvent(buttons: event.buttons!);
if (details != null) {
_convertEventsToPointerData(data: pointerData, event: event, details: details);
_callback(pointerData);
@@ -1028,7 +1027,7 @@ class _MouseAdapter extends _BaseAdapter with _WheelEventListenerMixin {
_addMouseEventListener(domWindow, 'mouseup', (DomMouseEvent event) {
final List<ui.PointerData> pointerData = <ui.PointerData>[];
final _SanitizedDetails? sanitizedDetails = _sanitizer.sanitizeUpEvent(buttons: event.buttons?.toInt());
final _SanitizedDetails? sanitizedDetails = _sanitizer.sanitizeUpEvent(buttons: event.buttons);
if (sanitizedDetails != null) {
_convertEventsToPointerData(data: pointerData, event: event, details: sanitizedDetails);
_callback(pointerData);
@@ -1057,8 +1056,8 @@ class _MouseAdapter extends _BaseAdapter with _WheelEventListenerMixin {
kind: ui.PointerDeviceKind.mouse,
signalKind: ui.PointerSignalKind.none,
device: _mouseDeviceId,
physicalX: event.clientX * ui.window.devicePixelRatio,
physicalY: event.clientY * ui.window.devicePixelRatio,
physicalX: event.clientX.toDouble() * ui.window.devicePixelRatio,
physicalY: event.clientY.toDouble() * ui.window.devicePixelRatio,
buttons: details.buttons,
pressure: 1.0,
pressureMax: 1.0,

View File

@@ -202,8 +202,8 @@ DomCanvasElement? tryCreateCanvasElement(int width, int height) {
return null;
}
try {
canvas.width = width.toDouble();
canvas.height = height.toDouble();
canvas.width = width;
canvas.height = height;
} catch (e) {
// It seems the tribal knowledge of why we anticipate an exception while
// setting width/height on a non-null canvas and why it's OK to return null
@@ -336,14 +336,14 @@ class DecodeOptions {
class VideoFrame implements DomCanvasImageSource {}
extension VideoFrameExtension on VideoFrame {
external double allocationSize();
external int allocationSize();
external JsPromise copyTo(Uint8List destination);
external String? get format;
external double get codedWidth;
external double get codedHeight;
external double get displayWidth;
external double get displayHeight;
external double? get duration;
external int get codedWidth;
external int get codedHeight;
external int get displayWidth;
external int get displayHeight;
external int? get duration;
external VideoFrame clone();
external void close();
}
@@ -374,8 +374,8 @@ extension ImageTrackListExtension on ImageTrackList {
class ImageTrack {}
extension ImageTrackExtension on ImageTrack {
external double get repetitionCount;
external double get frameCount;
external int get repetitionCount;
external int get frameCount;
}
void scaleCanvas2D(Object context2d, num x, num y) {
@@ -990,11 +990,11 @@ class OffScreenCanvas {
width = requestedWidth;
height = requestedHeight;
if(offScreenCanvas != null) {
offScreenCanvas!.width = requestedWidth.toDouble();
offScreenCanvas!.height = requestedHeight.toDouble();
offScreenCanvas!.width = requestedWidth;
offScreenCanvas!.height = requestedHeight;
} else if (canvasElement != null) {
canvasElement!.width = requestedWidth.toDouble();
canvasElement!.height = requestedHeight.toDouble();
canvasElement!.width = requestedWidth;
canvasElement!.height = requestedHeight;
_updateCanvasCssSize(canvasElement!);
}
}

View File

@@ -131,10 +131,10 @@ class Scrollable extends RoleManager {
/// The value of "scrollTop" or "scrollLeft", depending on the scroll axis.
int get _domScrollPosition {
if (semanticsObject.isVerticalScrollContainer) {
return semanticsObject.element.scrollTop.toInt();
return semanticsObject.element.scrollTop;
} else {
assert(semanticsObject.isHorizontalScrollContainer);
return semanticsObject.element.scrollLeft.toInt();
return semanticsObject.element.scrollLeft;
}
}
@@ -167,9 +167,9 @@ class Scrollable extends RoleManager {
..width = '${rect.width.round()}px'
..height = '${canonicalNeutralScrollPosition}px';
element.scrollTop = canonicalNeutralScrollPosition.toDouble();
element.scrollTop = canonicalNeutralScrollPosition;
// Read back because the effective value depends on the amount of content.
_effectiveNeutralScrollPosition = element.scrollTop.toInt();
_effectiveNeutralScrollPosition = element.scrollTop;
semanticsObject
..verticalContainerAdjustment =
_effectiveNeutralScrollPosition.toDouble()
@@ -184,9 +184,9 @@ class Scrollable extends RoleManager {
..width = '${canonicalNeutralScrollPosition}px'
..height = '${rect.height.round()}px';
element.scrollLeft = canonicalNeutralScrollPosition.toDouble();
element.scrollLeft = canonicalNeutralScrollPosition;
// Read back because the effective value depends on the amount of content.
_effectiveNeutralScrollPosition = element.scrollLeft.toInt();
_effectiveNeutralScrollPosition = element.scrollLeft;
semanticsObject
..verticalContainerAdjustment = 0.0
..horizontalContainerAdjustment =

View File

@@ -289,7 +289,7 @@ class _PolyfillFontManager extends FontManager {
paragraph.text = _testString;
domDocument.body!.append(paragraph);
final int sansSerifWidth = paragraph.offsetWidth.toInt();
final int sansSerifWidth = paragraph.offsetWidth;
paragraph.style.fontFamily = "'$family', $fallbackFontName";

View File

@@ -80,7 +80,7 @@ class V8LineBreakFragmenter extends TextFragmenter implements LineBreakFragmente
while (iterator.next() != -1) {
final LineBreakType type = _getBreakType(iterator);
final int fragmentEnd = iterator.current().toInt();
final int fragmentEnd = iterator.current();
int trailingNewlines = 0;
int trailingSpaces = 0;
@@ -128,7 +128,7 @@ class V8LineBreakFragmenter extends TextFragmenter implements LineBreakFragmente
/// Gets break type from v8BreakIterator.
LineBreakType _getBreakType(DomV8BreakIterator iterator) {
final int fragmentEnd = iterator.current().toInt();
final int fragmentEnd = iterator.current();
// I don't know why v8BreakIterator uses the type "none" to mean "soft break".
if (iterator.breakType() != 'none') {

View File

@@ -102,7 +102,7 @@ double measureSubstring(
} else {
final String sub =
start == 0 && end == text.length ? text : text.substring(start, end);
width = canvasContext.measureText(sub).width!;
width = canvasContext.measureText(sub).width!.toDouble();
}
_lastStart = start;

View File

@@ -137,7 +137,7 @@ class TextDimensions {
/// The height of the paragraph being measured.
double get height {
double cachedHeight = _readAndCacheMetrics().height;
double cachedHeight = _readAndCacheMetrics().height as double;
if (browserEngine == BrowserEngine.firefox &&
// In the flutter tester environment, we use a predictable-size for font
// measurement tests.
@@ -170,7 +170,7 @@ class TextHeightRuler {
final TextDimensions _dimensions = TextDimensions(domDocument.createElement('flt-paragraph'));
/// The alphabetic baseline for this ruler's [textHeightStyle].
late final double alphabeticBaseline = _probe.getBoundingClientRect().bottom;
late final double alphabeticBaseline = _probe.getBoundingClientRect().bottom.toDouble();
/// The height for this ruler's [textHeightStyle].
late final double height = _dimensions.height;

View File

@@ -724,15 +724,15 @@ class EditingState {
final DomHTMLInputElement element = domElement! as DomHTMLInputElement;
return EditingState(
text: element.value,
baseOffset: element.selectionStart?.toInt(),
extentOffset: element.selectionEnd?.toInt());
baseOffset: element.selectionStart,
extentOffset: element.selectionEnd);
} else if (domInstanceOfString(domElement, 'HTMLTextAreaElement')) {
final DomHTMLTextAreaElement element = domElement! as
DomHTMLTextAreaElement;
return EditingState(
text: element.value,
baseOffset: element.selectionStart?.toInt(),
extentOffset: element.selectionEnd?.toInt());
baseOffset: element.selectionStart,
extentOffset: element.selectionEnd);
} else {
throw UnsupportedError('Initialized with unsupported input type');
}

View File

@@ -247,14 +247,14 @@ class EngineFlutterWindow extends ui.SingletonFlutterWindow {
/// text editing to make sure inset is correctly reported to
/// framework.
final double docWidth =
domDocument.documentElement!.clientWidth;
domDocument.documentElement!.clientWidth.toDouble();
final double docHeight =
domDocument.documentElement!.clientHeight;
domDocument.documentElement!.clientHeight.toDouble();
windowInnerWidth = docWidth * devicePixelRatio;
windowInnerHeight = docHeight * devicePixelRatio;
} else {
windowInnerWidth = viewport.width! * devicePixelRatio;
windowInnerHeight = viewport.height! * devicePixelRatio;
windowInnerWidth = viewport.width!.toDouble() * devicePixelRatio;
windowInnerHeight = viewport.height!.toDouble() * devicePixelRatio;
}
} else {
windowInnerWidth = domWindow.innerWidth! * devicePixelRatio;
@@ -280,7 +280,7 @@ class EngineFlutterWindow extends ui.SingletonFlutterWindow {
windowInnerHeight =
domDocument.documentElement!.clientHeight * devicePixelRatio;
} else {
windowInnerHeight = viewport.height! * devicePixelRatio;
windowInnerHeight = viewport.height!.toDouble() * devicePixelRatio;
}
} else {
windowInnerHeight = domWindow.innerHeight! * devicePixelRatio;
@@ -309,8 +309,8 @@ class EngineFlutterWindow extends ui.SingletonFlutterWindow {
double width = 0;
if (domWindow.visualViewport != null) {
height =
domWindow.visualViewport!.height! * devicePixelRatio;
width = domWindow.visualViewport!.width! * devicePixelRatio;
domWindow.visualViewport!.height!.toDouble() * devicePixelRatio;
width = domWindow.visualViewport!.width!.toDouble() * devicePixelRatio;
} else {
height = domWindow.innerHeight! * devicePixelRatio;
width = domWindow.innerWidth! * devicePixelRatio;

View File

@@ -35,7 +35,7 @@ void testMain() {
test('pushTransform implements surface lifecycle', () {
testLayerLifeCycle((ui.SceneBuilder sceneBuilder, ui.EngineLayer? oldLayer) {
return sceneBuilder.pushTransform(
(Matrix4.identity()..scale(domWindow.devicePixelRatio)).toFloat64());
(Matrix4.identity()..scale(domWindow.devicePixelRatio as double)).toFloat64());
}, () {
return '''<s><flt-transform></flt-transform></s>''';
});
@@ -595,8 +595,8 @@ void testMain() {
final DomElement content = builder.build().webOnlyRootElement!;
final DomCanvasElement canvas = content.querySelector('canvas')! as DomCanvasElement;
final int unscaledWidth = canvas.width!.toInt();
final int unscaledHeight = canvas.height!.toInt();
final int unscaledWidth = canvas.width!;
final int unscaledHeight = canvas.height!;
// Force update to scene which will utilize reuse code path.
final SurfaceSceneBuilder builder2 = SurfaceSceneBuilder();
@@ -627,8 +627,8 @@ void testMain() {
final DomElement content = builder.build().webOnlyRootElement!;
final DomCanvasElement canvas = content.querySelector('canvas')! as DomCanvasElement;
final int unscaledWidth = canvas.width!.toInt();
final int unscaledHeight = canvas.height!.toInt();
final int unscaledWidth = canvas.width!;
final int unscaledHeight = canvas.height!;
// Force update to scene which will utilize reuse code path.
final SurfaceSceneBuilder builder2 = SurfaceSceneBuilder();

View File

@@ -160,7 +160,7 @@ void testMain() {
final SurfaceSceneBuilder builder1 = SurfaceSceneBuilder();
final PersistedTransform a1 =
builder1.pushTransform(
(Matrix4.identity()..scale(domWindow.devicePixelRatio)).toFloat64()) as PersistedTransform;
(Matrix4.identity()..scale(domWindow.devicePixelRatio as double)).toFloat64()) as PersistedTransform;
final PersistedOpacity b1 = builder1.pushOpacity(100) as PersistedOpacity;
final PersistedTransform c1 =
builder1.pushTransform(Matrix4.identity().toFloat64()) as PersistedTransform;
@@ -181,7 +181,7 @@ void testMain() {
final SurfaceSceneBuilder builder2 = SurfaceSceneBuilder();
final PersistedTransform a2 =
builder2.pushTransform(
(Matrix4.identity()..scale(domWindow.devicePixelRatio)).toFloat64(),
(Matrix4.identity()..scale(domWindow.devicePixelRatio as double)).toFloat64(),
oldLayer: a1) as PersistedTransform;
final PersistedTransform c2 =
builder2.pushTransform(Matrix4.identity().toFloat64(), oldLayer: c1) as PersistedTransform;