blob: 100a49d7bb9d6fe4daee84a6846e739d2d400232 [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 "components/download/public/background_service/download_metadata.h"
namespace {
bool AreResponseHeadersEqual(const net::HttpResponseHeaders* h1,
const net::HttpResponseHeaders* h2) {
if (h1 && h2)
return h1->raw_headers() == h2->raw_headers();
return !h1 && !h2;
}
} // namespace
namespace download {
CompletionInfo::CompletionInfo() = default;
CompletionInfo::CompletionInfo(
const base::FilePath& path,
uint64_t bytes_downloaded,
const std::vector<GURL>& url_chain,
scoped_refptr<const net::HttpResponseHeaders> response_headers)
: path(path),
bytes_downloaded(bytes_downloaded),
url_chain(url_chain),
response_headers(std::move(response_headers)) {}
CompletionInfo::CompletionInfo(const base::FilePath& path,
uint64_t bytes_downloaded)
: path(path), bytes_downloaded(bytes_downloaded) {}
CompletionInfo::CompletionInfo(const CompletionInfo& other) = default;
CompletionInfo::~CompletionInfo() = default;
bool CompletionInfo::operator==(const CompletionInfo& other) const {
// The blob data handle is not compared here.
return path == other.path && bytes_downloaded == other.bytes_downloaded &&
url_chain == other.url_chain &&
AreResponseHeadersEqual(response_headers.get(),
other.response_headers.get()) &&
hash256 == other.hash256;
}
DownloadMetaData::DownloadMetaData() : current_size(0u), paused(false) {}
DownloadMetaData::DownloadMetaData(const DownloadMetaData& other) = default;
bool DownloadMetaData::operator==(const DownloadMetaData& other) const {
return guid == other.guid && current_size == other.current_size &&
completion_info == other.completion_info && paused == other.paused;
}
DownloadMetaData::~DownloadMetaData() = default;
} // namespace download