Unverified Commit 28ab4310 authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Make `Logger` required when injected in flutter_tool (#114111)

parent c6f6095a
...@@ -184,7 +184,7 @@ List<FlutterCommand> generateCommands({ ...@@ -184,7 +184,7 @@ List<FlutterCommand> generateCommands({
DebugAdapterCommand(verboseHelp: verboseHelp), DebugAdapterCommand(verboseHelp: verboseHelp),
DevicesCommand(verboseHelp: verboseHelp), DevicesCommand(verboseHelp: verboseHelp),
DoctorCommand(verbose: verbose), DoctorCommand(verbose: verbose),
DowngradeCommand(verboseHelp: verboseHelp), DowngradeCommand(verboseHelp: verboseHelp, logger: globals.logger),
DriveCommand(verboseHelp: verboseHelp, DriveCommand(verboseHelp: verboseHelp,
fileSystem: globals.fs, fileSystem: globals.fs,
logger: globals.logger, logger: globals.logger,
......
...@@ -102,21 +102,21 @@ class DaemonCommand extends FlutterCommand { ...@@ -102,21 +102,21 @@ class DaemonCommand extends FlutterCommand {
class _DaemonServer { class _DaemonServer {
_DaemonServer({ _DaemonServer({
this.port, this.port,
this.logger, required this.logger,
this.notifyingLogger, this.notifyingLogger,
}); });
final int? port; final int? port;
/// Stdout logger used to print general server-related errors. /// Stdout logger used to print general server-related errors.
final Logger? logger; final Logger logger;
// Logger that sends the message to the other end of daemon connection. // Logger that sends the message to the other end of daemon connection.
final NotifyingLogger? notifyingLogger; final NotifyingLogger? notifyingLogger;
Future<void> run() async { Future<void> run() async {
final ServerSocket serverSocket = await ServerSocket.bind(InternetAddress.loopbackIPv4, port!); final ServerSocket serverSocket = await ServerSocket.bind(InternetAddress.loopbackIPv4, port!);
logger!.printStatus('Daemon server listening on ${serverSocket.port}'); logger.printStatus('Daemon server listening on ${serverSocket.port}');
final StreamSubscription<Socket> subscription = serverSocket.listen( final StreamSubscription<Socket> subscription = serverSocket.listen(
(Socket socket) async { (Socket socket) async {
...@@ -124,13 +124,13 @@ class _DaemonServer { ...@@ -124,13 +124,13 @@ class _DaemonServer {
// reset, we will receive an uncatchable exception. // reset, we will receive an uncatchable exception.
// https://github.com/dart-lang/sdk/issues/25518 // https://github.com/dart-lang/sdk/issues/25518
final Future<void> socketDone = socket.done.catchError((Object error, StackTrace stackTrace) { final Future<void> socketDone = socket.done.catchError((Object error, StackTrace stackTrace) {
logger!.printError('Socket error: $error'); logger.printError('Socket error: $error');
logger!.printTrace('$stackTrace'); logger.printTrace('$stackTrace');
}); });
final Daemon daemon = Daemon( final Daemon daemon = Daemon(
DaemonConnection( DaemonConnection(
daemonStreams: DaemonStreams.fromSocket(socket, logger: logger!), daemonStreams: DaemonStreams.fromSocket(socket, logger: logger),
logger: logger!, logger: logger,
), ),
notifyingLogger: notifyingLogger, notifyingLogger: notifyingLogger,
); );
......
...@@ -30,7 +30,7 @@ class DowngradeCommand extends FlutterCommand { ...@@ -30,7 +30,7 @@ class DowngradeCommand extends FlutterCommand {
DowngradeCommand({ DowngradeCommand({
bool verboseHelp = false, bool verboseHelp = false,
PersistentToolState? persistentToolState, PersistentToolState? persistentToolState,
Logger? logger, required Logger logger,
ProcessManager? processManager, ProcessManager? processManager,
FlutterVersion? flutterVersion, FlutterVersion? flutterVersion,
Terminal? terminal, Terminal? terminal,
...@@ -64,7 +64,7 @@ class DowngradeCommand extends FlutterCommand { ...@@ -64,7 +64,7 @@ class DowngradeCommand extends FlutterCommand {
PersistentToolState? _persistentToolState; PersistentToolState? _persistentToolState;
ProcessUtils? _processUtils; ProcessUtils? _processUtils;
ProcessManager? _processManager; ProcessManager? _processManager;
Logger? _logger; final Logger _logger;
Stdio? _stdio; Stdio? _stdio;
FileSystem? _fileSystem; FileSystem? _fileSystem;
...@@ -83,11 +83,10 @@ class DowngradeCommand extends FlutterCommand { ...@@ -83,11 +83,10 @@ class DowngradeCommand extends FlutterCommand {
// values when being created. Fields must be lazily instantiated in runCommand, // values when being created. Fields must be lazily instantiated in runCommand,
// at least until the zone injection is refactored. // at least until the zone injection is refactored.
_terminal ??= globals.terminal; _terminal ??= globals.terminal;
_logger ??= globals.logger;
_flutterVersion ??= globals.flutterVersion; _flutterVersion ??= globals.flutterVersion;
_persistentToolState ??= globals.persistentToolState; _persistentToolState ??= globals.persistentToolState;
_processManager ??= globals.processManager; _processManager ??= globals.processManager;
_processUtils ??= ProcessUtils(processManager: _processManager!, logger: _logger!); _processUtils ??= ProcessUtils(processManager: _processManager!, logger: _logger);
_stdio ??= globals.stdio; _stdio ??= globals.stdio;
_fileSystem ??= globals.fs; _fileSystem ??= globals.fs;
String workingDirectory = Cache.flutterRoot!; String workingDirectory = Cache.flutterRoot!;
...@@ -128,19 +127,18 @@ class DowngradeCommand extends FlutterCommand { ...@@ -128,19 +127,18 @@ class DowngradeCommand extends FlutterCommand {
// If there is a terminal attached, prompt the user to confirm the downgrade. // If there is a terminal attached, prompt the user to confirm the downgrade.
final Stdio stdio = _stdio!; final Stdio stdio = _stdio!;
final Terminal terminal = _terminal!; final Terminal terminal = _terminal!;
final Logger logger = _logger!;
if (stdio.hasTerminal && boolArgDeprecated('prompt')) { if (stdio.hasTerminal && boolArgDeprecated('prompt')) {
terminal.usesTerminalUi = true; terminal.usesTerminalUi = true;
final String result = await terminal.promptForCharInput( final String result = await terminal.promptForCharInput(
const <String>['y', 'n'], const <String>['y', 'n'],
prompt: 'Downgrade flutter to version $humanReadableVersion?', prompt: 'Downgrade flutter to version $humanReadableVersion?',
logger: logger, logger: _logger,
); );
if (result == 'n') { if (result == 'n') {
return FlutterCommandResult.success(); return FlutterCommandResult.success();
} }
} else { } else {
logger.printStatus('Downgrading Flutter to version $humanReadableVersion'); _logger.printStatus('Downgrading Flutter to version $humanReadableVersion');
} }
// To downgrade the tool, we perform a git checkout --hard, and then // To downgrade the tool, we perform a git checkout --hard, and then
...@@ -175,7 +173,7 @@ class DowngradeCommand extends FlutterCommand { ...@@ -175,7 +173,7 @@ class DowngradeCommand extends FlutterCommand {
); );
} }
await FlutterVersion.resetFlutterVersionFreshnessCheck(); await FlutterVersion.resetFlutterVersionFreshnessCheck();
logger.printStatus('Success'); _logger.printStatus('Success');
return FlutterCommandResult.success(); return FlutterCommandResult.success();
} }
......
...@@ -52,7 +52,7 @@ class DriveCommand extends RunCommandBase { ...@@ -52,7 +52,7 @@ class DriveCommand extends RunCommandBase {
@visibleForTesting FlutterDriverFactory? flutterDriverFactory, @visibleForTesting FlutterDriverFactory? flutterDriverFactory,
@visibleForTesting this.signalsToHandle = const <ProcessSignal>{ProcessSignal.sigint, ProcessSignal.sigterm}, @visibleForTesting this.signalsToHandle = const <ProcessSignal>{ProcessSignal.sigint, ProcessSignal.sigterm},
required FileSystem fileSystem, required FileSystem fileSystem,
required Logger? logger, required Logger logger,
required Platform platform, required Platform platform,
required this.signals, required this.signals,
}) : _flutterDriverFactory = flutterDriverFactory, }) : _flutterDriverFactory = flutterDriverFactory,
...@@ -171,7 +171,7 @@ class DriveCommand extends RunCommandBase { ...@@ -171,7 +171,7 @@ class DriveCommand extends RunCommandBase {
FlutterDriverFactory? _flutterDriverFactory; FlutterDriverFactory? _flutterDriverFactory;
final FileSystem _fileSystem; final FileSystem _fileSystem;
final Logger? _logger; final Logger _logger;
final FileSystemUtils _fsUtils; final FileSystemUtils _fsUtils;
@override @override
...@@ -222,20 +222,20 @@ class DriveCommand extends RunCommandBase { ...@@ -222,20 +222,20 @@ class DriveCommand extends RunCommandBase {
throwToolExit(null); throwToolExit(null);
} }
if (screenshot != null && !device.supportsScreenshot) { if (screenshot != null && !device.supportsScreenshot) {
_logger!.printError('Screenshot not supported for ${device.name}.'); _logger.printError('Screenshot not supported for ${device.name}.');
} }
final bool web = device is WebServerDevice || device is ChromiumDevice; final bool web = device is WebServerDevice || device is ChromiumDevice;
_flutterDriverFactory ??= FlutterDriverFactory( _flutterDriverFactory ??= FlutterDriverFactory(
applicationPackageFactory: ApplicationPackageFactory.instance!, applicationPackageFactory: ApplicationPackageFactory.instance!,
logger: _logger!, logger: _logger,
processUtils: globals.processUtils, processUtils: globals.processUtils,
dartSdkPath: globals.artifacts!.getHostArtifact(HostArtifact.engineDartBinary).path, dartSdkPath: globals.artifacts!.getHostArtifact(HostArtifact.engineDartBinary).path,
devtoolsLauncher: DevtoolsLauncher.instance!, devtoolsLauncher: DevtoolsLauncher.instance!,
); );
final PackageConfig packageConfig = await loadPackageConfigWithLogging( final PackageConfig packageConfig = await loadPackageConfigWithLogging(
_fileSystem.file('.packages'), _fileSystem.file('.packages'),
logger: _logger!, logger: _logger,
throwOnError: false, throwOnError: false,
); );
final DriverService driverService = _flutterDriverFactory!.createDriverService(web); final DriverService driverService = _flutterDriverFactory!.createDriverService(web);
...@@ -297,7 +297,7 @@ class DriveCommand extends RunCommandBase { ...@@ -297,7 +297,7 @@ class DriveCommand extends RunCommandBase {
); );
// If the test is sent a signal, take a screenshot before exiting // If the test is sent a signal, take a screenshot before exiting
final Map<ProcessSignal, Object> screenshotTokens = _registerScreenshotCallbacks((ProcessSignal signal) async { final Map<ProcessSignal, Object> screenshotTokens = _registerScreenshotCallbacks((ProcessSignal signal) async {
_logger!.printError('Caught $signal'); _logger.printError('Caught $signal');
await _takeScreenshot(device); await _takeScreenshot(device);
}); });
final int testResult = await testResultFuture; final int testResult = await testResultFuture;
...@@ -309,7 +309,7 @@ class DriveCommand extends RunCommandBase { ...@@ -309,7 +309,7 @@ class DriveCommand extends RunCommandBase {
} }
if (boolArgDeprecated('keep-app-running')) { if (boolArgDeprecated('keep-app-running')) {
_logger!.printStatus('Leaving the application running.'); _logger.printStatus('Leaving the application running.');
} else { } else {
final File? skslFile = stringArgDeprecated('write-sksl-on-exit') != null final File? skslFile = stringArgDeprecated('write-sksl-on-exit') != null
? _fileSystem.file(stringArgDeprecated('write-sksl-on-exit')) ? _fileSystem.file(stringArgDeprecated('write-sksl-on-exit'))
...@@ -332,7 +332,7 @@ class DriveCommand extends RunCommandBase { ...@@ -332,7 +332,7 @@ class DriveCommand extends RunCommandBase {
} }
Map<ProcessSignal, Object> _registerScreenshotCallbacks(Function(ProcessSignal) callback) { Map<ProcessSignal, Object> _registerScreenshotCallbacks(Function(ProcessSignal) callback) {
_logger!.printTrace('Registering signal handlers...'); _logger.printTrace('Registering signal handlers...');
final Map<ProcessSignal, Object> tokens = <ProcessSignal, Object>{}; final Map<ProcessSignal, Object> tokens = <ProcessSignal, Object>{};
for (final ProcessSignal signal in signalsToHandle) { for (final ProcessSignal signal in signalsToHandle) {
tokens[signal] = signals.addHandler(signal, callback); tokens[signal] = signals.addHandler(signal, callback);
...@@ -341,7 +341,7 @@ class DriveCommand extends RunCommandBase { ...@@ -341,7 +341,7 @@ class DriveCommand extends RunCommandBase {
} }
void _unregisterScreenshotCallbacks(Map<ProcessSignal, Object> tokens) { void _unregisterScreenshotCallbacks(Map<ProcessSignal, Object> tokens) {
_logger!.printTrace('Unregistering signal handlers...'); _logger.printTrace('Unregistering signal handlers...');
for (final MapEntry<ProcessSignal, Object> entry in tokens.entries) { for (final MapEntry<ProcessSignal, Object> entry in tokens.entries) {
signals.removeHandler(entry.key, entry.value); signals.removeHandler(entry.key, entry.value);
} }
...@@ -362,7 +362,7 @@ class DriveCommand extends RunCommandBase { ...@@ -362,7 +362,7 @@ class DriveCommand extends RunCommandBase {
// for the corresponding test file relative to it. // for the corresponding test file relative to it.
if (!_fileSystem.path.isRelative(appFile)) { if (!_fileSystem.path.isRelative(appFile)) {
if (!_fileSystem.path.isWithin(packageDir, appFile)) { if (!_fileSystem.path.isWithin(packageDir, appFile)) {
_logger!.printError( _logger.printError(
'Application file $appFile is outside the package directory $packageDir' 'Application file $appFile is outside the package directory $packageDir'
); );
return null; return null;
...@@ -374,7 +374,7 @@ class DriveCommand extends RunCommandBase { ...@@ -374,7 +374,7 @@ class DriveCommand extends RunCommandBase {
final List<String> parts = _fileSystem.path.split(appFile); final List<String> parts = _fileSystem.path.split(appFile);
if (parts.length < 2) { if (parts.length < 2) {
_logger!.printError( _logger.printError(
'Application file $appFile must reside in one of the sub-directories ' 'Application file $appFile must reside in one of the sub-directories '
'of the package structure, not in the root directory.' 'of the package structure, not in the root directory.'
); );
...@@ -402,9 +402,9 @@ class DriveCommand extends RunCommandBase { ...@@ -402,9 +402,9 @@ class DriveCommand extends RunCommandBase {
'png', 'png',
); );
await device.takeScreenshot(outputFile); await device.takeScreenshot(outputFile);
_logger!.printStatus('Screenshot written to ${outputFile.path}'); _logger.printStatus('Screenshot written to ${outputFile.path}');
} on Exception catch (error) { } on Exception catch (error) {
_logger!.printError('Error taking screenshot: $error'); _logger.printError('Error taking screenshot: $error');
} }
} }
} }
...@@ -541,7 +541,6 @@ class RunCommand extends RunCommandBase { ...@@ -541,7 +541,6 @@ class RunCommand extends RunCommandBase {
ipv6: ipv6, ipv6: ipv6,
debuggingOptions: await createDebuggingOptions(webMode), debuggingOptions: await createDebuggingOptions(webMode),
stayResident: stayResident, stayResident: stayResident,
urlTunneller: null,
fileSystem: globals.fs, fileSystem: globals.fs,
usage: globals.flutterUsage, usage: globals.flutterUsage,
logger: globals.logger, logger: globals.logger,
......
...@@ -22,7 +22,7 @@ class DevtoolsServerLauncher extends DevtoolsLauncher { ...@@ -22,7 +22,7 @@ class DevtoolsServerLauncher extends DevtoolsLauncher {
DevtoolsServerLauncher({ DevtoolsServerLauncher({
required ProcessManager processManager, required ProcessManager processManager,
required String dartExecutable, required String dartExecutable,
required Logger? logger, required Logger logger,
required BotDetector botDetector, required BotDetector botDetector,
}) : _processManager = processManager, }) : _processManager = processManager,
_dartExecutable = dartExecutable, _dartExecutable = dartExecutable,
...@@ -31,7 +31,7 @@ class DevtoolsServerLauncher extends DevtoolsLauncher { ...@@ -31,7 +31,7 @@ class DevtoolsServerLauncher extends DevtoolsLauncher {
final ProcessManager _processManager; final ProcessManager _processManager;
final String _dartExecutable; final String _dartExecutable;
final Logger? _logger; final Logger _logger;
final BotDetector _botDetector; final BotDetector _botDetector;
final Completer<void> _processStartCompleter = Completer<void>(); final Completer<void> _processStartCompleter = Completer<void>();
...@@ -73,7 +73,7 @@ class DevtoolsServerLauncher extends DevtoolsLauncher { ...@@ -73,7 +73,7 @@ class DevtoolsServerLauncher extends DevtoolsLauncher {
_devToolsProcess!.stderr _devToolsProcess!.stderr
.transform(utf8.decoder) .transform(utf8.decoder)
.transform(const LineSplitter()) .transform(const LineSplitter())
.listen(_logger!.printError); .listen(_logger.printError);
final bool runningOnBot = await _botDetector.isRunningOnBot; final bool runningOnBot = await _botDetector.isRunningOnBot;
devToolsProcessExit = _devToolsProcess!.exitCode.then( devToolsProcessExit = _devToolsProcess!.exitCode.then(
...@@ -86,7 +86,7 @@ class DevtoolsServerLauncher extends DevtoolsLauncher { ...@@ -86,7 +86,7 @@ class DevtoolsServerLauncher extends DevtoolsLauncher {
devToolsUrl = await completer.future; devToolsUrl = await completer.future;
} on Exception catch (e, st) { } on Exception catch (e, st) {
_logger!.printError('Failed to launch DevTools: $e', stackTrace: st); _logger.printError('Failed to launch DevTools: $e', stackTrace: st);
} }
} }
......
...@@ -82,7 +82,6 @@ class WebDriverService extends DriverService { ...@@ -82,7 +82,6 @@ class WebDriverService extends DriverService {
disablePortPublication: debuggingOptions.disablePortPublication, disablePortPublication: debuggingOptions.disablePortPublication,
), ),
stayResident: true, stayResident: true,
urlTunneller: null,
flutterProject: FlutterProject.current(), flutterProject: FlutterProject.current(),
fileSystem: globals.fs, fileSystem: globals.fs,
usage: globals.flutterUsage, usage: globals.flutterUsage,
......
...@@ -51,8 +51,8 @@ class DwdsWebRunnerFactory extends WebRunnerFactory { ...@@ -51,8 +51,8 @@ class DwdsWebRunnerFactory extends WebRunnerFactory {
required FlutterProject flutterProject, required FlutterProject flutterProject,
required bool? ipv6, required bool? ipv6,
required DebuggingOptions debuggingOptions, required DebuggingOptions debuggingOptions,
required UrlTunneller? urlTunneller, UrlTunneller? urlTunneller,
required Logger? logger, required Logger logger,
required FileSystem fileSystem, required FileSystem fileSystem,
required SystemClock systemClock, required SystemClock systemClock,
required Usage usage, required Usage usage,
...@@ -89,7 +89,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -89,7 +89,7 @@ class ResidentWebRunner extends ResidentRunner {
required bool? ipv6, required bool? ipv6,
required DebuggingOptions debuggingOptions, required DebuggingOptions debuggingOptions,
required FileSystem fileSystem, required FileSystem fileSystem,
required Logger? logger, required Logger logger,
required SystemClock systemClock, required SystemClock systemClock,
required Usage usage, required Usage usage,
UrlTunneller? urlTunneller, UrlTunneller? urlTunneller,
...@@ -110,13 +110,13 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -110,13 +110,13 @@ class ResidentWebRunner extends ResidentRunner {
); );
final FileSystem _fileSystem; final FileSystem _fileSystem;
final Logger? _logger; final Logger _logger;
final SystemClock _systemClock; final SystemClock _systemClock;
final Usage _usage; final Usage _usage;
final UrlTunneller? _urlTunneller; final UrlTunneller? _urlTunneller;
@override @override
Logger? get logger => _logger; Logger get logger => _logger;
@override @override
FileSystem get fileSystem => _fileSystem; FileSystem get fileSystem => _fileSystem;
...@@ -190,7 +190,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -190,7 +190,7 @@ class ResidentWebRunner extends ResidentRunner {
_generatedEntrypointDirectory?.deleteSync(recursive: true); _generatedEntrypointDirectory?.deleteSync(recursive: true);
} on FileSystemException { } on FileSystemException {
// Best effort to clean up temp dirs. // Best effort to clean up temp dirs.
_logger!.printTrace( _logger.printTrace(
'Failed to clean up temp directory: ${_generatedEntrypointDirectory!.path}', 'Failed to clean up temp directory: ${_generatedEntrypointDirectory!.path}',
); );
} }
...@@ -210,14 +210,14 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -210,14 +210,14 @@ class ResidentWebRunner extends ResidentRunner {
const String fire = '🔥'; const String fire = '🔥';
const String rawMessage = const String rawMessage =
' To hot restart changes while running, press "r" or "R".'; ' To hot restart changes while running, press "r" or "R".';
final String message = _logger!.terminal.color( final String message = _logger.terminal.color(
fire + _logger!.terminal.bolden(rawMessage), fire + _logger.terminal.bolden(rawMessage),
TerminalColor.red, TerminalColor.red,
); );
_logger!.printStatus(message); _logger.printStatus(message);
const String quitMessage = 'To quit, press "q".'; const String quitMessage = 'To quit, press "q".';
_logger!.printStatus('For a more detailed help message, press "h". $quitMessage'); _logger.printStatus('For a more detailed help message, press "h". $quitMessage');
_logger!.printStatus(''); _logger.printStatus('');
printDebuggerList(); printDebuggerList();
} }
...@@ -240,11 +240,11 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -240,11 +240,11 @@ class ResidentWebRunner extends ResidentRunner {
buildInfo: debuggingOptions.buildInfo, buildInfo: debuggingOptions.buildInfo,
); );
if (package == null) { if (package == null) {
_logger!.printStatus('This application is not configured to build on the web.'); _logger.printStatus('This application is not configured to build on the web.');
_logger!.printStatus('To add web support to a project, run `flutter create .`.'); _logger.printStatus('To add web support to a project, run `flutter create .`.');
} }
final String modeName = debuggingOptions.buildInfo.friendlyModeName; final String modeName = debuggingOptions.buildInfo.friendlyModeName;
_logger!.printStatus( _logger.printStatus(
'Launching ${getDisplayPath(target, _fileSystem)} ' 'Launching ${getDisplayPath(target, _fileSystem)} '
'on ${device!.device!.name} in $modeName mode...', 'on ${device!.device!.name} in $modeName mode...',
); );
...@@ -283,7 +283,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -283,7 +283,7 @@ class ResidentWebRunner extends ResidentRunner {
await runSourceGenerators(); await runSourceGenerators();
final UpdateFSReport report = await _updateDevFS(fullRestart: true); final UpdateFSReport report = await _updateDevFS(fullRestart: true);
if (!report.success) { if (!report.success) {
_logger!.printError('Failed to compile application.'); _logger.printError('Failed to compile application.');
appFailedToStart(); appFailedToStart();
return 1; return 1;
} }
...@@ -318,19 +318,19 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -318,19 +318,19 @@ class ResidentWebRunner extends ResidentRunner {
}); });
} on WebSocketException catch (error, stackTrace) { } on WebSocketException catch (error, stackTrace) {
appFailedToStart(); appFailedToStart();
_logger!.printError('$error', stackTrace: stackTrace); _logger.printError('$error', stackTrace: stackTrace);
throwToolExit(kExitMessage); throwToolExit(kExitMessage);
} on ChromeDebugException catch (error, stackTrace) { } on ChromeDebugException catch (error, stackTrace) {
appFailedToStart(); appFailedToStart();
_logger!.printError('$error', stackTrace: stackTrace); _logger.printError('$error', stackTrace: stackTrace);
throwToolExit(kExitMessage); throwToolExit(kExitMessage);
} on AppConnectionException catch (error, stackTrace) { } on AppConnectionException catch (error, stackTrace) {
appFailedToStart(); appFailedToStart();
_logger!.printError('$error', stackTrace: stackTrace); _logger.printError('$error', stackTrace: stackTrace);
throwToolExit(kExitMessage); throwToolExit(kExitMessage);
} on SocketException catch (error, stackTrace) { } on SocketException catch (error, stackTrace) {
appFailedToStart(); appFailedToStart();
_logger!.printError('$error', stackTrace: stackTrace); _logger.printError('$error', stackTrace: stackTrace);
throwToolExit(kExitMessage); throwToolExit(kExitMessage);
} on Exception { } on Exception {
appFailedToStart(); appFailedToStart();
...@@ -346,7 +346,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -346,7 +346,7 @@ class ResidentWebRunner extends ResidentRunner {
bool benchmarkMode = false, bool benchmarkMode = false,
}) async { }) async {
final DateTime start = _systemClock.now(); final DateTime start = _systemClock.now();
final Status status = _logger!.startProgress( final Status status = _logger.startProgress(
'Performing hot restart...', 'Performing hot restart...',
progressId: 'hot.restart', progressId: 'hot.restart',
); );
...@@ -382,7 +382,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -382,7 +382,7 @@ class ResidentWebRunner extends ResidentRunner {
try { try {
if (!deviceIsDebuggable) { if (!deviceIsDebuggable) {
_logger!.printStatus('Recompile complete. Page requires refresh.'); _logger.printStatus('Recompile complete. Page requires refresh.');
} else if (isRunningDebug) { } else if (isRunningDebug) {
await _vmService.service.callMethod('hotRestart'); await _vmService.service.callMethod('hotRestart');
} else { } else {
...@@ -400,7 +400,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -400,7 +400,7 @@ class ResidentWebRunner extends ResidentRunner {
final Duration elapsed = _systemClock.now().difference(start); final Duration elapsed = _systemClock.now().difference(start);
final String elapsedMS = getElapsedAsMilliseconds(elapsed); final String elapsedMS = getElapsedAsMilliseconds(elapsed);
_logger!.printStatus('Restarted application in $elapsedMS.'); _logger.printStatus('Restarted application in $elapsedMS.');
unawaited(residentDevtoolsHandler!.hotRestart(flutterDevices)); unawaited(residentDevtoolsHandler!.hotRestart(flutterDevices));
// Don't track restart times for dart2js builds or web-server devices. // Don't track restart times for dart2js builds or web-server devices.
...@@ -468,7 +468,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -468,7 +468,7 @@ class ResidentWebRunner extends ResidentRunner {
final bool isFirstUpload = !assetBundle.wasBuiltOnce(); final bool isFirstUpload = !assetBundle.wasBuiltOnce();
final bool rebuildBundle = assetBundle.needsBuild(); final bool rebuildBundle = assetBundle.needsBuild();
if (rebuildBundle) { if (rebuildBundle) {
_logger!.printTrace('Updating assets'); _logger.printTrace('Updating assets');
final int result = await assetBundle.build( final int result = await assetBundle.build(
packagesPath: debuggingOptions.buildInfo.packagesPath, packagesPath: debuggingOptions.buildInfo.packagesPath,
targetPlatform: TargetPlatform.web_javascript, targetPlatform: TargetPlatform.web_javascript,
...@@ -484,7 +484,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -484,7 +484,7 @@ class ResidentWebRunner extends ResidentRunner {
packageConfig: device!.devFS!.lastPackageConfig packageConfig: device!.devFS!.lastPackageConfig
?? debuggingOptions.buildInfo.packageConfig, ?? debuggingOptions.buildInfo.packageConfig,
); );
final Status devFSStatus = _logger!.startProgress( final Status devFSStatus = _logger.startProgress(
'Waiting for connection from debug service on ${device!.device!.name}...', 'Waiting for connection from debug service on ${device!.device!.name}...',
); );
final UpdateFSReport report = await device!.devFS!.update( final UpdateFSReport report = await device!.devFS!.update(
...@@ -507,7 +507,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -507,7 +507,7 @@ class ResidentWebRunner extends ResidentRunner {
shaderCompiler: device!.developmentShaderCompiler, shaderCompiler: device!.developmentShaderCompiler,
); );
devFSStatus.stop(); devFSStatus.stop();
_logger!.printTrace('Synced ${getSizeAsMB(report.syncedBytes)}.'); _logger.printTrace('Synced ${getSizeAsMB(report.syncedBytes)}.');
return report; return report;
} }
...@@ -538,7 +538,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -538,7 +538,7 @@ class ResidentWebRunner extends ResidentRunner {
void onLogEvent(vmservice.Event event) { void onLogEvent(vmservice.Event event) {
final String message = processVmServiceMessage(event); final String message = processVmServiceMessage(event);
_logger!.printStatus(message); _logger.printStatus(message);
} }
_stdOutSub = _vmService.service.onStdoutEvent.listen(onLogEvent); _stdOutSub = _vmService.service.onStdoutEvent.listen(onLogEvent);
...@@ -609,16 +609,16 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -609,16 +609,16 @@ class ResidentWebRunner extends ResidentRunner {
..createSync(recursive: true) ..createSync(recursive: true)
..writeAsStringSync(websocketUri.toString()); ..writeAsStringSync(websocketUri.toString());
} }
_logger!.printStatus('Debug service listening on $websocketUri'); _logger.printStatus('Debug service listening on $websocketUri');
_logger!.printStatus(''); _logger.printStatus('');
if (debuggingOptions.buildInfo.nullSafetyMode == NullSafetyMode.sound) { if (debuggingOptions.buildInfo.nullSafetyMode == NullSafetyMode.sound) {
_logger!.printStatus('💪 Running with sound null safety 💪', emphasis: true); _logger.printStatus('💪 Running with sound null safety 💪', emphasis: true);
} else { } else {
_logger!.printStatus( _logger.printStatus(
'Running without sound null safety ⚠️', 'Running without sound null safety ⚠️',
emphasis: true, emphasis: true,
); );
_logger!.printStatus( _logger.printStatus(
'Dart 3 will only support sound null safety, see https://dart.dev/null-safety', 'Dart 3 will only support sound null safety, see https://dart.dev/null-safety',
); );
} }
......
...@@ -637,7 +637,7 @@ abstract class ResidentHandlers { ...@@ -637,7 +637,7 @@ abstract class ResidentHandlers {
ResidentDevtoolsHandler? get residentDevtoolsHandler; ResidentDevtoolsHandler? get residentDevtoolsHandler;
@protected @protected
Logger? get logger; Logger get logger;
@protected @protected
FileSystem? get fileSystem; FileSystem? get fileSystem;
...@@ -666,7 +666,7 @@ abstract class ResidentHandlers { ...@@ -666,7 +666,7 @@ abstract class ResidentHandlers {
final String data = await device.vmService!.flutterDebugDumpApp( final String data = await device.vmService!.flutterDebugDumpApp(
isolateId: view.uiIsolate!.id!, isolateId: view.uiIsolate!.id!,
); );
logger!.printStatus(data); logger.printStatus(data);
} }
} }
return true; return true;
...@@ -683,7 +683,7 @@ abstract class ResidentHandlers { ...@@ -683,7 +683,7 @@ abstract class ResidentHandlers {
final String data = await device.vmService!.flutterDebugDumpRenderTree( final String data = await device.vmService!.flutterDebugDumpRenderTree(
isolateId: view.uiIsolate!.id!, isolateId: view.uiIsolate!.id!,
); );
logger!.printStatus(data); logger.printStatus(data);
} }
} }
return true; return true;
...@@ -702,7 +702,7 @@ abstract class ResidentHandlers { ...@@ -702,7 +702,7 @@ abstract class ResidentHandlers {
} }
for (final FlutterDevice? device in flutterDevices) { for (final FlutterDevice? device in flutterDevices) {
if (device?.targetPlatform == TargetPlatform.web_javascript) { if (device?.targetPlatform == TargetPlatform.web_javascript) {
logger!.printWarning('Unable to get jank metrics for web'); logger.printWarning('Unable to get jank metrics for web');
continue; continue;
} }
final List<FlutterView> views = await device!.vmService!.getFlutterViews(); final List<FlutterView> views = await device!.vmService!.getFlutterViews();
...@@ -719,9 +719,9 @@ abstract class ResidentHandlers { ...@@ -719,9 +719,9 @@ abstract class ResidentHandlers {
'json', 'json',
); );
tempFile.writeAsStringSync(jsonEncode(rasterData), flush: true); tempFile.writeAsStringSync(jsonEncode(rasterData), flush: true);
logger!.printStatus('Wrote jank metrics to ${tempFile.absolute.path}'); logger.printStatus('Wrote jank metrics to ${tempFile.absolute.path}');
} else { } else {
logger!.printWarning('Unable to get jank metrics.'); logger.printWarning('Unable to get jank metrics.');
} }
} }
} }
...@@ -739,7 +739,7 @@ abstract class ResidentHandlers { ...@@ -739,7 +739,7 @@ abstract class ResidentHandlers {
final String data = await device.vmService!.flutterDebugDumpLayerTree( final String data = await device.vmService!.flutterDebugDumpLayerTree(
isolateId: view.uiIsolate!.id!, isolateId: view.uiIsolate!.id!,
); );
logger!.printStatus(data); logger.printStatus(data);
} }
} }
return true; return true;
...@@ -758,7 +758,7 @@ abstract class ResidentHandlers { ...@@ -758,7 +758,7 @@ abstract class ResidentHandlers {
final String data = await device.vmService!.flutterDebugDumpSemanticsTreeInTraversalOrder( final String data = await device.vmService!.flutterDebugDumpSemanticsTreeInTraversalOrder(
isolateId: view.uiIsolate!.id!, isolateId: view.uiIsolate!.id!,
); );
logger!.printStatus(data); logger.printStatus(data);
} }
} }
return true; return true;
...@@ -777,7 +777,7 @@ abstract class ResidentHandlers { ...@@ -777,7 +777,7 @@ abstract class ResidentHandlers {
final String data = await device.vmService!.flutterDebugDumpSemanticsTreeInInverseHitTestOrder( final String data = await device.vmService!.flutterDebugDumpSemanticsTreeInInverseHitTestOrder(
isolateId: view.uiIsolate!.id!, isolateId: view.uiIsolate!.id!,
); );
logger!.printStatus(data); logger.printStatus(data);
} }
} }
return true; return true;
...@@ -891,7 +891,7 @@ abstract class ResidentHandlers { ...@@ -891,7 +891,7 @@ abstract class ResidentHandlers {
brightness: next, brightness: next,
); );
} }
logger!.printStatus('Changed brightness to $next.'); logger.printStatus('Changed brightness to $next.');
} }
return true; return true;
} }
...@@ -916,7 +916,7 @@ abstract class ResidentHandlers { ...@@ -916,7 +916,7 @@ abstract class ResidentHandlers {
); );
} }
} }
logger!.printStatus('Switched operating system to $to'); logger.printStatus('Switched operating system to $to');
return true; return true;
} }
...@@ -954,7 +954,7 @@ abstract class ResidentHandlers { ...@@ -954,7 +954,7 @@ abstract class ResidentHandlers {
if (!device.device!.supportsScreenshot && !supportsServiceProtocol) { if (!device.device!.supportsScreenshot && !supportsServiceProtocol) {
return; return;
} }
final Status status = logger!.startProgress( final Status status = logger.startProgress(
'Taking screenshot for ${device.device!.name}...', 'Taking screenshot for ${device.device!.name}...',
); );
final File outputFile = getUniqueFile( final File outputFile = getUniqueFile(
...@@ -975,12 +975,12 @@ abstract class ResidentHandlers { ...@@ -975,12 +975,12 @@ abstract class ResidentHandlers {
} }
final int sizeKB = outputFile.lengthSync() ~/ 1024; final int sizeKB = outputFile.lengthSync() ~/ 1024;
status.stop(); status.stop();
logger!.printStatus( logger.printStatus(
'Screenshot written to ${fileSystem!.path.relative(outputFile.path)} (${sizeKB}kB).', 'Screenshot written to ${fileSystem!.path.relative(outputFile.path)} (${sizeKB}kB).',
); );
} on Exception catch (error) { } on Exception catch (error) {
status.cancel(); status.cancel();
logger!.printError('Error taking screenshot: $error'); logger.printError('Error taking screenshot: $error');
} }
} }
...@@ -1016,7 +1016,7 @@ abstract class ResidentHandlers { ...@@ -1016,7 +1016,7 @@ abstract class ResidentHandlers {
} }
return true; return true;
} on vm_service.RPCError catch (error) { } on vm_service.RPCError catch (error) {
logger!.printError('Error communicating with Flutter on the device: $error'); logger.printError('Error communicating with Flutter on the device: $error');
return false; return false;
} }
} }
...@@ -1088,7 +1088,7 @@ abstract class ResidentRunner extends ResidentHandlers { ...@@ -1088,7 +1088,7 @@ abstract class ResidentRunner extends ResidentHandlers {
} }
@override @override
Logger? get logger => globals.logger; Logger get logger => globals.logger;
@override @override
FileSystem get fileSystem => globals.fs; FileSystem get fileSystem => globals.fs;
......
...@@ -26,8 +26,8 @@ abstract class WebRunnerFactory { ...@@ -26,8 +26,8 @@ abstract class WebRunnerFactory {
required FlutterProject flutterProject, required FlutterProject flutterProject,
required bool? ipv6, required bool? ipv6,
required DebuggingOptions debuggingOptions, required DebuggingOptions debuggingOptions,
required UrlTunneller? urlTunneller, UrlTunneller? urlTunneller,
required Logger? logger, required Logger logger,
required FileSystem fileSystem, required FileSystem fileSystem,
required SystemClock systemClock, required SystemClock systemClock,
required Usage usage, required Usage usage,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment