chromium/ash/webui/eche_app_ui/system_info.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_WEBUI_ECHE_APP_UI_SYSTEM_INFO_H_
#define ASH_WEBUI_ECHE_APP_UI_SYSTEM_INFO_H_

#include <memory>
#include <string>

namespace ash::eche_app {

// Stores system information for Eche app.
class SystemInfo {
 public:
  class Builder {
   public:
    Builder();
    virtual ~Builder();

    std::unique_ptr<SystemInfo> Build();
    Builder& SetBoardName(const std::string& board_name);
    Builder& SetDeviceName(const std::string& device_name);
    Builder& SetGaiaId(const std::string& gaia_id);
    Builder& SetDeviceType(const std::string& device_type);
    Builder& SetOsVersion(const std::string& os_version);
    Builder& SetChannel(const std::string& channel);

   private:
    std::string board_name_;
    std::string device_name_;
    std::string gaia_id_;
    std::string device_type_;
    std::string os_version_;
    std::string channel_;
  };

  SystemInfo(const SystemInfo& other);
  virtual ~SystemInfo();

  std::string GetDeviceName() const { return device_name_; }
  std::string GetBoardName() const { return board_name_; }
  std::string GetGaiaId() const { return gaia_id_; }
  std::string GetDeviceType() const { return device_type_; }
  std::string GetOsVersion() const { return os_version_; }
  std::string GetChannel() const { return channel_; }

 protected:
  SystemInfo(const std::string& device_name,
             const std::string& board_name,
             const std::string& gaia_id,
             const std::string& device_type,
             const std::string& os_version,
             const std::string& channel);

 private:
  std::string device_name_;
  std::string board_name_;
  std::string gaia_id_;
  std::string device_type_;
  std::string os_version_;
  std::string channel_;
};

}  // namespace ash::eche_app

#endif  // ASH_WEBUI_ECHE_APP_UI_SYSTEM_INFO_H_