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

#ifndef LOGIN_MANAGER_FAKE_GENERATED_KEY_HANDLER_H_
#define LOGIN_MANAGER_FAKE_GENERATED_KEY_HANDLER_H_

#include "login_manager/key_generator.h"

#include <string>

#include <base/files/file_path.h>

namespace login_manager {

class FakeGeneratedKeyHandler : public KeyGenerator::Delegate {
 public:
  FakeGeneratedKeyHandler();
  virtual ~FakeGeneratedKeyHandler();

  const std::string& key_username() { return key_username_; }
  const std::string& key_contents() { return key_contents_; }

  // Overridden from KeyGenerator::Delegate
  virtual void OnKeyGenerated(const std::string& username,
                              const base::FilePath& temp_key_file) OVERRIDE;
 private:
  std::string key_username_;
  std::string key_contents_;
  DISALLOW_COPY_AND_ASSIGN(FakeGeneratedKeyHandler);
};
}  // namespace login_manager

#endif  // LOGIN_MANAGER_FAKE_GENERATED_KEY_HANDLER_H_
