| // 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 'diagnostics_tree.dart'; |
| import 'error.dart'; |
| import 'find.dart'; |
| import 'frame_sync.dart'; |
| import 'geometry.dart'; |
| import 'gesture.dart'; |
| import 'health.dart'; |
| import 'layer_tree.dart'; |
| import 'message.dart'; |
| import 'render_tree.dart'; |
| import 'request_data.dart'; |
| import 'semantics.dart'; |
| import 'text.dart'; |
| import 'wait.dart'; |
| |
| /// A factory for deserializing [Finder]s. |
| mixin DeserializeFinderFactory { |
| /// Deserializes the finder from JSON generated by [SerializableFinder.serialize]. |
| SerializableFinder deserializeFinder(Map<String, String> json) { |
| final String? finderType = json['finderType']; |
| switch (finderType) { |
| case 'ByType': return ByType.deserialize(json); |
| case 'ByValueKey': return ByValueKey.deserialize(json); |
| case 'ByTooltipMessage': return ByTooltipMessage.deserialize(json); |
| case 'BySemanticsLabel': return BySemanticsLabel.deserialize(json); |
| case 'ByText': return ByText.deserialize(json); |
| case 'PageBack': return const PageBack(); |
| case 'Descendant': return Descendant.deserialize(json, this); |
| case 'Ancestor': return Ancestor.deserialize(json, this); |
| } |
| throw DriverError('Unsupported search specification type $finderType'); |
| } |
| } |
| |
| /// A factory for deserializing [Command]s. |
| mixin DeserializeCommandFactory { |
| /// Deserializes the finder from JSON generated by [Command.serialize] or [CommandWithTarget.serialize]. |
| Command deserializeCommand(Map<String, String> params, DeserializeFinderFactory finderFactory) { |
| final String? kind = params['command']; |
| switch(kind) { |
| case 'get_health': return GetHealth.deserialize(params); |
| case 'get_layer_tree': return GetLayerTree.deserialize(params); |
| case 'get_render_tree': return GetRenderTree.deserialize(params); |
| case 'enter_text': return EnterText.deserialize(params); |
| case 'get_text': return GetText.deserialize(params, finderFactory); |
| case 'request_data': return RequestData.deserialize(params); |
| case 'scroll': return Scroll.deserialize(params, finderFactory); |
| case 'scrollIntoView': return ScrollIntoView.deserialize(params, finderFactory); |
| case 'set_frame_sync': return SetFrameSync.deserialize(params); |
| case 'set_semantics': return SetSemantics.deserialize(params); |
| case 'set_text_entry_emulation': return SetTextEntryEmulation.deserialize(params); |
| case 'tap': return Tap.deserialize(params, finderFactory); |
| case 'waitFor': return WaitFor.deserialize(params, finderFactory); |
| case 'waitForAbsent': return WaitForAbsent.deserialize(params, finderFactory); |
| case 'waitForTappable': return WaitForTappable.deserialize(params, finderFactory); |
| case 'waitForCondition': return WaitForCondition.deserialize(params); |
| case 'waitUntilNoTransientCallbacks': return WaitForCondition.deserialize(params); |
| case 'waitUntilNoPendingFrame': return WaitForCondition.deserialize(params); |
| case 'waitUntilFirstFrameRasterized': return WaitForCondition.deserialize(params); |
| case 'get_semantics_id': return GetSemanticsId.deserialize(params, finderFactory); |
| case 'get_offset': return GetOffset.deserialize(params, finderFactory); |
| case 'get_diagnostics_tree': return GetDiagnosticsTree.deserialize(params, finderFactory); |
| } |
| |
| throw DriverError('Unsupported command kind $kind'); |
| } |
| } |