// 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 COMPONENTS_UPDATE_CLIENT_BACKGROUND_DOWNLOADER_MAC_DELEGATE_H_
#define COMPONENTS_UPDATE_CLIENT_BACKGROUND_DOWNLOADER_MAC_DELEGATE_H_
#import <Foundation/Foundation.h>
#include <cstdint>
#include "base/component_export.h"
#include "base/functional/callback_forward.h"
namespace base {
class FilePath;
}
class GURL;
// Callback invoked by DownloadDelegate when a download has finished.
using UpdateClientDelegateDownloadCompleteCallback = base::RepeatingCallback<
void(const GURL&, const base::FilePath&, int, int64_t, int64_t)>;
// Callback invoked by DownloadDelegate when download metrics are available.
using UpdateClientDelegateMetricsCollectedCallback =
base::RepeatingCallback<void(const GURL& url, uint64_t download_time_ms)>;
// Callback invoked by DownloadDelegate when progress has been made on a task.
using UpdateClientDelegateDownloadProgressCallback =
base::RepeatingCallback<void(const GURL&)>;
COMPONENT_EXPORT(BACKGROUND_DOWNLOADER_DELEGATE)
@interface UpdateClientDownloadDelegate
: NSObject <NSURLSessionDownloadDelegate>
- (instancetype)
initWithDownloadCache:(base::FilePath)downloadCache
downloadCompleteCallback:
(UpdateClientDelegateDownloadCompleteCallback)downloadCompleteCallback
metricsCollectedCallback:
(UpdateClientDelegateMetricsCollectedCallback)metricsCollectedCallback
progressCallback:
(UpdateClientDelegateDownloadProgressCallback)progressCallback;
@end
namespace update_client {
COMPONENT_EXPORT(BACKGROUND_DOWNLOADER_DELEGATE)
GURL GURLWithNSURL(NSURL* url);
COMPONENT_EXPORT(BACKGROUND_DOWNLOADER_DELEGATE)
base::FilePath URLToFilename(const GURL& url);
} // namespace update_client
#endif // COMPONENTS_UPDATE_CLIENT_BACKGROUND_DOWNLOADER_MAC_DELEGATE_H_