blob: 3c4060263f53db85b72a221c424f2079f6b834e0 [file] [log] [blame]
// Copyright 2019 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 "services/network/public/cpp/url_response_head_mojom_traits.h"
#include "mojo/public/cpp/base/time_mojom_traits.h"
#include "services/network/public/cpp/ip_endpoint_mojom_traits.h"
#include "services/network/public/cpp/load_timing_info_mojom_traits.h"
#include "services/network/public/cpp/network_ipc_param_traits.h"
#include "services/proxy_resolver/public/cpp/proxy_resolver_mojom_traits.h"
#include "url/mojom/url_gurl_mojom_traits.h"
namespace mojo {
// static
bool StructTraits<network::mojom::URLResponseHead::DataView,
network::ResourceResponseHead>::
Read(network::mojom::URLResponseHead::DataView input,
network::ResourceResponseHead* output) {
bool success = true;
if (!input.ReadRequestTime(&output->request_time))
success = false;
if (!input.ReadResponseTime(&output->response_time))
success = false;
if (!input.ReadHeaders(&output->headers))
success = false;
if (!input.ReadMimeType(&output->mime_type))
success = false;
if (!input.ReadCharset(&output->charset))
success = false;
if (!input.ReadCtPolicyCompliance(&output->ct_policy_compliance))
success = false;
output->content_length = input.content_length();
output->encoded_data_length = input.encoded_data_length();
output->encoded_body_length = input.encoded_body_length();
output->network_accessed = input.network_accessed();
output->appcache_id = input.appcache_id();
if (!input.ReadAppcacheManifestUrl(&output->appcache_manifest_url))
success = false;
if (!input.ReadLoadTiming(&output->load_timing))
success = false;
if (!input.ReadRawRequestResponseInfo(&output->raw_request_response_info))
success = false;
output->was_fetched_via_spdy = input.was_fetched_via_spdy();
output->was_alpn_negotiated = input.was_alpn_negotiated();
output->was_alternate_protocol_available =
input.was_alternate_protocol_available();
if (!input.ReadConnectionInfo(&output->connection_info))
success = false;
if (!input.ReadAlpnNegotiatedProtocol(&output->alpn_negotiated_protocol))
success = false;
if (!input.ReadRemoteEndpoint(&output->remote_endpoint))
success = false;
output->was_fetched_via_cache = input.was_fetched_via_cache();
if (!input.ReadProxyServer(&output->proxy_server))
success = false;
output->was_fetched_via_service_worker =
input.was_fetched_via_service_worker();
output->was_fallback_required_by_service_worker =
input.was_fallback_required_by_service_worker();
if (!input.ReadUrlListViaServiceWorker(&output->url_list_via_service_worker))
success = false;
if (!input.ReadResponseType(&output->response_type))
success = false;
if (!input.ReadServiceWorkerStartTime(&output->service_worker_start_time))
success = false;
if (!input.ReadServiceWorkerReadyTime(&output->service_worker_ready_time))
success = false;
output->is_in_cache_storage = input.is_in_cache_storage();
if (!input.ReadCacheStorageCacheName(&output->cache_storage_cache_name))
success = false;
if (!input.ReadEffectiveConnectionType(&output->effective_connection_type))
success = false;
output->cert_status = input.cert_status();
if (!input.ReadSslInfo(&output->ssl_info))
success = false;
if (!input.ReadCorsExposedHeaderNames(&output->cors_exposed_header_names))
success = false;
output->did_service_worker_navigation_preload =
input.did_service_worker_navigation_preload();
output->should_report_corb_blocking = input.should_report_corb_blocking();
output->async_revalidation_requested = input.async_revalidation_requested();
output->did_mime_sniff = input.did_mime_sniff();
output->is_signed_exchange_inner_response =
input.is_signed_exchange_inner_response();
output->was_in_prefetch_cache = input.was_in_prefetch_cache();
output->intercepted_by_plugin = input.intercepted_by_plugin();
output->is_legacy_tls_version = input.is_legacy_tls_version();
if (!input.ReadAuthChallengeInfo(&output->auth_challenge_info))
success = false;
if (!input.ReadRequestStart(&output->request_start))
success = false;
if (!input.ReadResponseStart(&output->response_start))
success = false;
if (!input.ReadOriginPolicy(&output->origin_policy))
success = false;
return success;
}
} // namespace mojo