// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/download/internal/background_service/ios/entry_utils.h"
#include "components/download/internal/background_service/entry.h"
#include "components/download/public/background_service/download_metadata.h"
namespace download {
namespace util {
std::map<DownloadClient, std::vector<DownloadMetaData>>
MapEntriesToMetadataForClients(const std::set<DownloadClient>& clients,
const std::vector<Entry*>& entries) {
std::map<DownloadClient, std::vector<DownloadMetaData>> categorized;
for (Entry* entry : entries) {
DownloadClient client = entry->client;
if (clients.find(client) == clients.end())
continue;
DownloadMetaData meta_data;
meta_data.guid = entry->guid;
// iOS currently doesn't support pause.
meta_data.paused = false;
// Unlike other platforms that uses history db through download driver, the
// current size on iOS is always based on background download proto db
// record.
meta_data.current_size = entry->bytes_downloaded;
if (entry->state == Entry::State::COMPLETE) {
// TODO(xingliu): Implement the response headers and url chain with
// NSURLSession.
meta_data.completion_info =
CompletionInfo(entry->target_file_path, entry->bytes_downloaded,
entry->url_chain, entry->response_headers);
}
categorized[client].emplace_back(std::move(meta_data));
}
return categorized;
}
} // namespace util
} // namespace download