| // 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()); | |
| } |