| // 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 '../base/platform.dart'; |
| import '../doctor_validator.dart'; |
| import 'chrome.dart'; |
| |
| /// A validator for Chromium-based browsers. |
| abstract class ChromiumValidator extends DoctorValidator { |
| const ChromiumValidator(String title) : super(title); |
| |
| Platform get _platform; |
| ChromiumLauncher get _chromiumLauncher; |
| String get _name; |
| |
| @override |
| Future<ValidationResult> validate() async { |
| final bool canRunChromium = _chromiumLauncher.canFindExecutable(); |
| final String chromiumSearchLocation = _chromiumLauncher.findExecutable(); |
| final List<ValidationMessage> messages = <ValidationMessage>[ |
| if (_platform.environment.containsKey(kChromeEnvironment)) |
| if (!canRunChromium) |
| ValidationMessage.hint('$chromiumSearchLocation is not executable.') |
| else |
| ValidationMessage('$kChromeEnvironment = $chromiumSearchLocation') |
| else |
| if (!canRunChromium) |
| ValidationMessage.hint('Cannot find $_name. Try setting ' |
| '$kChromeEnvironment to a $_name executable.') |
| else |
| ValidationMessage('$_name at $chromiumSearchLocation'), |
| ]; |
| if (!canRunChromium) { |
| return ValidationResult( |
| ValidationType.missing, |
| messages, |
| statusInfo: 'Cannot find $_name executable at $chromiumSearchLocation', |
| ); |
| } |
| return ValidationResult( |
| ValidationType.installed, |
| messages, |
| ); |
| } |
| } |
| |
| /// A validator that checks whether Chrome is installed and can run. |
| class ChromeValidator extends ChromiumValidator { |
| const ChromeValidator({ |
| required Platform platform, |
| required ChromiumLauncher chromiumLauncher, |
| }) : _platform = platform, |
| _chromiumLauncher = chromiumLauncher, |
| super('Chrome - develop for the web'); |
| |
| @override |
| final Platform _platform; |
| |
| @override |
| final ChromiumLauncher _chromiumLauncher; |
| |
| @override |
| String get _name => 'Chrome'; |
| } |
| |
| /// A validator that checks whether Edge is installed and can run. |
| class EdgeValidator extends ChromiumValidator { |
| const EdgeValidator({ |
| required Platform platform, |
| required ChromiumLauncher chromiumLauncher, |
| }) : _platform = platform, |
| _chromiumLauncher = chromiumLauncher, |
| super('Edge - develop for the web'); |
| |
| @override |
| final Platform _platform; |
| |
| @override |
| final ChromiumLauncher _chromiumLauncher; |
| |
| @override |
| String get _name => 'Edge'; |
| } |