Make the deviceDiscovery API overridable (#27378)
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index d932fd4..dc2a844 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -25,21 +25,20 @@
/// A class to get all available devices.
class DeviceManager {
+
/// Constructing DeviceManagers is cheap; they only do expensive work if some
/// of their methods are called.
- DeviceManager() {
- // Register the known discoverers.
- _deviceDiscoverers.add(AndroidDevices());
- _deviceDiscoverers.add(IOSDevices());
- _deviceDiscoverers.add(IOSSimulators());
- _deviceDiscoverers.add(FuchsiaDevices());
- _deviceDiscoverers.add(FlutterTesterDevices());
- _deviceDiscoverers.add(MacOSDevices());
- _deviceDiscoverers.add(LinuxDevices());
- _deviceDiscoverers.add(WindowsDevices());
- }
-
- final List<DeviceDiscovery> _deviceDiscoverers = <DeviceDiscovery>[];
+ List<DeviceDiscovery> get deviceDiscoverers => _deviceDiscoverers;
+ final List<DeviceDiscovery> _deviceDiscoverers = List<DeviceDiscovery>.unmodifiable(<DeviceDiscovery>[
+ AndroidDevices(),
+ IOSDevices(),
+ IOSSimulators(),
+ FuchsiaDevices(),
+ FlutterTesterDevices(),
+ MacOSDevices(),
+ LinuxDevices(),
+ WindowsDevices(),
+ ]);
String _specifiedDeviceId;
@@ -91,7 +90,7 @@
}
Iterable<DeviceDiscovery> get _platformDiscoverers {
- return _deviceDiscoverers.where((DeviceDiscovery discoverer) => discoverer.supportsPlatform);
+ return deviceDiscoverers.where((DeviceDiscovery discoverer) => discoverer.supportsPlatform);
}
/// Return the list of all connected devices.
diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart
index 3243d28..92ae65e 100644
--- a/packages/flutter_tools/test/src/context.dart
+++ b/packages/flutter_tools/test/src/context.dart
@@ -179,6 +179,9 @@
@override
Future<List<String>> getDeviceDiagnostics() async => <String>[];
+
+ @override
+ List<DeviceDiscovery> get deviceDiscoverers => <DeviceDiscovery>[];
}
class MockAndroidLicenseValidator extends AndroidLicenseValidator {