#ifndef CHROME_ENTERPRISE_COMPANION_PROXY_CONFIG_SERVICE_H_
#define CHROME_ENTERPRISE_COMPANION_PROXY_CONFIG_SERVICE_H_
#include <memory>
#include <optional>
#include "base/functional/callback_forward.h"
#include "base/memory/scoped_refptr.h"
#include "net/proxy_resolution/proxy_config.h"
namespace device_management_storage {
class DMStorage;
}
namespace net {
class ProxyConfigService;
}
namespace enterprise_companion {
struct ProxyConfigAndOverridePrecedence {
net::ProxyConfig config;
std::optional<bool> cloud_policy_overrides_platform_policy;
};
std::unique_ptr<net::ProxyConfigService> CreatePolicyProxyConfigService(
scoped_refptr<device_management_storage::DMStorage> dm_storage,
base::RepeatingCallback<std::optional<ProxyConfigAndOverridePrecedence>()>
system_policy_proxy_config_provider,
std::unique_ptr<net::ProxyConfigService> fallback);
base::RepeatingCallback<std::optional<ProxyConfigAndOverridePrecedence>()>
GetDefaultSystemPolicyProxyConfigProvider();
}
#endif