blob: 69569b085b921afcd3b119fa9284f358f28eb035 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:html' as html;
import 'dart:typed_data';
import 'package:ui/src/engine.dart';
import 'package:ui/ui.dart';
/// Contains method name that was called on [MockEngineCanvas] and arguments
/// that were passed.
class MockCanvasCall {
MockCanvasCall._({
required this.methodName,
this.arguments,
});
final String methodName;
final dynamic arguments;
@override
String toString() {
return '$MockCanvasCall($methodName, $arguments)';
}
}
/// A fake implementation of [EngineCanvas] that logs calls to its methods but
/// doesn't actually paint anything.
///
/// Useful for testing interactions between upper layers of the system with
/// canvases.
class MockEngineCanvas implements EngineCanvas {
final List<MockCanvasCall> methodCallLog = <MockCanvasCall>[];
@override
html.Element get rootElement => _rootElement;
html.Element _rootElement = html.DivElement();
void _called(String methodName, {dynamic arguments}) {
methodCallLog.add(MockCanvasCall._(
methodName: methodName,
arguments: arguments,
));
}
@override
void dispose() {
_called('dispose');
}
@override
void clear() {
_called('clear');
}
@override
void save() {
_called('save');
}
@override
void restore() {
_called('restore');
}
@override
void translate(double dx, double dy) {
_called('translate', arguments: <String, double>{
'dx': dx,
'dy': dy,
});
}
@override
void scale(double sx, double sy) {
_called('scale', arguments: <String, double>{
'sx': sx,
'sy': sy,
});
}
@override
void rotate(double radians) {
_called('rotate', arguments: radians);
}
@override
void skew(double sx, double sy) {
_called('skew', arguments: <String, double>{
'sx': sx,
'sy': sy,
});
}
@override
void transform(Float32List matrix4) {
_called('transform', arguments: matrix4);
}
@override
void clipRect(Rect rect, ClipOp op) {
_called('clipRect', arguments: rect);
}
@override
void clipRRect(RRect rrect) {
_called('clipRRect', arguments: rrect);
}
@override
void clipPath(Path path) {
_called('clipPath', arguments: path);
}
@override
void drawColor(Color color, BlendMode blendMode) {
_called('drawColor', arguments: <String, dynamic>{
'color': color,
'blendMode': blendMode,
});
}
@override
void drawLine(Offset p1, Offset p2, SurfacePaintData paint) {
_called('drawLine', arguments: <String, dynamic>{
'p1': p1,
'p2': p2,
'paint': paint,
});
}
@override
void drawPaint(SurfacePaintData paint) {
_called('drawPaint', arguments: paint);
}
@override
void drawRect(Rect rect, SurfacePaintData paint) {
_called('drawRect', arguments: <String, dynamic>{
'rect': rect,
'paint': paint,
});
}
@override
void drawRRect(RRect rrect, SurfacePaintData paint) {
_called('drawRRect', arguments: <String, dynamic>{
'rrect': rrect,
'paint': paint,
});
}
@override
void drawDRRect(RRect outer, RRect inner, SurfacePaintData paint) {
_called('drawDRRect', arguments: <String, dynamic>{
'outer': outer,
'inner': inner,
'paint': paint,
});
}
@override
void drawOval(Rect rect, SurfacePaintData paint) {
_called('drawOval', arguments: <String, dynamic>{
'rect': rect,
'paint': paint,
});
}
@override
void drawCircle(Offset c, double radius, SurfacePaintData paint) {
_called('drawCircle', arguments: <String, dynamic>{
'c': c,
'radius': radius,
'paint': paint,
});
}
@override
void drawPath(Path path, SurfacePaintData paint) {
_called('drawPath', arguments: <String, dynamic>{
'path': path,
'paint': paint,
});
}
@override
void drawShadow(
Path path, Color color, double elevation, bool transparentOccluder) {
_called('drawShadow', arguments: <String, dynamic>{
'path': path,
'color': color,
'elevation': elevation,
'transparentOccluder': transparentOccluder,
});
}
@override
void drawImage(Image image, Offset p, SurfacePaintData paint) {
_called('drawImage', arguments: <String, dynamic>{
'image': image,
'p': p,
'paint': paint,
});
}
@override
void drawImageRect(Image image, Rect src, Rect dst, SurfacePaintData paint) {
_called('drawImageRect', arguments: <String, dynamic>{
'image': image,
'src': src,
'dst': dst,
'paint': paint,
});
}
@override
void drawParagraph(Paragraph paragraph, Offset offset) {
_called('drawParagraph', arguments: <String, dynamic>{
'paragraph': paragraph,
'offset': offset,
});
}
@override
void drawVertices(
Vertices vertices, BlendMode blendMode, SurfacePaintData paint) {
_called('drawVertices', arguments: <String, dynamic>{
'vertices': vertices,
'blendMode': blendMode,
'paint': paint,
});
}
@override
void drawPoints(PointMode pointMode, Float32List points, SurfacePaintData paint) {
_called('drawPoints', arguments: <String, dynamic>{
'pointMode': pointMode,
'points': points,
'paint': paint,
});
}
@override
void endOfPaint() {
_called('endOfPaint', arguments: <String, dynamic>{});
}
}