// 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:developer'; import 'package:flutter/foundation.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/widgets.dart'; class TestWidget extends LeafRenderObjectWidget { const TestWidget({ super.key, }); @override RenderObject createRenderObject(BuildContext context) => RenderTest(); @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); // This string is searched for verbatim by dev/bots/test.dart: properties.add(MessageProperty('test', 'TestWidget.debugFillProperties called')); } } class RenderTest extends RenderBox { @override bool get sizedByParent => true; @override void performResize() { Timeline.instantSync('RenderTest.performResize called'); size = constraints.biggest; } @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); // This string is searched for verbatim by dev/bots/test.dart: properties.add(MessageProperty('test', 'RenderTest.debugFillProperties called')); } } Future<void> main() async { // This section introduces strings that we can search for in dev/bots/test.dart // as a sanity check: if (kDebugMode) { print('BUILT IN DEBUG MODE'); } if (kProfileMode) { print('BUILT IN PROFILE MODE'); } if (kReleaseMode) { print('BUILT IN RELEASE MODE'); } // The point of this file is to make sure that toTimelineArguments is not // called when we have debugProfileBuildsEnabled (et al) turned on. If that // method is not called then the debugFillProperties methods above should also // not get called and we should end up tree-shaking the entire Diagnostics // logic out of the app. The dev/bots/test.dart test checks for this by // looking for the strings in the methods above. debugProfileBuildsEnabled = true; debugProfileLayoutsEnabled = true; debugProfilePaintsEnabled = true; runApp(const TestWidget()); }