blob: 6b297c5c6d9e8b74b92ae3dadcd829477690abf6 [file]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:process/process.dart';
import 'package:unified_analytics/unified_analytics.dart';
import 'android/android_device_discovery.dart';
import 'android/android_sdk.dart';
import 'android/android_workflow.dart';
import 'artifacts.dart';
import 'base/config.dart';
import 'base/file_system.dart';
import 'base/logger.dart';
import 'base/platform.dart';
import 'base/template.dart';
import 'base/user_messages.dart';
import 'build_system/build_system.dart';
import 'build_system/build_targets.dart';
import 'cache.dart';
import 'context/apple_context.dart';
import 'context/tool_context.dart';
import 'custom_devices/custom_device.dart';
import 'device.dart';
import 'experimental/extension_build_manager.dart';
import 'experimental/extension_device_manager.dart';
import 'experimental/extension_manager.dart';
import 'features.dart';
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/macos_ipad_device.dart';
import 'macos/macos_workflow.dart';
import 'macos/xcdevice.dart';
import 'tester/flutter_tester.dart';
import 'web/web_device.dart';
import 'windows/windows_device.dart';
import 'windows/windows_workflow.dart';
/// A provider for all of the device discovery instances.
class FlutterDeviceManager extends DeviceManager {
FlutterDeviceManager({
required Analytics analytics,
required AndroidSdk? Function() androidSdkBuilder,
required AndroidWorkflow androidWorkflow,
required AppleContext appleContext,
required BuildSystem buildSystem,
required BuildTargets buildTargets,
required ExtensionBuildManager extensionBuildManager,
required ExtensionManager extensionManager,
required FeatureFlags featureFlags,
required IOSSimulatorUtils iosSimulatorUtils,
required IOSWorkflow iosWorkflow,
required MacOSWorkflow macOSWorkflow,
required TemplateRenderer templateRenderer,
required ToolContext toolContext,
required WindowsWorkflow windowsWorkflow,
required XCDevice xcDevice,
}) : super(logger: toolContext.logger) {
final ToolContext(
:Artifacts artifacts,
:Cache cache,
:Config config,
:FileSystem fs,
:Logger logger,
:Platform platform,
:ProcessManager processManager,
:UserMessages userMessages,
) = toolContext;
deviceDiscoverers = <DeviceDiscovery>[
AndroidDevices(
logger: logger,
androidSdkBuilder: androidSdkBuilder,
androidWorkflow: androidWorkflow,
processManager: processManager,
fileSystem: fs,
platform: platform,
userMessages: userMessages,
),
IOSDevices(platform: platform, xcdevice: xcDevice, iosWorkflow: iosWorkflow, logger: logger),
IOSSimulators(
iosSimulatorUtils: iosSimulatorUtils,
iosWorkflow: iosWorkflow,
platform: platform,
),
FlutterTesterDevices(
analytics: analytics,
buildSystem: buildSystem,
buildTargets: buildTargets,
toolContext: toolContext,
),
MacOSDevices(
analytics: analytics,
appleContext: appleContext,
featureFlags: featureFlags,
macOSWorkflow: macOSWorkflow,
templateRenderer: templateRenderer,
toolContext: toolContext,
),
MacOSDesignedForIPadDevices(iosWorkflow: iosWorkflow, toolContext: toolContext),
LinuxDevices(analytics: analytics, featureFlags: featureFlags, toolContext: toolContext),
WindowsDevices(
analytics: analytics,
toolContext: toolContext,
windowsWorkflow: windowsWorkflow,
),
WebDevices(
featureFlags: featureFlags,
fileSystem: fs,
platform: platform,
processManager: processManager,
logger: logger,
),
CustomDevices(
featureFlags: featureFlags,
analytics: analytics,
buildSystem: buildSystem,
buildTargets: buildTargets,
toolContext: toolContext,
),
ExtensionDevices(
extensionBuildManager: extensionBuildManager,
extensionManager: extensionManager,
fileSystem: fs,
logger: logger,
artifacts: artifacts,
cache: cache,
config: config,
),
];
}
@override
late final List<DeviceDiscovery> deviceDiscoverers;
}