// Copyright (c) 2009 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.
// Some portions Copyright (c) 2009 The Chromium Authors.
//
// Implements a simple jail that uses CommandLine heavily instead of
// the Options class.  It should act as a simple reference implementation
// for all functionality.

#ifndef __CHROMEOS_MINIJAIL_MINIJAIL_H
#define __CHROMEOS_MINIJAIL_MINIJAIL_H

#include <string>

#include <base/basictypes.h>
#include <base/logging.h>
#include <base/memory/scoped_ptr.h>

#include "minijail/env.h"
#include "minijail/options.h"
#include "minijail/interface.h"

namespace chromeos {


class MiniJailOptions : public minijail::Options {
 public:
  MiniJailOptions() { }
  ~MiniJailOptions() { }
  // We can set some defaults here if desired.
 private:
  DISALLOW_COPY_AND_ASSIGN(MiniJailOptions);
};

class MiniJail : public minijail::Interface {
 public:
  MiniJail() { }
  ~MiniJail() { }
  const char *name() { return "MiniJail"; }
  bool Jail() const;
 private:
  DISALLOW_COPY_AND_ASSIGN(MiniJail);
};

}  // namespace chromeos

#endif  // __CHROMEOS_MINIJAIL_MINIJAIL
