1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
// 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 <algorithm>
#include "base/memory/values_equivalent.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 std::ranges::is_permutation(actual, expected, CompareEntry);
}
bool CompareEntryList(const std::vector<Entry>& list1,
const std::vector<Entry>& list2) {
return std::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 std::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
|