From c5318f7f07fb16a7652f369ccba453b14bca513c Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 3 Jun 2020 12:32:35 -0700 Subject: [PATCH] Make debugSemantics available to profile mode (#58620) --- .../test_driver/transitions_perf_test.dart | 10 ++++++++-- packages/flutter/lib/src/rendering/object.dart | 12 +++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_test.dart b/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_test.dart index a23d91dd6fa..0e5d55242c1 100644 --- a/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_test.dart +++ b/dev/integration_tests/flutter_gallery/test_driver/transitions_perf_test.dart @@ -190,6 +190,7 @@ Future runDemos(List demos, FlutterDriver driver) async { } void main([List args = const []]) { + final bool withSemantics = args.contains('--with_semantics'); group('flutter gallery transitions', () { FlutterDriver driver; setUpAll(() async { @@ -197,8 +198,7 @@ void main([List args = const []]) { // Wait for the first frame to be rasterized. await driver.waitUntilFirstFrameRasterized(); - - if (args.contains('--with_semantics')) { + if (withSemantics) { print('Enabeling semantics...'); await driver.setSemantics(true); } @@ -214,6 +214,12 @@ void main([List args = const []]) { await driver.close(); }); + test('find.bySemanticsLabel', () async { + // Assert that we can use semantics related finders in profile mode. + final int id = await driver.getSemanticsId(find.bySemanticsLabel('Material')); + expect(id, greaterThan(-1)); + }, skip: !withSemantics); + test('all demos', () async { // Collect timeline data for just a limited set of demos to avoid OOMs. final Timeline timeline = await driver.traceAction( diff --git a/packages/flutter/lib/src/rendering/object.dart b/packages/flutter/lib/src/rendering/object.dart index eaaa3efdafc..a6abe7059a0 100644 --- a/packages/flutter/lib/src/rendering/object.dart +++ b/packages/flutter/lib/src/rendering/object.dart @@ -2482,15 +2482,13 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im /// render objects in production, obtain a [SemanticsHandle] from /// [PipelineOwner.ensureSemantics]. /// - /// Only valid when asserts are enabled. In release builds, always returns + /// Only valid in debug and profile mode. In release builds, always returns /// null. SemanticsNode get debugSemantics { - SemanticsNode result; - assert(() { - result = _semantics; - return true; - }()); - return result; + if (!kReleaseMode) { + return _semantics; + } + return null; } /// Removes all semantics from this render object and its descendants.