// Copyright (c) 2006-2008 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.

#ifndef IPC_IPC_TESTS_H_
#define IPC_IPC_TESTS_H_
#pragma once

#include "base/test/multiprocess_test.h"
#include "base/process.h"

// This unit test uses 3 types of child processes, a regular pipe client,
// a client reflector and a IPC server used for fuzzing tests.
enum ChildType {
  TEST_CLIENT,
  TEST_DESCRIPTOR_CLIENT,
  TEST_DESCRIPTOR_CLIENT_SANDBOXED,
  TEST_REFLECTOR,
  FUZZER_SERVER,
  SYNC_SOCKET_SERVER
};

// The different channel names for the child processes.
extern const char kTestClientChannel[];
extern const char kReflectorChannel[];
extern const char kFuzzerChannel[];
extern const char kSyncSocketChannel[];

class MessageLoopForIO;
namespace IPC {
class Channel;
}  // namespace IPC

//Base class to facilitate Spawning IPC Client processes.
class IPCChannelTest : public base::MultiProcessTest {
 protected:

  // Create a new MessageLoopForIO For each test.
  virtual void SetUp();
  virtual void TearDown();

  // Spawns a child process of the specified type
  base::ProcessHandle SpawnChild(ChildType child_type, IPC::Channel* channel);

  // Created around each test instantiation.
  MessageLoopForIO* message_loop_;
};

#endif  // IPC_IPC_TESTS_H_
