#ifndef CHROME_UPDATER_EXTERNAL_CONSTANTS_H_
#define CHROME_UPDATER_EXTERNAL_CONSTANTS_H_
#include <cstdint>
#include <optional>
#include <vector>
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_refptr.h"
#include "base/values.h"
class GURL;
namespace base {
class TimeDelta;
}
namespace crx_file {
enum class VerifierFormat;
}
namespace updater {
struct EventLoggingPermissionProvider {
public:
std::string app_id;
#if BUILDFLAG(IS_MAC)
std::string directory_name;
#endif
};
class ExternalConstants : public base::RefCountedThreadSafe<ExternalConstants> {
public:
explicit ExternalConstants(scoped_refptr<ExternalConstants> next_provider);
ExternalConstants(const ExternalConstants&) = delete;
ExternalConstants& operator=(const ExternalConstants&) = delete;
virtual std::vector<GURL> UpdateURL() const = 0;
virtual GURL CrashUploadURL() const = 0;
virtual GURL AppLogoURL() const = 0;
virtual GURL EventLoggingURL() const = 0;
virtual bool UseCUP() const = 0;
virtual base::TimeDelta InitialDelay() const = 0;
virtual base::TimeDelta ServerKeepAliveTime() const = 0;
virtual crx_file::VerifierFormat CrxVerifierFormat() const = 0;
virtual std::optional<std::vector<uint8_t>> CrxPublicKeyHash() const = 0;
virtual base::TimeDelta MinimumEventLoggingCooldown() const = 0;
virtual std::optional<EventLoggingPermissionProvider>
GetEventLoggingPermissionProvider() const = 0;
virtual base::Value::Dict DictPolicies() const = 0;
virtual base::TimeDelta OverinstallTimeout() const = 0;
virtual base::TimeDelta IdleCheckPeriod() const = 0;
virtual std::optional<bool> IsMachineManaged() const = 0;
virtual base::TimeDelta CecaConnectionTimeout() const = 0;
protected:
friend class base::RefCountedThreadSafe<ExternalConstants>;
scoped_refptr<ExternalConstants> next_provider_;
virtual ~ExternalConstants();
};
scoped_refptr<ExternalConstants> CreateExternalConstants();
}
#endif