| // 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 handleStartedProcess(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> handleFinishedTest(ProcessEvent event) async { } |
| |
| /// Called when the test process crashed before connecting to test harness. |
| Future<void> handleTestCrashed(ProcessEvent event) async { } |
| |
| /// Called if we timed out waiting for the test process to connect to test |
| /// harness. |
| Future<void> handleTestTimedOut(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 URL or null if not debugging. |
| final Uri observatoryUri; |
| } |