// 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_UPDATER_NET_NETWORK_FILE_FETCHER_H_
#define CHROME_UPDATER_NET_NETWORK_FILE_FETCHER_H_
#include "base/files/file.h"
#include "base/sequence_checker.h"
#include "components/update_client/network.h"
class GURL;
namespace updater {
// A customized fetcher that takes a `base::File` argument as the
// output destination.
class NetworkFileFetcher {
public:
NetworkFileFetcher() = default;
NetworkFileFetcher& operator=(const NetworkFileFetcher&) = delete;
NetworkFileFetcher(const NetworkFileFetcher&) = delete;
~NetworkFileFetcher() = default;
base::OnceClosure Download(
const GURL& url,
base::File output,
update_client::NetworkFetcher::ResponseStartedCallback
response_started_callback,
update_client::NetworkFetcher::ProgressCallback progress_callback,
update_client::NetworkFetcher::DownloadToFileCompleteCallback
download_to_file_complete_callback);
private:
SEQUENCE_CHECKER(sequence_checker_);
};
} // namespace updater
#endif // CHROME_UPDATER_NET_NETWORK_FILE_FETCHER_H_