#ifndef THIRD_PARTY_HUNSPELL_SANDBOX_SANDBOX_H_
#define THIRD_PARTY_HUNSPELL_SANDBOX_SANDBOX_H_

#include <memory>
#include <string>
#include <utility>

#include "third_party/hunspell/sandbox/sandboxed_hunspell.sapi.h"
#include "third_party/sandboxed_api/sandbox2/policy.h"

namespace sandboxed_hunspell {

class LibHunspellSapiSandbox : public LibHunspellSandbox {
 public:
  explicit LibHunspellSapiSandbox(std::string affix_file_name,
                                  std::string dictionary_file_name)
      : affix_file_name_(std::move(affix_file_name)),
        dictionary_file_name_(std::move(dictionary_file_name)) {}

 private:
  std::unique_ptr<sandbox2::Policy> ModifyPolicy(
      sandbox2::PolicyBuilder* builder) override {
    return builder->AddFile(affix_file_name_, /*is_ro=*/true)
        .AddFile(dictionary_file_name_, /*is_ro=*/true)
        .BuildOrDie();
  }

  std::string affix_file_name_;
  std::string dictionary_file_name_;
};

}  // namespace sandboxed_hunspell

#endif  // THIRD_PARTY_HUNSPELL_SANDBOX_SANDBOX_H_
