// Copyright 2017 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 POWER_MANAGER_COMMON_CROS_CONFIG_PREFS_SOURCE_H_
#define POWER_MANAGER_COMMON_CROS_CONFIG_PREFS_SOURCE_H_

#include <memory>
#include <string>

#include <cros_config/cros_config_interface.h>

#include "power_manager/common/prefs.h"

namespace power_manager {

// PrefsSourceInterface implementation that uses libcros_config to read
// preferences.
class CrosConfigPrefsSource : public PrefsSourceInterface {
 public:
  // |config| must already be initialized with e.g. CrosConfig::InitModel().
  explicit CrosConfigPrefsSource(
      std::unique_ptr<brillo::CrosConfigInterface> config);
  ~CrosConfigPrefsSource() override;

  // PrefsSourceInterface:
  std::string GetDescription() const override;
  bool ReadPrefString(const std::string& name, std::string* value_out) override;

 private:
  std::unique_ptr<brillo::CrosConfigInterface> config_;

  DISALLOW_COPY_AND_ASSIGN(CrosConfigPrefsSource);
};

}  // namespace power_manager

#endif  // POWER_MANAGER_COMMON_CROS_CONFIG_PREFS_SOURCE_H_
