1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/public/common/resource_response.h"
7 #include "net/http/http_response_headers.h"
11 scoped_refptr
<ResourceResponse
> ResourceResponse::DeepCopy() const {
12 scoped_refptr
<ResourceResponse
> new_response(new ResourceResponse
);
13 new_response
->head
.request_time
= head
.request_time
;
14 new_response
->head
.response_time
= head
.response_time
;
15 if (head
.headers
.get()) {
16 new_response
->head
.headers
=
17 new net::HttpResponseHeaders(head
.headers
->raw_headers());
19 new_response
->head
.mime_type
= head
.mime_type
;
20 new_response
->head
.charset
= head
.charset
;
21 new_response
->head
.security_info
= head
.security_info
;
22 new_response
->head
.content_length
= head
.content_length
;
23 new_response
->head
.encoded_data_length
= head
.encoded_data_length
;
24 new_response
->head
.appcache_id
= head
.appcache_id
;
25 new_response
->head
.appcache_manifest_url
= head
.appcache_manifest_url
;
26 new_response
->head
.load_timing
= head
.load_timing
;
27 if (head
.devtools_info
.get()) {
28 new_response
->head
.devtools_info
= head
.devtools_info
->DeepCopy();
30 new_response
->head
.download_file_path
= head
.download_file_path
;
31 new_response
->head
.was_fetched_via_spdy
= head
.was_fetched_via_spdy
;
32 new_response
->head
.was_npn_negotiated
= head
.was_npn_negotiated
;
33 new_response
->head
.was_alternate_protocol_available
=
34 new_response
->head
.was_alternate_protocol_available
;
35 new_response
->head
.connection_info
= head
.connection_info
;
36 new_response
->head
.was_fetched_via_proxy
= head
.was_fetched_via_proxy
;
37 new_response
->head
.proxy_server
= head
.proxy_server
;
38 new_response
->head
.npn_negotiated_protocol
= head
.npn_negotiated_protocol
;
39 new_response
->head
.socket_address
= head
.socket_address
;
40 new_response
->head
.was_fetched_via_service_worker
=
41 head
.was_fetched_via_service_worker
;
42 new_response
->head
.was_fallback_required_by_service_worker
=
43 head
.was_fallback_required_by_service_worker
;
44 new_response
->head
.original_url_via_service_worker
=
45 head
.original_url_via_service_worker
;
46 new_response
->head
.response_type_via_service_worker
=
47 head
.response_type_via_service_worker
;
48 new_response
->head
.service_worker_fetch_start
=
49 head
.service_worker_fetch_start
;
50 new_response
->head
.service_worker_fetch_ready
=
51 head
.service_worker_fetch_ready
;
52 new_response
->head
.service_worker_fetch_end
= head
.service_worker_fetch_end
;
56 } // namespace content