[flutter_tools] remove LinuxWorkflow from injection and clean up tests (#51597)


diff --git a/packages/flutter_tools/lib/src/context_runner.dart b/packages/flutter_tools/lib/src/context_runner.dart
index b9a3297..39043f9 100644
--- a/packages/flutter_tools/lib/src/context_runner.dart
+++ b/packages/flutter_tools/lib/src/context_runner.dart
@@ -40,7 +40,6 @@
 import 'ios/mac.dart';
 import 'ios/simulators.dart';
 import 'ios/xcodeproj.dart';
-import 'linux/linux_workflow.dart';
 import 'macos/cocoapods.dart';
 import 'macos/cocoapods_validator.dart';
 import 'macos/macos_workflow.dart';
@@ -141,7 +140,6 @@
       IOSSimulatorUtils: () => IOSSimulatorUtils(),
       IOSWorkflow: () => const IOSWorkflow(),
       KernelCompilerFactory: () => const KernelCompilerFactory(),
-      LinuxWorkflow: () => const LinuxWorkflow(),
       Logger: () => globals.platform.isWindows
         ? WindowsStdoutLogger(
             terminal: globals.terminal,
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 0a28259..5eef0b4 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -15,6 +15,7 @@
 import 'base/io.dart';
 import 'base/utils.dart';
 import 'build_info.dart';
+import 'features.dart';
 import 'fuchsia/fuchsia_device.dart';
 import 'globals.dart' as globals;
 import 'ios/devices.dart';
@@ -74,7 +75,10 @@
     FuchsiaDevices(),
     FlutterTesterDevices(),
     MacOSDevices(),
-    LinuxDevices(),
+    LinuxDevices(
+      platform: globals.platform,
+      featureFlags: featureFlags,
+    ),
     WindowsDevices(),
     WebDevices(),
   ]);
diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart
index 5babf68..3a228fd 100644
--- a/packages/flutter_tools/lib/src/doctor.dart
+++ b/packages/flutter_tools/lib/src/doctor.dart
@@ -20,6 +20,7 @@
 import 'base/version.dart';
 import 'cache.dart';
 import 'device.dart';
+import 'features.dart';
 import 'fuchsia/fuchsia_workflow.dart';
 import 'globals.dart' as globals;
 import 'intellij/intellij.dart';
@@ -67,6 +68,10 @@
       ...IntelliJValidator.installedValidators,
       ...VsCodeValidator.installedValidators,
     ];
+    final LinuxWorkflow linuxWorkflow = LinuxWorkflow(
+      platform: globals.platform,
+      featureFlags: featureFlags,
+    );
 
     _validators = <DoctorValidator>[
       FlutterValidator(),
@@ -115,6 +120,10 @@
         _workflows.add(fuchsiaWorkflow);
       }
 
+      final LinuxWorkflow linuxWorkflow = LinuxWorkflow(
+        platform: globals.platform,
+        featureFlags: featureFlags,
+      );
       if (linuxWorkflow.appliesToHostPlatform) {
         _workflows.add(linuxWorkflow);
       }
diff --git a/packages/flutter_tools/lib/src/linux/linux_device.dart b/packages/flutter_tools/lib/src/linux/linux_device.dart
index 2ab1b61..06c3e1c 100644
--- a/packages/flutter_tools/lib/src/linux/linux_device.dart
+++ b/packages/flutter_tools/lib/src/linux/linux_device.dart
@@ -2,10 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'package:meta/meta.dart';
+import 'package:platform/platform.dart';
+
 import '../build_info.dart';
 import '../desktop_device.dart';
 import '../device.dart';
-import '../globals.dart' as globals;
+import '../features.dart';
 import '../project.dart';
 import 'application_package.dart';
 import 'build_linux.dart';
@@ -53,13 +56,24 @@
 }
 
 class LinuxDevices extends PollingDeviceDiscovery {
-  LinuxDevices() : super('linux devices');
+  LinuxDevices({
+    @required Platform platform,
+    @required FeatureFlags featureFlags,
+  }) : _platform = platform,
+       _linuxWorkflow = LinuxWorkflow(
+          platform: platform,
+          featureFlags: featureFlags,
+       ),
+       super('linux devices');
+
+  final Platform _platform;
+  final LinuxWorkflow _linuxWorkflow;
 
   @override
-  bool get supportsPlatform => globals.platform.isLinux;
+  bool get supportsPlatform => _platform.isLinux;
 
   @override
-  bool get canListAnything => linuxWorkflow.canListDevices;
+  bool get canListAnything => _linuxWorkflow.canListDevices;
 
   @override
   Future<List<Device>> pollingGetDevices() async {
diff --git a/packages/flutter_tools/lib/src/linux/linux_workflow.dart b/packages/flutter_tools/lib/src/linux/linux_workflow.dart
index 11423d3..caea987 100644
--- a/packages/flutter_tools/lib/src/linux/linux_workflow.dart
+++ b/packages/flutter_tools/lib/src/linux/linux_workflow.dart
@@ -2,29 +2,34 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import '../base/context.dart';
+import 'package:meta/meta.dart';
+import 'package:platform/platform.dart';
+
 import '../doctor.dart';
 import '../features.dart';
-import '../globals.dart' as globals;
-
-/// The [WindowsWorkflow] instance.
-LinuxWorkflow get linuxWorkflow => context.get<LinuxWorkflow>();
 
 /// The windows-specific implementation of a [Workflow].
 ///
 /// This workflow requires the flutter-desktop-embedding as a sibling
 /// repository to the flutter repo.
 class LinuxWorkflow implements Workflow {
-  const LinuxWorkflow();
+  const LinuxWorkflow({
+    @required Platform platform,
+    @required FeatureFlags featureFlags,
+  }) : _platform = platform,
+       _featureFlags = featureFlags;
+
+  final Platform _platform;
+  final FeatureFlags _featureFlags;
 
   @override
-  bool get appliesToHostPlatform => globals.platform.isLinux && featureFlags.isLinuxEnabled;
+  bool get appliesToHostPlatform => _platform.isLinux && _featureFlags.isLinuxEnabled;
 
   @override
-  bool get canLaunchDevices => globals.platform.isLinux && featureFlags.isLinuxEnabled;
+  bool get canLaunchDevices => _platform.isLinux && _featureFlags.isLinuxEnabled;
 
   @override
-  bool get canListDevices => globals.platform.isLinux && featureFlags.isLinuxEnabled;
+  bool get canListDevices => _platform.isLinux && _featureFlags.isLinuxEnabled;
 
   @override
   bool get canListEmulators => false;