From 2ccf3f877da3607d264ab01798598ffc40c2280d Mon Sep 17 00:00:00 2001 From: liyuqian Date: Fri, 31 Jan 2020 01:33:01 +0800 Subject: [PATCH] Print more layer debug info (#49679) --- packages/flutter/lib/src/rendering/layer.dart | 6 ++++++ .../test/foundation/service_extensions_test.dart | 1 + packages/flutter/test/rendering/layers_test.dart | 15 +++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/packages/flutter/lib/src/rendering/layer.dart b/packages/flutter/lib/src/rendering/layer.dart index f940491868..67c6445965 100644 --- a/packages/flutter/lib/src/rendering/layer.dart +++ b/packages/flutter/lib/src/rendering/layer.dart @@ -460,6 +460,7 @@ abstract class Layer extends AbstractNode with DiagnosticableTreeMixin { super.debugFillProperties(properties); properties.add(DiagnosticsProperty('owner', owner, level: parent != null ? DiagnosticLevel.hidden : DiagnosticLevel.info, defaultValue: null)); properties.add(DiagnosticsProperty('creator', debugCreator, defaultValue: null, level: DiagnosticLevel.debug)); + properties.add(DiagnosticsProperty('engine layer', describeIdentity(_engineLayer))); } } @@ -535,6 +536,11 @@ class PictureLayer extends Layer { void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties.add(DiagnosticsProperty('paint bounds', canvasBounds)); + properties.add(DiagnosticsProperty('picture', describeIdentity(_picture))); + properties.add(DiagnosticsProperty( + 'raster cache hints', + 'isComplex = $isComplexHint, willChange = $willChangeHint'), + ); } @override diff --git a/packages/flutter/test/foundation/service_extensions_test.dart b/packages/flutter/test/foundation/service_extensions_test.dart index ab0e26b165..f8a598b211 100644 --- a/packages/flutter/test/foundation/service_extensions_test.dart +++ b/packages/flutter/test/foundation/service_extensions_test.dart @@ -270,6 +270,7 @@ void main() { r'TransformLayer#[0-9a-f]{5}\n' r' owner: RenderView#[0-9a-f]{5}\n' r' creator: RenderView\n' + r' engine layer: (TransformEngineLayer|PersistedTransform)#[0-9a-f]{5}\n' r' offset: Offset\(0\.0, 0\.0\)\n' r' transform:\n' r' \[0] 3\.0,0\.0,0\.0,0\.0\n' diff --git a/packages/flutter/test/rendering/layers_test.dart b/packages/flutter/test/rendering/layers_test.dart index 231e15c455..43fc6cd53f 100644 --- a/packages/flutter/test/rendering/layers_test.dart +++ b/packages/flutter/test/rendering/layers_test.dart @@ -256,6 +256,21 @@ void main() { ); }); + test('PictureLayer prints picture, engine layer, and raster cache hints in debug info', () { + final PictureRecorder recorder = PictureRecorder(); + final Canvas canvas = Canvas(recorder); + canvas.drawPaint(Paint()); + final Picture picture = recorder.endRecording(); + final PictureLayer layer = PictureLayer(const Rect.fromLTRB(0, 0, 1, 1)); + layer.picture = picture; + layer.isComplexHint = true; + layer.willChangeHint = false; + final List info = _getDebugInfo(layer); + expect(info, contains('picture: ${describeIdentity(picture)}')); + expect(info, contains('engine layer: ${describeIdentity(null)}')); + expect(info, contains('raster cache hints: isComplex = true, willChange = false')); + }); + test('mutating PictureLayer fields triggers needsAddToScene', () { final PictureLayer pictureLayer = PictureLayer(Rect.zero); checkNeedsAddToScene(pictureLayer, () {