Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/flutter_tools/lib/executable.dart
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,8 @@ List<FlutterCommand> generateCommands({required bool verboseHelp, required bool
fileSystem: globals.fs,
logger: globals.logger,
platform: globals.platform,
terminal: globals.terminal,
outputPreferences: globals.outputPreferences,
signals: globals.signals,
),
EmulatorsCommand(),
Expand Down
4 changes: 2 additions & 2 deletions packages/flutter_tools/lib/src/base/command_help.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const int maxLineWidth = 84;
class CommandHelp {
CommandHelp({
required Logger logger,
required AnsiTerminal terminal,
required Terminal terminal,
required Platform platform,
required OutputPreferences outputPreferences,
}) : _logger = logger,
Expand All @@ -25,7 +25,7 @@ class CommandHelp {

final Logger _logger;

final AnsiTerminal _terminal;
final Terminal _terminal;

final Platform _platform;

Expand Down
3 changes: 3 additions & 0 deletions packages/flutter_tools/lib/src/commands/daemon.dart
Original file line number Diff line number Diff line change
Expand Up @@ -710,6 +710,9 @@ class AppDomain extends Domain {
analytics: globals.analytics,
systemClock: globals.systemClock,
logger: globals.logger,
terminal: globals.terminal,
platform: globals.platform,
outputPreferences: globals.outputPreferences,
fileSystem: globals.fs,
);
} else if (enableHotReload) {
Expand Down
9 changes: 9 additions & 0 deletions packages/flutter_tools/lib/src/commands/drive.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import '../base/io.dart';
import '../base/logger.dart';
import '../base/platform.dart';
import '../base/signals.dart';
import '../base/terminal.dart';
import '../base/utils.dart';
import '../build_info.dart';
import '../dart/package_map.dart';
Expand Down Expand Up @@ -60,11 +61,15 @@ class DriveCommand extends RunCommandBase {
required FileSystem fileSystem,
required Logger logger,
required Platform platform,
required Terminal terminal,
required OutputPreferences outputPreferences,
required this.signals,
}) : _flutterDriverFactory = flutterDriverFactory,
_fileSystem = fileSystem,
_logger = logger,
_platform = platform,
_terminal = terminal,
_outputPreferences = outputPreferences,
_fsUtils = FileSystemUtils(fileSystem: fileSystem, platform: platform),
super(verboseHelp: verboseHelp) {
requiresPubspecYaml();
Expand Down Expand Up @@ -200,6 +205,8 @@ class DriveCommand extends RunCommandBase {
final FileSystem _fileSystem;
final Logger _logger;
final Platform _platform;
final Terminal _terminal;
final OutputPreferences _outputPreferences;
final FileSystemUtils _fsUtils;
Timer? timeoutTimer;
Map<ProcessSignal, Object>? screenshotTokens;
Expand Down Expand Up @@ -298,6 +305,8 @@ class DriveCommand extends RunCommandBase {
applicationPackageFactory: ApplicationPackageFactory.instance!,
logger: _logger,
platform: _platform,
terminal: _terminal,
outputPreferences: _outputPreferences,
processUtils: globals.processUtils,
dartSdkPath: globals.artifacts!.getArtifactPath(Artifact.engineDartBinary),
devtoolsLauncher: DevtoolsLauncher.instance!,
Expand Down
3 changes: 3 additions & 0 deletions packages/flutter_tools/lib/src/commands/run.dart
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,9 @@ class RunCommand extends RunCommandBase {
fileSystem: globals.fs,
analytics: globals.analytics,
logger: globals.logger,
terminal: globals.terminal,
platform: globals.platform,
outputPreferences: globals.outputPreferences,
systemClock: globals.systemClock,
);
}
Expand Down
9 changes: 9 additions & 0 deletions packages/flutter_tools/lib/src/drive/drive_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import '../base/dds.dart';
import '../base/logger.dart';
import '../base/platform.dart';
import '../base/process.dart';
import '../base/terminal.dart';
import '../build_info.dart';
import '../device.dart';
import '../resident_runner.dart';
Expand All @@ -26,19 +27,25 @@ class FlutterDriverFactory {
required ApplicationPackageFactory applicationPackageFactory,
required Platform platform,
required Logger logger,
required Terminal terminal,
required OutputPreferences outputPreferences,
required ProcessUtils processUtils,
required String dartSdkPath,
required DevtoolsLauncher devtoolsLauncher,
}) : _applicationPackageFactory = applicationPackageFactory,
_platform = platform,
_logger = logger,
_terminal = terminal,
_outputPreferences = outputPreferences,
_processUtils = processUtils,
_dartSdkPath = dartSdkPath,
_devtoolsLauncher = devtoolsLauncher;

final ApplicationPackageFactory _applicationPackageFactory;
final Platform _platform;
final Logger _logger;
final Terminal _terminal;
final OutputPreferences _outputPreferences;
final ProcessUtils _processUtils;
final String _dartSdkPath;
final DevtoolsLauncher _devtoolsLauncher;
Expand All @@ -48,7 +55,9 @@ class FlutterDriverFactory {
if (web) {
return WebDriverService(
logger: _logger,
terminal: _terminal,
platform: _platform,
outputPreferences: _outputPreferences,
processUtils: _processUtils,
dartSdkPath: _dartSdkPath,
);
Expand Down
12 changes: 11 additions & 1 deletion packages/flutter_tools/lib/src/drive/web_driver_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import '../base/io.dart';
import '../base/logger.dart';
import '../base/platform.dart';
import '../base/process.dart';
import '../base/terminal.dart';
import '../base/utils.dart';
import '../build_info.dart';
import '../convert.dart';
Expand All @@ -32,15 +33,21 @@ class WebDriverService extends DriverService {
required String dartSdkPath,
required Platform platform,
required Logger logger,
required Terminal terminal,
required OutputPreferences outputPreferences,
}) : _processUtils = processUtils,
_dartSdkPath = dartSdkPath,
_platform = platform,
_logger = logger;
_logger = logger,
_terminal = terminal,
_outputPreferences = outputPreferences;

final ProcessUtils _processUtils;
final String _dartSdkPath;
final Platform _platform;
final Logger _logger;
final Terminal _terminal;
final OutputPreferences _outputPreferences;

late ResidentRunner _residentRunner;
Uri? _webUri;
Expand Down Expand Up @@ -99,6 +106,9 @@ class WebDriverService extends DriverService {
fileSystem: globals.fs,
analytics: globals.analytics,
logger: _logger,
terminal: _terminal,
platform: _platform,
outputPreferences: _outputPreferences,
systemClock: globals.systemClock,
);
final Completer<void> appStartedCompleter = Completer<void>.sync();
Expand Down
57 changes: 36 additions & 21 deletions packages/flutter_tools/lib/src/isolated/resident_web_runner.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart' hide

import '../application_package.dart';
import '../base/async_guard.dart';
import '../base/command_help.dart';
import '../base/common.dart';
import '../base/file_system.dart';
import '../base/io.dart';
import '../base/logger.dart';
import '../base/net.dart';
import '../base/platform.dart';
import '../base/terminal.dart';
import '../base/time.dart';
import '../base/utils.dart';
Expand Down Expand Up @@ -52,6 +54,9 @@ class DwdsWebRunnerFactory extends WebRunnerFactory {
required DebuggingOptions debuggingOptions,
UrlTunneller? urlTunneller,
required Logger logger,
required Terminal terminal,
required Platform platform,
required OutputPreferences outputPreferences,
required FileSystem fileSystem,
required SystemClock systemClock,
required Analytics analytics,
Expand All @@ -69,6 +74,9 @@ class DwdsWebRunnerFactory extends WebRunnerFactory {
systemClock: systemClock,
fileSystem: fileSystem,
logger: logger,
terminal: terminal,
platform: platform,
outputPreferences: outputPreferences,
);
}
}
Expand All @@ -88,13 +96,17 @@ class ResidentWebRunner extends ResidentRunner {
required DebuggingOptions debuggingOptions,
required FileSystem fileSystem,
required Logger logger,
required Terminal terminal,
required Platform platform,
required OutputPreferences outputPreferences,
required SystemClock systemClock,
required Analytics analytics,
UrlTunneller? urlTunneller,
// TODO(bkonyi): remove when ready to serve DevTools from DDS.
ResidentDevtoolsHandlerFactory devtoolsHandler = createDefaultHandler,
}) : _fileSystem = fileSystem,
_logger = logger,
_platform = platform,
_systemClock = systemClock,
_analytics = analytics,
_urlTunneller = urlTunneller,
Expand All @@ -105,10 +117,17 @@ class ResidentWebRunner extends ResidentRunner {
stayResident: stayResident,
machine: machine,
devtoolsHandler: devtoolsHandler,
commandHelp: CommandHelp(
logger: logger,
terminal: terminal,
platform: platform,
outputPreferences: outputPreferences,
),
);

final FileSystem _fileSystem;
final Logger _logger;
final Platform _platform;
final SystemClock _systemClock;
final Analytics _analytics;
final UrlTunneller? _urlTunneller;
Expand Down Expand Up @@ -146,6 +165,20 @@ class ResidentWebRunner extends ResidentRunner {

bool get _enableDwds => debuggingEnabled;

@override
bool get reloadIsRestart =>
// Web behavior when not using the DDC library bundle format is to restart
// when a reload is issued. We can't use `canHotReload` to signal this
// since we still want a reload command to succeed, but to do a hot
// restart.
debuggingOptions.buildInfo.ddcModuleFormat != DdcModuleFormat.ddc ||
debuggingOptions.buildInfo.canaryFeatures != true;

// TODO(srujzs): Return true when web supports detaching.
// https://github.com/flutter/flutter/issues/163329
@override
bool get supportsDetach => false;

ConnectionResult? _connectionResult;
StreamSubscription<vmservice.Event>? _stdOutSub;
StreamSubscription<vmservice.Event>? _stdErrSub;
Expand Down Expand Up @@ -205,24 +238,6 @@ class ResidentWebRunner extends ResidentRunner {
appFinished();
}

@override
void printHelp({bool details = true}) {
if (details) {
return printHelpDetails();
}
const String fire = '🔥';
const String rawMessage = ' To hot restart changes while running, press "r" or "R".';
final String message = _logger.terminal.color(
fire + _logger.terminal.bolden(rawMessage),
TerminalColor.red,
);
_logger.printStatus(message);
const String quitMessage = 'To quit, press "q".';
_logger.printStatus('For a more detailed help message, press "h". $quitMessage');
_logger.printStatus('');
printDebuggerList();
}

@override
Future<void> stopEchoingDeviceLog() async {
// Do nothing for ResidentWebRunner
Expand Down Expand Up @@ -310,7 +325,7 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive).
isWasm: debuggingOptions.webUseWasm,
useLocalCanvasKit: debuggingOptions.buildInfo.useLocalCanvasKit,
rootDirectory: fileSystem.directory(projectRootPath),
isWindows: globals.platform.isWindows,
isWindows: _platform.isWindows,
);
Uri url = await device!.devFS!.create();
if (debuggingOptions.tlsCertKeyPath != null && debuggingOptions.tlsCertPath != null) {
Expand Down Expand Up @@ -475,10 +490,10 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive).
// has some internal error, we should still surface it to make
// debugging easier.
String reloadFailedMessage = 'Hot reload failed:';
globals.printError(reloadFailedMessage);
_logger.printError(reloadFailedMessage);
for (final ReasonForCancelling reason in contents.notices) {
reloadFailedMessage += reason.toString();
globals.printError(reason.toString());
_logger.printError(reason.toString());
}
return OperationResult(1, reloadFailedMessage);
}
Expand Down
Loading