| // 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. |
| // |
| // Abstract interface for implementing minijails |
| |
| #ifndef __CHROMEOS_MINIJAIL_INTERFACE_H |
| #define __CHROMEOS_MINIJAIL_INTERFACE_H |
| |
| #include <base/basictypes.h> |
| #include <base/memory/scoped_ptr.h> |
| |
| namespace chromeos { |
| namespace minijail { |
| |
| class Options; |
| |
| class Interface { |
| public: |
| Interface() : options_(NULL) { } // new default |
| virtual ~Interface() { } |
| virtual bool Initialize(const Options *options) |
| { set_options(options); return true; } |
| virtual const Options *options() const { return options_; } |
| virtual void set_options(const Options *options) { options_ = options; } |
| |
| // To be overriden. |
| virtual const char *name() { return "minijail::Interface"; } |
| // Implements the jail logic |
| virtual bool Jail() const = 0; |
| // Performs the execution step. It isn't required to return. |
| virtual bool Run() const; |
| |
| private: |
| const Options *options_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Interface); |
| }; |
| |
| } // namespace minijail |
| } // namespace chromeos |
| |
| #endif // __CHROMEOS_MINIJAIL_INTERFACE_H |