chromium/chrome/test/base/ash/interactive/network/shill_service_util.h

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

#ifndef CHROME_TEST_BASE_ASH_INTERACTIVE_NETWORK_SHILL_SERVICE_UTIL_H_
#define CHROME_TEST_BASE_ASH_INTERACTIVE_NETWORK_SHILL_SERVICE_UTIL_H_

#include <string>

namespace ash {

// Helper class to simplify the definition of shill service constants.
class ShillServiceInfo {
 public:
  // The `id` parameter is used when generating values for each of the different
  // shill service constants below.
  explicit ShillServiceInfo(unsigned int id, const std::string service_type);
  ~ShillServiceInfo();

  const std::string& service_name() const { return service_name_; }
  const std::string& service_path() const { return service_path_; }
  const std::string& service_guid() const { return service_guid_; }

  // Configure the shill service and add to the shared profile. Make a
  // connection request to the network if `connected`.
  void ConfigureService(bool connected) const;

 private:
  const std::string service_name_;
  const std::string service_path_;
  const std::string service_guid_;
  const std::string service_type_;
};

void ConnectShillService(const std::string& service_path);

void DisconnectShillService(const std::string& service_path);

}  // namespace ash

#endif  // CHROME_TEST_BASE_ASH_INTERACTIVE_NETWORK_SHILL_SERVICE_UTIL_H_