blob: 5159ed9f727b54cb26cd6958305520ac8ab0aaa3 [file] [log] [blame]
// Copyright 2017 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/test/entry_utils.h"
#include "base/memory/values_equivalent.h"
#include "base/ranges/algorithm.h"
#include "base/uuid.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
namespace download {
namespace test {
bool CompareEntry(const Entry* const& expected, const Entry* const& actual) {
return base::ValuesEquivalent(expected, actual);
}
bool CompareEntryList(const std::vector<Entry*>& expected,
const std::vector<Entry*>& actual) {
return base::ranges::is_permutation(actual, expected, CompareEntry);
}
bool CompareEntryList(const std::vector<Entry>& list1,
const std::vector<Entry>& list2) {
return base::ranges::is_permutation(list1, list2);
}
bool CompareEntryUsingGuidOnly(const Entry* const& expected,
const Entry* const& actual) {
if (expected == nullptr || actual == nullptr)
return expected == actual;
return expected->guid == actual->guid;
}
bool CompareEntryListUsingGuidOnly(const std::vector<Entry*>& expected,
const std::vector<Entry*>& actual) {
return base::ranges::is_permutation(actual, expected,
CompareEntryUsingGuidOnly);
}
Entry BuildBasicEntry() {
return BuildEntry(DownloadClient::TEST,
base::Uuid::GenerateRandomV4().AsLowercaseString());
}
Entry BuildBasicEntry(Entry::State state) {
Entry entry = BuildBasicEntry();
entry.state = state;
if (entry.state == Entry::State::ACTIVE) {
entry.response_headers =
base::MakeRefCounted<const net::HttpResponseHeaders>(
"HTTP/1.1 200 OK\nContent-type: text/html\n\n");
entry.did_received_response = true;
}
return entry;
}
Entry BuildEntry(DownloadClient client, const std::string& guid) {
Entry entry;
entry.client = client;
entry.guid = guid;
entry.traffic_annotation =
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS);
return entry;
}
Entry BuildEntry(DownloadClient client,
const std::string& guid,
base::Time cancel_time,
SchedulingParams::NetworkRequirements network_requirements,
SchedulingParams::BatteryRequirements battery_requirements,
SchedulingParams::Priority priority,
const GURL& url,
const std::string& request_method,
Entry::State state,
const base::FilePath& target_file_path,
base::Time create_time,
base::Time completion_time,
base::Time last_cleanup_check_time,
uint64_t bytes_downloaded,
int attempt_count,
int resumption_count) {
Entry entry = BuildEntry(client, guid);
entry.scheduling_params.cancel_time = cancel_time;
entry.scheduling_params.network_requirements = network_requirements;
entry.scheduling_params.battery_requirements = battery_requirements;
entry.scheduling_params.priority = priority;
entry.request_params.url = url;
entry.request_params.method = request_method;
entry.state = state;
entry.target_file_path = target_file_path;
entry.create_time = create_time;
entry.completion_time = completion_time;
entry.last_cleanup_check_time = last_cleanup_check_time;
entry.bytes_downloaded = bytes_downloaded;
entry.attempt_count = attempt_count;
entry.resumption_count = resumption_count;
entry.url_chain = {url, url};
entry.response_headers = base::MakeRefCounted<const net::HttpResponseHeaders>(
"HTTP/1.1 200 OK\nContent-type: text/html\n\n");
entry.did_received_response = true;
return entry;
}
} // namespace test
} // namespace download