// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "login_manager/fake_child_process.h"

namespace login_manager {

FakeChildProcess::FakeChildProcess(pid_t pid,
                                   int status,
                                   SessionManagerService::TestApi api)
    : pid_(pid),
      exit_status_(status),
      test_api_(api) {
}

FakeChildProcess::~FakeChildProcess() {}

void FakeChildProcess::ScheduleExit() {
  test_api_.ScheduleChildExit(pid_, exit_status_);
}

}  // namespace login_manager
