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 {