blob: 468acf7071b9783b344196f03489de1e5979e9ca [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <algorithm>
#include "base/guid.h"
#include "components/download/internal/background_service/test/entry_utils.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) {
if (expected == nullptr || actual == nullptr)
return expected == actual;
return *expected == *actual;
}
bool CompareEntryList(const std::vector<Entry*>& expected,
const std::vector<Entry*>& actual) {
return std::is_permutation(actual.cbegin(), actual.cend(), expected.cbegin(),
CompareEntry);
}
bool CompareEntryList(const std::vector<Entry>& list1,
const std::vector<Entry>& list2) {
return std::is_permutation(list1.begin(), list1.end(), list2.begin());
}
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::is_permutation(actual.cbegin(), actual.cend(), expected.cbegin(),
CompareEntryUsingGuidOnly);
}
Entry BuildBasicEntry() {
return BuildEntry(DownloadClient::TEST, base::GenerateGUID());
}
Entry BuildBasicEntry(Entry::State state) {
Entry entry = BuildBasicEntry();
entry.state = state;
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,
int cleanup_attempt_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.cleanup_attempt_count = cleanup_attempt_count;
return entry;
}
} // namespace test
} // namespace download