// 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 CrosConfig::Init().
  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_
