#ifndef CHROME_UPDATER_EXTERNAL_CONSTANTS_BUILDER_H_
#define CHROME_UPDATER_EXTERNAL_CONSTANTS_BUILDER_H_
#include <optional>
#include <string>
#include <vector>
#include "base/files/file_path.h"
#include "base/values.h"
namespace base {
class TimeDelta;
}
namespace crx_file {
enum class VerifierFormat;
}
namespace updater {
struct EventLoggingPermissionProvider;
class ExternalConstantsBuilder {
public:
ExternalConstantsBuilder() = default;
~ExternalConstantsBuilder();
ExternalConstantsBuilder& SetUpdateURL(const std::vector<std::string>& urls);
ExternalConstantsBuilder& ClearUpdateURL();
ExternalConstantsBuilder& SetCrashUploadURL(const std::string& url);
ExternalConstantsBuilder& ClearCrashUploadURL();
ExternalConstantsBuilder& SetAppLogoURL(const std::string& url);
ExternalConstantsBuilder& ClearAppLogoURL();
ExternalConstantsBuilder& SetEventLoggingUrl(const std::string& url);
ExternalConstantsBuilder& ClearEventLoggingUrl();
ExternalConstantsBuilder& SetEventLoggingPermissionProvider(
std::optional<EventLoggingPermissionProvider>
event_logging_permission_provider);
ExternalConstantsBuilder& ClearEventLoggingPermissionProvider();
ExternalConstantsBuilder& SetMinimumEventLoggingCooldown(
base::TimeDelta cooldown);
ExternalConstantsBuilder& ClearMinimumEventLoggingCooldown();
ExternalConstantsBuilder& SetUseCUP(bool use_cup);
ExternalConstantsBuilder& ClearUseCUP();
ExternalConstantsBuilder& SetInitialDelay(base::TimeDelta initial_delay);
ExternalConstantsBuilder& ClearInitialDelay();
ExternalConstantsBuilder& SetServerKeepAliveTime(
base::TimeDelta server_keep_alive_seconds);
ExternalConstantsBuilder& ClearServerKeepAliveSeconds();
ExternalConstantsBuilder& SetCrxVerifierFormat(
crx_file::VerifierFormat crx_verifier_format);
ExternalConstantsBuilder& ClearCrxVerifierFormat();
ExternalConstantsBuilder& SetCrxPublicKeyHash(
std::optional<std::vector<uint8_t>> crx_public_key_hash);
ExternalConstantsBuilder& ClearCrxPublicKeyHash();
ExternalConstantsBuilder& SetDictPolicies(
const base::Value::Dict& dict_policies);
ExternalConstantsBuilder& ClearDictPolicies();
ExternalConstantsBuilder& SetOverinstallTimeout(
base::TimeDelta overinstall_timeout);
ExternalConstantsBuilder& ClearOverinstallTimeout();
ExternalConstantsBuilder& SetIdleCheckPeriod(
base::TimeDelta idle_check_period);
ExternalConstantsBuilder& ClearIdleCheckPeriod();
ExternalConstantsBuilder& SetMachineManaged(
std::optional<bool> is_managed_device);
ExternalConstantsBuilder& ClearMachineManaged();
ExternalConstantsBuilder& SetCecaConnectionTimeout(
base::TimeDelta ceca_connection_timeout);
ExternalConstantsBuilder& ClearCecaConnectionTimeout();
bool Overwrite();
bool Modify();
private:
base::Value::Dict overrides_;
bool written_ = false;
};
}
#endif