blob: dc1de7d5e46973510a7a39f2b2bf2b5e22f6ae12 [file] [log] [blame]
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/network/public/cpp/url_loader_completion_status.h"
#include "base/trace_event/trace_event.h"
#include "net/base/net_errors.h"
namespace network {
URLLoaderCompletionStatus::URLLoaderCompletionStatus() = default;
URLLoaderCompletionStatus::URLLoaderCompletionStatus(
const URLLoaderCompletionStatus& status) = default;
URLLoaderCompletionStatus::URLLoaderCompletionStatus(int error_code)
: error_code(error_code), completion_time(base::TimeTicks::Now()) {}
URLLoaderCompletionStatus::URLLoaderCompletionStatus(
const CorsErrorStatus& error)
: URLLoaderCompletionStatus(net::ERR_FAILED) {
cors_error_status = error;
}
URLLoaderCompletionStatus::URLLoaderCompletionStatus(
const mojom::BlockedByResponseReason& reason)
: URLLoaderCompletionStatus(net::ERR_BLOCKED_BY_RESPONSE) {
blocked_by_response_reason = reason;
}
URLLoaderCompletionStatus::~URLLoaderCompletionStatus() = default;
bool URLLoaderCompletionStatus::operator==(
const URLLoaderCompletionStatus& rhs) const {
return error_code == rhs.error_code &&
extended_error_code == rhs.extended_error_code &&
exists_in_cache == rhs.exists_in_cache &&
completion_time == rhs.completion_time &&
encoded_data_length == rhs.encoded_data_length &&
encoded_body_length == rhs.encoded_body_length &&
decoded_body_length == rhs.decoded_body_length &&
cors_error_status == rhs.cors_error_status &&
private_network_access_preflight_result ==
rhs.private_network_access_preflight_result &&
blocked_by_response_reason == rhs.blocked_by_response_reason &&
should_report_orb_blocking == rhs.should_report_orb_blocking &&
should_collapse_initiator == rhs.should_collapse_initiator;
}
void URLLoaderCompletionStatus::WriteIntoTrace(
perfetto::TracedValue context) const {
auto dict = std::move(context).WriteDictionary();
dict.Add("error_code", error_code);
dict.Add("extended_error_code", extended_error_code);
dict.Add("encoded_data_length", encoded_data_length);
dict.Add("encoded_body_length", encoded_body_length);
dict.Add("decoded_body_length", decoded_body_length);
}
} // namespace network