From e9b935b00e38ecaa504b29b479191bbabb13396a Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 26 Feb 2019 12:02:27 -0800 Subject: [PATCH] use deviceManager discovery in daemon protocol (#28341) --- .../lib/src/commands/daemon.dart | 31 +++++-------------- packages/flutter_tools/lib/src/device.dart | 15 ++++++--- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index 3e522a829e..e0b8172eb4 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart @@ -6,7 +6,6 @@ import 'dart:async'; import 'package:meta/meta.dart'; -import '../android/android_device.dart'; import '../base/common.dart'; import '../base/context.dart'; import '../base/file_system.dart'; @@ -17,22 +16,14 @@ import '../base/utils.dart'; import '../build_info.dart'; import '../cache.dart'; import '../convert.dart'; -import '../desktop.dart'; import '../device.dart'; import '../emulator.dart'; -import '../fuchsia/fuchsia_device.dart'; import '../globals.dart'; -import '../ios/devices.dart'; -import '../ios/simulators.dart'; -import '../linux/linux_device.dart'; -import '../macos/macos_device.dart'; import '../resident_runner.dart'; import '../run_cold.dart'; import '../run_hot.dart'; import '../runner/flutter_command.dart'; -import '../tester/flutter_tester.dart'; import '../vmservice.dart'; -import '../windows/windows_device.dart'; const String protocolVersion = '0.4.2'; @@ -589,26 +580,20 @@ class DeviceDomain extends Domain { registerHandler('forward', forward); registerHandler('unforward', unforward); - addDeviceDiscoverer(FuchsiaDevices()); - addDeviceDiscoverer(AndroidDevices()); - addDeviceDiscoverer(IOSDevices()); - addDeviceDiscoverer(IOSSimulators()); - addDeviceDiscoverer(FlutterTesterDevices()); - if (flutterDesktopEnabled) { - addDeviceDiscoverer(MacOSDevices()); - addDeviceDiscoverer(LinuxDevices()); - addDeviceDiscoverer(WindowsDevices()); - } + // Use the device manager discovery so that client provided device types + // are usable via the daemon protocol. + deviceManager.deviceDiscoverers.forEach(addDeviceDiscoverer); } - void addDeviceDiscoverer(PollingDeviceDiscovery discoverer) { + void addDeviceDiscoverer(DeviceDiscovery discoverer) { if (!discoverer.supportsPlatform) return; _discoverers.add(discoverer); - - discoverer.onAdded.listen(_onDeviceEvent('device.added')); - discoverer.onRemoved.listen(_onDeviceEvent('device.removed')); + if (discoverer is PollingDeviceDiscovery) { + discoverer.onAdded.listen(_onDeviceEvent('device.added')); + discoverer.onRemoved.listen(_onDeviceEvent('device.removed')); + } } Future _serializeDeviceEvents = Future.value(); diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index 65c46cad6f..52a315357e 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart @@ -11,6 +11,7 @@ import 'base/context.dart'; import 'base/file_system.dart'; import 'base/utils.dart'; import 'build_info.dart'; +import 'desktop.dart'; import 'fuchsia/fuchsia_device.dart'; import 'globals.dart'; @@ -35,10 +36,16 @@ class DeviceManager { IOSSimulators(), FuchsiaDevices(), FlutterTesterDevices(), - MacOSDevices(), - LinuxDevices(), - WindowsDevices(), - ]); + ] + _conditionalDesktopDevices); + + /// Only add desktop devices if the flag is enabled. + static List get _conditionalDesktopDevices { + return flutterDesktopEnabled ? [ + MacOSDevices(), + LinuxDevices(), + WindowsDevices(), + ] : []; + } String _specifiedDeviceId;