Make debugSemantics available to profile mode (#58620)
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 a23d91d..0e5d552 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 @@
}
void main([List<String> args = const <String>[]]) {
+ final bool withSemantics = args.contains('--with_semantics');
group('flutter gallery transitions', () {
FlutterDriver driver;
setUpAll(() async {
@@ -197,8 +198,7 @@
// 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 @@
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 eaaa3ef..a6abe70 100644
--- a/packages/flutter/lib/src/rendering/object.dart
+++ b/packages/flutter/lib/src/rendering/object.dart
@@ -2482,15 +2482,13 @@
/// 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.