blob: c83aa687603050ac4a7dac17de066d4093792b6b [file] [log] [blame]
// Copyright 2014 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:ui' as ui;
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
final List<String> log = <String>[];
void main() {
final PaintingMocksTestRenderingFlutterBinding binding = PaintingMocksTestRenderingFlutterBinding.ensureInitialized();
test('createSceneBuilder et al', () async {
final RenderView root = RenderView(
view: binding.platformDispatcher.views.single,
configuration: const ViewConfiguration(),
);
root.attach(PipelineOwner());
root.prepareInitialFrame();
expect(log, isEmpty);
root.compositeFrame();
expect(log, <String>['createSceneBuilder']);
log.clear();
final PaintingContext context = PaintingContext(ContainerLayer(), Rect.zero);
expect(log, isEmpty);
context.canvas;
expect(log, <String>['createPictureRecorder', 'createCanvas']);
log.clear();
context.addLayer(ContainerLayer());
expect(log, isEmpty);
context.canvas;
expect(log, <String>['createPictureRecorder', 'createCanvas']);
log.clear();
});
}
class PaintingMocksTestRenderingFlutterBinding extends BindingBase with SchedulerBinding, ServicesBinding, GestureBinding, PaintingBinding, SemanticsBinding, RendererBinding {
@override
void initInstances() {
super.initInstances();
_instance = this;
}
static PaintingMocksTestRenderingFlutterBinding get instance => BindingBase.checkInstance(_instance);
static PaintingMocksTestRenderingFlutterBinding? _instance;
static PaintingMocksTestRenderingFlutterBinding ensureInitialized() {
if (PaintingMocksTestRenderingFlutterBinding._instance == null) {
PaintingMocksTestRenderingFlutterBinding();
}
return PaintingMocksTestRenderingFlutterBinding.instance;
}
@override
ui.SceneBuilder createSceneBuilder() {
log.add('createSceneBuilder');
return super.createSceneBuilder();
}
@override
ui.PictureRecorder createPictureRecorder() {
log.add('createPictureRecorder');
return super.createPictureRecorder();
}
@override
Canvas createCanvas(ui.PictureRecorder recorder) {
log.add('createCanvas');
return super.createCanvas(recorder);
}
}