// 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)) {
      if (!canRunChrome) {
        messages.add(ValidationMessage.hint('$chrome is not executable.'));
      } else {
        messages.add(ValidationMessage('$kChromeEnvironment = $chrome'));
      }
    } else {
      if (!canRunChrome) {
        messages.add(ValidationMessage.hint('$kChromeEnvironment not set'));
      } else {
        messages.add(ValidationMessage('Chrome at $chrome'));
      }
    }
    if (!canRunChrome) {
      return ValidationResult(
        ValidationType.missing,
        messages,
        statusInfo: 'Cannot find chrome executable at $chrome',
      );
    }
    return ValidationResult(
      ValidationType.installed,
      messages,
    );
  }
}