// Copyright 2019 The Chromium 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.dart';
import 'chrome.dart';
import 'workflow.dart';

/// A validator that checks whether chrome is installed and can run.
class WebValidator extends DoctorValidator {
  const WebValidator() : super('Chrome - develop for the web');

  @override
  Future<ValidationResult> validate() async {
    final String chrome = findChromeExecutable();
    final bool canRunChrome = canFindChrome();
    final List<ValidationMessage> messages = <ValidationMessage>[];
    if (platform.environment.containsKey(kChromeEnvironment)) {
      messages.add(ValidationMessage('$kChromeEnvironment = $chrome'));
    } else {
      messages.add(ValidationMessage('Chrome at $chrome'));
      messages.add(ValidationMessage.hint('$kChromeEnvironment not set'));
    }
    if (!canRunChrome) {
      return ValidationResult(
        ValidationType.missing,
        messages,
        statusInfo: 'Cannot find chrome executable at $chrome',
      );
    }
    return ValidationResult(
      ValidationType.installed,
      messages,
    );
  }
}
