// Copyright 2017 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 'dart:async';
import '../base/io.dart' show Process;

/// Callbacks for reporting progress while running tests.
abstract class TestWatcher {
  /// Called after a child process starts.
  ///
  /// If startPaused was true, the caller needs to resume in Observatory to
  /// start running the tests.
  void onStartedProcess(ProcessEvent event) {}

  /// Called after the tests finish but before the process exits.
  ///
  /// The child process won't exit until this method completes.
  /// Not called if the process died.
  Future<void> onFinishedTest(ProcessEvent event) async {}

  /// Called when the test process crashed before connecting to test harness.
  Future<void> onTestCrashed(ProcessEvent event) async {}

  /// Called if we timed out waiting for the test process to connect to test
  /// harness.
  Future<void> onTestTimedOut(ProcessEvent event) async {}
}

/// Describes a child process started during testing.
class ProcessEvent {
  ProcessEvent(this.childIndex, this.process, [this.observatoryUri]);

  /// The index assigned when the child process was launched.
  ///
  /// Indexes are assigned consecutively starting from zero.
  /// When debugging, there should only be one child process so this will
  /// always be zero.
  final int childIndex;

  final Process process;

  /// The observatory Uri or null if not debugging.
  final Uri observatoryUri;
}
