diff --git a/packages/flutter_tools/doc/daemon.md b/packages/flutter_tools/doc/daemon.md index ac9d9c4e34f..4658a6eea04 100644 --- a/packages/flutter_tools/doc/daemon.md +++ b/packages/flutter_tools/doc/daemon.md @@ -199,7 +199,7 @@ This is sent when a device is disconnected (and polling has been enabled via `en #### emulator.getEmulators -Return a list of all available emulators. The `params` field will be a List; each item is a map with the fields `id` and `name`. +Return a list of all available emulators. The `params` field will be a List; each item is a map with the fields `id`, `name`, `category` and `platformType`. `category` and `platformType` values match the values described in `device.getDevices`. #### emulator.launch @@ -258,7 +258,8 @@ See the [source](https://github.com/flutter/flutter/blob/master/packages/flutter ## Changelog -- 0.5.1: Added `platformType`, `ephemeral`, and `category` field to device. +- 0.5.2: Added `platformType` and `category` fields to emulator. +- 0.5.1: Added `platformType`, `ephemeral`, and `category` fields to device. - 0.5.0: Added `daemon.getSupportedPlatforms` command - 0.4.2: Added `app.detach` command - 0.4.1: Added `flutter attach --machine` diff --git a/packages/flutter_tools/lib/src/android/android_emulator.dart b/packages/flutter_tools/lib/src/android/android_emulator.dart index ea5413323a4..4dc67237907 100644 --- a/packages/flutter_tools/lib/src/android/android_emulator.dart +++ b/packages/flutter_tools/lib/src/android/android_emulator.dart @@ -11,6 +11,7 @@ import '../android/android_workflow.dart'; import '../base/file_system.dart'; import '../base/io.dart'; import '../base/process_manager.dart'; +import '../device.dart'; import '../emulator.dart'; import 'android_sdk.dart'; @@ -40,6 +41,12 @@ class AndroidEmulator extends Emulator { @override String get label => _prop('avd.ini.displayname'); + @override + Category get category => Category.mobile; + + @override + PlatformType get platformType => PlatformType.android; + String _prop(String name) => _properties != null ? _properties[name] : null; @override diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index 708bddfae94..9fc2d83588c 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart @@ -26,7 +26,7 @@ import '../run_hot.dart'; import '../runner/flutter_command.dart'; import '../vmservice.dart'; -const String protocolVersion = '0.5.1'; +const String protocolVersion = '0.5.2'; /// A server process command. This command will start up a long-lived server. /// It reads JSON-RPC based commands from stdin, executes them, and returns @@ -783,6 +783,8 @@ Map _emulatorToMap(Emulator emulator) { return { 'id': emulator.id, 'name': emulator.name, + 'category': emulator.category?.toString(), + 'platformType': emulator.platformType?.toString(), }; } diff --git a/packages/flutter_tools/lib/src/emulator.dart b/packages/flutter_tools/lib/src/emulator.dart index 96f20f88573..a9b53a0053d 100644 --- a/packages/flutter_tools/lib/src/emulator.dart +++ b/packages/flutter_tools/lib/src/emulator.dart @@ -10,6 +10,7 @@ import 'android/android_sdk.dart'; import 'base/context.dart'; import 'base/io.dart' show ProcessResult; import 'base/process_manager.dart'; +import 'device.dart'; import 'globals.dart'; import 'ios/ios_emulators.dart'; @@ -218,6 +219,8 @@ abstract class Emulator { String get name; String get manufacturer; String get label; + Category get category; + PlatformType get platformType; @override int get hashCode => id.hashCode; diff --git a/packages/flutter_tools/lib/src/ios/ios_emulators.dart b/packages/flutter_tools/lib/src/ios/ios_emulators.dart index df34c23454b..422034bfdab 100644 --- a/packages/flutter_tools/lib/src/ios/ios_emulators.dart +++ b/packages/flutter_tools/lib/src/ios/ios_emulators.dart @@ -6,6 +6,7 @@ import 'dart:async'; import '../base/platform.dart'; import '../base/process.dart'; +import '../device.dart'; import '../emulator.dart'; import '../globals.dart'; import '../macos/xcode.dart'; @@ -34,6 +35,12 @@ class IOSEmulator extends Emulator { @override String get label => null; + @override + Category get category => Category.mobile; + + @override + PlatformType get platformType => PlatformType.ios; + @override Future launch() async { Future launchSimulator(List additionalArgs) async { diff --git a/packages/flutter_tools/test/android/android_emulator_test.dart b/packages/flutter_tools/test/android/android_emulator_test.dart index 0e2a3a0ad00..7afdb1cd1de 100644 --- a/packages/flutter_tools/test/android/android_emulator_test.dart +++ b/packages/flutter_tools/test/android/android_emulator_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. import 'package:flutter_tools/src/android/android_emulator.dart'; +import 'package:flutter_tools/src/device.dart'; import '../src/common.dart'; import '../src/context.dart'; @@ -38,6 +39,8 @@ void main() { expect(emulator.name, name); expect(emulator.manufacturer, manufacturer); expect(emulator.label, label); + expect(emulator.category, Category.mobile); + expect(emulator.platformType, PlatformType.android); }); testUsingContext('parses ini files', () { const String iniFile = ''' diff --git a/packages/flutter_tools/test/emulator_test.dart b/packages/flutter_tools/test/emulator_test.dart index b0292bcf467..25c24f39ff7 100644 --- a/packages/flutter_tools/test/emulator_test.dart +++ b/packages/flutter_tools/test/emulator_test.dart @@ -9,6 +9,7 @@ import 'package:collection/collection.dart' show ListEquality; import 'package:flutter_tools/src/android/android_sdk.dart'; import 'package:flutter_tools/src/base/config.dart'; import 'package:flutter_tools/src/base/io.dart'; +import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/emulator.dart'; import 'package:flutter_tools/src/ios/ios_emulators.dart'; import 'package:flutter_tools/src/macos/xcode.dart'; @@ -171,6 +172,12 @@ class _MockEmulator extends Emulator { @override final String label; + @override + Category get category => Category.mobile; + + @override + PlatformType get platformType => PlatformType.android; + @override Future launch() { throw UnimplementedError('Not implemented in Mock');