#ifndef COMPONENTS_DOWNLOAD_PUBLIC_COMMON_URL_DOWNLOAD_HANDLER_H_
#define COMPONENTS_DOWNLOAD_PUBLIC_COMMON_URL_DOWNLOAD_HANDLER_H_
#include "components/download/public/common/download_export.h"
#include "components/download/public/common/download_url_parameters.h"
#include "components/download/public/common/url_loader_factory_provider.h"
namespace download {
struct DownloadCreateInfo;
class InputStream;
using UrlDownloadHandlerID = std::uintptr_t;
class COMPONENTS_DOWNLOAD_EXPORT UrlDownloadHandler {
public:
using UniqueUrlDownloadHandlerPtr =
std::unique_ptr<UrlDownloadHandler, base::OnTaskRunnerDeleter>;
class COMPONENTS_DOWNLOAD_EXPORT Delegate {
public:
virtual void OnUrlDownloadStarted(
std::unique_ptr<DownloadCreateInfo> download_create_info,
std::unique_ptr<InputStream> input_stream,
URLLoaderFactoryProvider::URLLoaderFactoryProviderPtr
url_loader_factory_provider,
UrlDownloadHandlerID downloader,
DownloadUrlParameters::OnStartedCallback callback) = 0;
virtual void OnUrlDownloadStopped(UrlDownloadHandlerID downloader) = 0;
virtual void OnUrlDownloadHandlerCreated(
UniqueUrlDownloadHandlerPtr downloader) {}
};
UrlDownloadHandler() = default;
UrlDownloadHandler(const UrlDownloadHandler&) = delete;
UrlDownloadHandler& operator=(const UrlDownloadHandler&) = delete;
#if BUILDFLAG(ARKWEB_NETWORK_BASE)
virtual std::string GetGuid() { return ""; }
#endif
virtual ~UrlDownloadHandler() = default;
};
}
#endif