[flutter_tools] remove globals from device manager, flutter tester (#61139)
Remove global variables from device manager, flutter tester devices and update tests
diff --git a/packages/flutter_tools/lib/src/build_info.dart b/packages/flutter_tools/lib/src/build_info.dart
index 29381e9..bbb3e2b 100644
--- a/packages/flutter_tools/lib/src/build_info.dart
+++ b/packages/flutter_tools/lib/src/build_info.dart
@@ -4,7 +4,9 @@
import 'package:meta/meta.dart';
+import 'base/config.dart';
import 'base/context.dart';
+import 'base/file_system.dart';
import 'base/logger.dart';
import 'base/utils.dart';
import 'build_system/targets/icon_tree_shaker.dart';
@@ -612,15 +614,20 @@
}
/// Returns the top-level build output directory.
-String getBuildDirectory() {
+String getBuildDirectory([Config config, FileSystem fileSystem]) {
// TODO(johnmccutchan): Stop calling this function as part of setting
// up command line argument processing.
- if (context == null || globals.config == null) {
+ if (context == null) {
+ return 'build';
+ }
+ final Config localConfig = config ?? globals.config;
+ final FileSystem localFilesystem = fileSystem ?? globals.fs;
+ if (localConfig == null) {
return 'build';
}
- final String buildDir = globals.config.getValue('build-dir') as String ?? 'build';
- if (globals.fs.path.isAbsolute(buildDir)) {
+ final String buildDir = localConfig.getValue('build-dir') as String ?? 'build';
+ if (localFilesystem.path.isAbsolute(buildDir)) {
throw Exception(
'build-dir config setting in ${globals.config.configPath} must be relative');
}
diff --git a/packages/flutter_tools/lib/src/context_runner.dart b/packages/flutter_tools/lib/src/context_runner.dart
index 43a3748..53f355e 100644
--- a/packages/flutter_tools/lib/src/context_runner.dart
+++ b/packages/flutter_tools/lib/src/context_runner.dart
@@ -30,7 +30,7 @@
import 'features.dart';
import 'fuchsia/fuchsia_device.dart' show FuchsiaDeviceTools;
import 'fuchsia/fuchsia_sdk.dart' show FuchsiaSdk, FuchsiaArtifacts;
-import 'fuchsia/fuchsia_workflow.dart' show FuchsiaWorkflow;
+import 'fuchsia/fuchsia_workflow.dart' show FuchsiaWorkflow, fuchsiaWorkflow;
import 'globals.dart' as globals;
import 'ios/ios_workflow.dart';
import 'ios/simulators.dart';
@@ -124,7 +124,22 @@
client: globals.httpClientFactory?.call() ?? HttpClient(),
),
DevFSConfig: () => DevFSConfig(),
- DeviceManager: () => FlutterDeviceManager(),
+ DeviceManager: () => FlutterDeviceManager(
+ logger: globals.logger,
+ processManager: globals.processManager,
+ platform: globals.platform,
+ androidSdk: globals.androidSdk,
+ iosSimulatorUtils: globals.iosSimulatorUtils,
+ featureFlags: featureFlags,
+ fileSystem: globals.fs,
+ iosWorkflow: globals.iosWorkflow,
+ artifacts: globals.artifacts,
+ flutterVersion: globals.flutterVersion,
+ androidWorkflow: androidWorkflow,
+ config: globals.config,
+ fuchsiaWorkflow: fuchsiaWorkflow,
+ xcDevice: globals.xcdevice,
+ ),
Doctor: () => Doctor(logger: globals.logger),
DoctorValidatorsProvider: () => DoctorValidatorsProvider.defaultInstance,
EmulatorManager: () => EmulatorManager(
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 2b9912a..2e1d158 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -6,15 +6,20 @@
import 'dart:math' as math;
import 'package:meta/meta.dart';
+import 'package:process/process.dart';
import 'package:vm_service/vm_service.dart' as vm_service;
import 'android/android_device_discovery.dart';
+import 'android/android_sdk.dart';
import 'android/android_workflow.dart';
import 'application_package.dart';
import 'artifacts.dart';
+import 'base/config.dart';
import 'base/context.dart';
import 'base/file_system.dart';
import 'base/io.dart';
+import 'base/logger.dart';
+import 'base/platform.dart';
import 'base/user_messages.dart';
import 'base/utils.dart';
import 'build_info.dart';
@@ -24,11 +29,14 @@
import 'fuchsia/fuchsia_workflow.dart';
import 'globals.dart' as globals;
import 'ios/devices.dart';
+import 'ios/ios_workflow.dart';
import 'ios/simulators.dart';
import 'linux/linux_device.dart';
import 'macos/macos_device.dart';
+import 'macos/xcode.dart';
import 'project.dart';
import 'tester/flutter_tester.dart';
+import 'version.dart';
import 'web/web_device.dart';
import 'windows/windows_device.dart';
@@ -269,42 +277,68 @@
}
class FlutterDeviceManager extends DeviceManager {
- @override
- final List<DeviceDiscovery> deviceDiscoverers = <DeviceDiscovery>[
+ FlutterDeviceManager({
+ @required Logger logger,
+ @required Platform platform,
+ @required ProcessManager processManager,
+ @required FileSystem fileSystem,
+ @required AndroidSdk androidSdk,
+ @required FeatureFlags featureFlags,
+ @required IOSSimulatorUtils iosSimulatorUtils,
+ @required XCDevice xcDevice,
+ @required AndroidWorkflow androidWorkflow,
+ @required IOSWorkflow iosWorkflow,
+ @required FuchsiaWorkflow fuchsiaWorkflow,
+ @required FlutterVersion flutterVersion,
+ @required Config config,
+ @required Artifacts artifacts,
+ }) : deviceDiscoverers = <DeviceDiscovery>[
AndroidDevices(
- logger: globals.logger,
- androidSdk: globals.androidSdk,
+ logger: logger,
+ androidSdk: androidSdk,
androidWorkflow: androidWorkflow,
- processManager: globals.processManager,
+ processManager: processManager,
),
IOSDevices(
- platform: globals.platform,
- xcdevice: globals.xcdevice,
- iosWorkflow: globals.iosWorkflow,
- logger: globals.logger,
+ platform: platform,
+ xcdevice: xcDevice,
+ iosWorkflow: iosWorkflow,
+ logger: logger,
),
- IOSSimulators(iosSimulatorUtils: globals.iosSimulatorUtils),
+ IOSSimulators(
+ iosSimulatorUtils: iosSimulatorUtils,
+ ),
FuchsiaDevices(
fuchsiaSdk: fuchsiaSdk,
- logger: globals.logger,
+ logger: logger,
fuchsiaWorkflow: fuchsiaWorkflow,
- platform: globals.platform,
+ platform: platform,
),
- FlutterTesterDevices(),
+ FlutterTesterDevices(
+ fileSystem: fileSystem,
+ flutterVersion: flutterVersion,
+ processManager: processManager,
+ config: config,
+ logger: logger,
+ artifacts: artifacts,
+ ),
MacOSDevices(),
LinuxDevices(
- platform: globals.platform,
+ platform: platform,
featureFlags: featureFlags,
),
WindowsDevices(),
WebDevices(
featureFlags: featureFlags,
- fileSystem: globals.fs,
- platform: globals.platform,
- processManager: globals.processManager,
- logger: globals.logger,
+ fileSystem: fileSystem,
+ platform: platform,
+ processManager: processManager,
+ logger: logger,
),
];
+
+ @override
+ final List<DeviceDiscovery> deviceDiscoverers;
}
/// An abstract class to discover and enumerate a specific type of devices.
diff --git a/packages/flutter_tools/lib/src/tester/flutter_tester.dart b/packages/flutter_tools/lib/src/tester/flutter_tester.dart
index 2057c25..896f3e0 100644
--- a/packages/flutter_tools/lib/src/tester/flutter_tester.dart
+++ b/packages/flutter_tools/lib/src/tester/flutter_tester.dart
@@ -9,6 +9,7 @@
import '../application_package.dart';
import '../artifacts.dart';
+import '../base/config.dart';
import '../base/file_system.dart';
import '../base/io.dart';
import '../base/logger.dart';
@@ -47,18 +48,18 @@
// TODO(scheglov): This device does not currently work with full restarts.
class FlutterTesterDevice extends Device {
FlutterTesterDevice(String deviceId, {
- @required ProcessManager processManager,
- @required FlutterVersion flutterVersion,
- @required Logger logger,
- @required String buildDirectory,
- @required FileSystem fileSystem,
- @required Artifacts artifacts,
- }) : _processManager = processManager,
- _flutterVersion = flutterVersion,
- _logger = logger,
- _buildDirectory = buildDirectory,
- _fileSystem = fileSystem,
- _artifacts = artifacts,
+ ProcessManager processManager,
+ FlutterVersion flutterVersion,
+ Logger logger,
+ String buildDirectory,
+ FileSystem fileSystem,
+ Artifacts artifacts,
+ }) : _processManager = processManager ?? globals.processManager, // TODO(jonahwilliams): remove after google3 roll.
+ _flutterVersion = flutterVersion ?? globals.flutterVersion,
+ _logger = logger ?? globals.logger,
+ _buildDirectory = buildDirectory ?? getBuildDirectory(),
+ _fileSystem = fileSystem ?? globals.fs,
+ _artifacts = artifacts ?? globals.artifacts,
super(
deviceId,
platformType: null,
@@ -253,21 +254,29 @@
}
class FlutterTesterDevices extends PollingDeviceDiscovery {
- FlutterTesterDevices() : super('Flutter tester');
+ FlutterTesterDevices({
+ FileSystem fileSystem,
+ Artifacts artifacts,
+ ProcessManager processManager,
+ Logger logger,
+ FlutterVersion flutterVersion,
+ Config config,
+ }) : _testerDevice = FlutterTesterDevice( // TODO(jonahwilliams): remove after google3 roll.
+ kTesterDeviceId,
+ fileSystem: fileSystem ?? globals.fs,
+ artifacts: artifacts ?? globals.artifacts,
+ processManager: processManager ?? globals.processManager,
+ buildDirectory: getBuildDirectory(config ?? globals.config, fileSystem ?? globals.fs),
+ logger: logger ?? globals.logger,
+ flutterVersion: flutterVersion ?? globals.flutterVersion,
+ ),
+ super('Flutter tester');
static const String kTesterDeviceId = 'flutter-tester';
static bool showFlutterTesterDevice = false;
- final FlutterTesterDevice _testerDevice = FlutterTesterDevice(
- kTesterDeviceId,
- fileSystem: globals.fs,
- artifacts: globals.artifacts,
- processManager: globals.processManager,
- buildDirectory: getBuildDirectory(),
- logger: globals.logger,
- flutterVersion: globals.flutterVersion,
- );
+ final FlutterTesterDevice _testerDevice;
@override
bool get canListAnything => true;