// 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:meta/meta.dart'; import 'package:platform/platform.dart'; import '../base/file_system.dart'; import '../doctor.dart'; import 'chrome.dart'; /// A validator that checks whether chrome is installed and can run. class WebValidator extends DoctorValidator { const WebValidator({ @required Platform platform, @required ChromeLauncher chromeLauncher, @required FileSystem fileSystem, }) : _platform = platform, _chromeLauncher = chromeLauncher, _fileSystem = fileSystem, super('Chrome - develop for the web'); final Platform _platform; final ChromeLauncher _chromeLauncher; final FileSystem _fileSystem; @override Future validate() async { final String chrome = findChromeExecutable(_platform, _fileSystem); final bool canRunChrome = _chromeLauncher.canFindChrome(); final List messages = [ if (_platform.environment.containsKey(kChromeEnvironment)) if (!canRunChrome) ValidationMessage.hint('$chrome is not executable.') else ValidationMessage('$kChromeEnvironment = $chrome') else if (!canRunChrome) ValidationMessage.hint('Cannot find Chrome. Try setting ' '$kChromeEnvironment to a Chrome executable.') else ValidationMessage('Chrome at $chrome'), ]; if (!canRunChrome) { return ValidationResult( ValidationType.missing, messages, statusInfo: 'Cannot find chrome executable at $chrome', ); } return ValidationResult( ValidationType.installed, messages, ); } }