| // 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 'deserialization_factory.dart'; |
| import 'enum_util.dart'; |
| import 'find.dart'; |
| import 'message.dart'; |
| |
| /// [DiagnosticsNode] tree types that can be requested by [GetDiagnosticsTree]. |
| enum DiagnosticsType { |
| /// The [DiagnosticsNode] tree formed by [RenderObject]s. |
| renderObject, |
| |
| /// The [DiagnosticsNode] tree formed by [Widget]s. |
| widget, |
| } |
| |
| EnumIndex<DiagnosticsType> _diagnosticsTypeIndex = EnumIndex<DiagnosticsType>(DiagnosticsType.values); |
| |
| /// A Flutter Driver command to retrieve the JSON-serialized [DiagnosticsNode] |
| /// tree of the object identified by [finder]. |
| /// |
| /// The [DiagnosticsType] of the [DiagnosticsNode] tree returned is specified by |
| /// [diagnosticsType]. |
| class GetDiagnosticsTree extends CommandWithTarget { |
| /// Creates a [GetDiagnosticsTree] Flutter Driver command. |
| GetDiagnosticsTree(SerializableFinder finder, this.diagnosticsType, { |
| this.subtreeDepth = 0, |
| this.includeProperties = true, |
| Duration? timeout, |
| }) : assert(subtreeDepth != null), |
| assert(includeProperties != null), |
| super(finder, timeout: timeout); |
| |
| /// Deserializes this command from the value generated by [serialize]. |
| GetDiagnosticsTree.deserialize(Map<String, String> json, DeserializeFinderFactory finderFactory) |
| : subtreeDepth = int.parse(json['subtreeDepth']!), |
| includeProperties = json['includeProperties'] == 'true', |
| diagnosticsType = _diagnosticsTypeIndex.lookupBySimpleName(json['diagnosticsType']!), |
| super.deserialize(json, finderFactory); |
| |
| /// How many levels of children to include in the JSON result. |
| /// |
| /// Defaults to zero, which will only return the [DiagnosticsNode] information |
| /// of the object identified by [finder]. |
| final int subtreeDepth; |
| |
| /// Whether the properties of a [DiagnosticsNode] should be included. |
| final bool includeProperties; |
| |
| /// The type of [DiagnosticsNode] tree that is requested. |
| final DiagnosticsType diagnosticsType; |
| |
| @override |
| Map<String, String> serialize() => super.serialize()..addAll(<String, String>{ |
| 'subtreeDepth': subtreeDepth.toString(), |
| 'includeProperties': includeProperties.toString(), |
| 'diagnosticsType': _diagnosticsTypeIndex.toSimpleName(diagnosticsType), |
| }); |
| |
| @override |
| String get kind => 'get_diagnostics_tree'; |
| } |
| |
| /// The result of a [GetDiagnosticsTree] command. |
| class DiagnosticsTreeResult extends Result { |
| /// Creates a [DiagnosticsTreeResult]. |
| const DiagnosticsTreeResult(this.json); |
| |
| /// The JSON encoded [DiagnosticsNode] tree requested by the |
| /// [GetDiagnosticsTree] command. |
| final Map<String, dynamic> json; |
| |
| @override |
| Map<String, dynamic> toJson() => json; |
| } |