Index: webkit/child/weburlloader_impl.cc |
=================================================================== |
--- webkit/child/weburlloader_impl.cc (revision 223347) |
+++ webkit/child/weburlloader_impl.cc (working copy) |
@@ -180,115 +180,6 @@ |
(load_timing.receive_headers_end - kNullTicks).InSecondsF()); |
} |
-void PopulateURLResponse( |
- const GURL& url, |
- const ResourceResponseInfo& info, |
- WebURLResponse* response) { |
- response->setURL(url); |
- response->setResponseTime(info.response_time.ToDoubleT()); |
- response->setMIMEType(WebString::fromUTF8(info.mime_type)); |
- response->setTextEncodingName(WebString::fromUTF8(info.charset)); |
- response->setExpectedContentLength(info.content_length); |
- response->setSecurityInfo(info.security_info); |
- response->setAppCacheID(info.appcache_id); |
- response->setAppCacheManifestURL(info.appcache_manifest_url); |
- response->setWasCached(!info.load_timing.request_start_time.is_null() && |
- info.response_time < info.load_timing.request_start_time); |
- response->setRemoteIPAddress( |
- WebString::fromUTF8(info.socket_address.host())); |
- response->setRemotePort(info.socket_address.port()); |
- response->setConnectionID(info.load_timing.socket_log_id); |
- response->setConnectionReused(info.load_timing.socket_reused); |
- response->setDownloadFilePath(info.download_file_path.AsUTF16Unsafe()); |
- WebURLResponseExtraDataImpl* extra_data = |
- new WebURLResponseExtraDataImpl(info.npn_negotiated_protocol); |
- response->setExtraData(extra_data); |
- extra_data->set_was_fetched_via_spdy(info.was_fetched_via_spdy); |
- extra_data->set_was_npn_negotiated(info.was_npn_negotiated); |
- extra_data->set_was_alternate_protocol_available( |
- info.was_alternate_protocol_available); |
- extra_data->set_connection_info(info.connection_info); |
- extra_data->set_was_fetched_via_proxy(info.was_fetched_via_proxy); |
- |
- // If there's no received headers end time, don't set load timing. This is |
- // the case for non-HTTP requests, requests that don't go over the wire, and |
- // certain error cases. |
- if (!info.load_timing.receive_headers_end.is_null()) { |
- WebURLLoadTiming timing; |
- PopulateURLLoadTiming(info.load_timing, &timing); |
- response->setLoadTiming(timing); |
- } |
- |
- if (info.devtools_info.get()) { |
- WebHTTPLoadInfo load_info; |
- |
- load_info.setHTTPStatusCode(info.devtools_info->http_status_code); |
- load_info.setHTTPStatusText(WebString::fromLatin1( |
- info.devtools_info->http_status_text)); |
- load_info.setEncodedDataLength(info.encoded_data_length); |
- |
- load_info.setRequestHeadersText(WebString::fromLatin1( |
- info.devtools_info->request_headers_text)); |
- load_info.setResponseHeadersText(WebString::fromLatin1( |
- info.devtools_info->response_headers_text)); |
- const HeadersVector& request_headers = info.devtools_info->request_headers; |
- for (HeadersVector::const_iterator it = request_headers.begin(); |
- it != request_headers.end(); ++it) { |
- load_info.addRequestHeader(WebString::fromLatin1(it->first), |
- WebString::fromLatin1(it->second)); |
- } |
- const HeadersVector& response_headers = |
- info.devtools_info->response_headers; |
- for (HeadersVector::const_iterator it = response_headers.begin(); |
- it != response_headers.end(); ++it) { |
- load_info.addResponseHeader(WebString::fromLatin1(it->first), |
- WebString::fromLatin1(it->second)); |
- } |
- response->setHTTPLoadInfo(load_info); |
- } |
- |
- const net::HttpResponseHeaders* headers = info.headers.get(); |
- if (!headers) |
- return; |
- |
- WebURLResponse::HTTPVersion version = WebURLResponse::Unknown; |
- if (headers->GetHttpVersion() == net::HttpVersion(0, 9)) |
- version = WebURLResponse::HTTP_0_9; |
- else if (headers->GetHttpVersion() == net::HttpVersion(1, 0)) |
- version = WebURLResponse::HTTP_1_0; |
- else if (headers->GetHttpVersion() == net::HttpVersion(1, 1)) |
- version = WebURLResponse::HTTP_1_1; |
- response->setHTTPVersion(version); |
- response->setHTTPStatusCode(headers->response_code()); |
- response->setHTTPStatusText(WebString::fromLatin1(headers->GetStatusText())); |
- |
- // TODO(darin): We should leverage HttpResponseHeaders for this, and this |
- // should be using the same code as ResourceDispatcherHost. |
- // TODO(jungshik): Figure out the actual value of the referrer charset and |
- // pass it to GetSuggestedFilename. |
- std::string value; |
- headers->EnumerateHeader(NULL, "content-disposition", &value); |
- response->setSuggestedFileName( |
- net::GetSuggestedFilename(url, |
- value, |
- std::string(), // referrer_charset |
- std::string(), // suggested_name |
- std::string(), // mime_type |
- std::string())); // default_name |
- |
- Time time_val; |
- if (headers->GetLastModifiedValue(&time_val)) |
- response->setLastModifiedDate(time_val.ToDoubleT()); |
- |
- // Build up the header map. |
- void* iter = NULL; |
- std::string name; |
- while (headers->EnumerateHeaderLines(&iter, &name, &value)) { |
- response->addHTTPHeaderField(WebString::fromLatin1(name), |
- WebString::fromLatin1(value)); |
- } |
-} |
- |
net::RequestPriority ConvertWebKitPriorityToNetPriority( |
const WebURLRequest::Priority& priority) { |
switch (priority) { |
@@ -804,6 +695,114 @@ |
return error; |
} |
+void WebURLLoaderImpl::PopulateURLResponse(const GURL& url, |
+ const ResourceResponseInfo& info, |
+ WebURLResponse* response) { |
+ response->setURL(url); |
+ response->setResponseTime(info.response_time.ToDoubleT()); |
+ response->setMIMEType(WebString::fromUTF8(info.mime_type)); |
+ response->setTextEncodingName(WebString::fromUTF8(info.charset)); |
+ response->setExpectedContentLength(info.content_length); |
+ response->setSecurityInfo(info.security_info); |
+ response->setAppCacheID(info.appcache_id); |
+ response->setAppCacheManifestURL(info.appcache_manifest_url); |
+ response->setWasCached(!info.load_timing.request_start_time.is_null() && |
+ info.response_time < info.load_timing.request_start_time); |
+ response->setRemoteIPAddress( |
+ WebString::fromUTF8(info.socket_address.host())); |
+ response->setRemotePort(info.socket_address.port()); |
+ response->setConnectionID(info.load_timing.socket_log_id); |
+ response->setConnectionReused(info.load_timing.socket_reused); |
+ response->setDownloadFilePath(info.download_file_path.AsUTF16Unsafe()); |
+ WebURLResponseExtraDataImpl* extra_data = |
+ new WebURLResponseExtraDataImpl(info.npn_negotiated_protocol); |
+ response->setExtraData(extra_data); |
+ extra_data->set_was_fetched_via_spdy(info.was_fetched_via_spdy); |
+ extra_data->set_was_npn_negotiated(info.was_npn_negotiated); |
+ extra_data->set_was_alternate_protocol_available( |
+ info.was_alternate_protocol_available); |
+ extra_data->set_connection_info(info.connection_info); |
+ extra_data->set_was_fetched_via_proxy(info.was_fetched_via_proxy); |
+ |
+ // If there's no received headers end time, don't set load timing. This is |
+ // the case for non-HTTP requests, requests that don't go over the wire, and |
+ // certain error cases. |
+ if (!info.load_timing.receive_headers_end.is_null()) { |
+ WebURLLoadTiming timing; |
+ PopulateURLLoadTiming(info.load_timing, &timing); |
+ response->setLoadTiming(timing); |
+ } |
+ |
+ if (info.devtools_info.get()) { |
+ WebHTTPLoadInfo load_info; |
+ |
+ load_info.setHTTPStatusCode(info.devtools_info->http_status_code); |
+ load_info.setHTTPStatusText(WebString::fromLatin1( |
+ info.devtools_info->http_status_text)); |
+ load_info.setEncodedDataLength(info.encoded_data_length); |
+ |
+ load_info.setRequestHeadersText(WebString::fromLatin1( |
+ info.devtools_info->request_headers_text)); |
+ load_info.setResponseHeadersText(WebString::fromLatin1( |
+ info.devtools_info->response_headers_text)); |
+ const HeadersVector& request_headers = info.devtools_info->request_headers; |
+ for (HeadersVector::const_iterator it = request_headers.begin(); |
+ it != request_headers.end(); ++it) { |
+ load_info.addRequestHeader(WebString::fromLatin1(it->first), |
+ WebString::fromLatin1(it->second)); |
+ } |
+ const HeadersVector& response_headers = |
+ info.devtools_info->response_headers; |
+ for (HeadersVector::const_iterator it = response_headers.begin(); |
+ it != response_headers.end(); ++it) { |
+ load_info.addResponseHeader(WebString::fromLatin1(it->first), |
+ WebString::fromLatin1(it->second)); |
+ } |
+ response->setHTTPLoadInfo(load_info); |
+ } |
+ |
+ const net::HttpResponseHeaders* headers = info.headers.get(); |
+ if (!headers) |
+ return; |
+ |
+ WebURLResponse::HTTPVersion version = WebURLResponse::Unknown; |
+ if (headers->GetHttpVersion() == net::HttpVersion(0, 9)) |
+ version = WebURLResponse::HTTP_0_9; |
+ else if (headers->GetHttpVersion() == net::HttpVersion(1, 0)) |
+ version = WebURLResponse::HTTP_1_0; |
+ else if (headers->GetHttpVersion() == net::HttpVersion(1, 1)) |
+ version = WebURLResponse::HTTP_1_1; |
+ response->setHTTPVersion(version); |
+ response->setHTTPStatusCode(headers->response_code()); |
+ response->setHTTPStatusText(WebString::fromLatin1(headers->GetStatusText())); |
+ |
+ // TODO(darin): We should leverage HttpResponseHeaders for this, and this |
+ // should be using the same code as ResourceDispatcherHost. |
+ // TODO(jungshik): Figure out the actual value of the referrer charset and |
+ // pass it to GetSuggestedFilename. |
+ std::string value; |
+ headers->EnumerateHeader(NULL, "content-disposition", &value); |
+ response->setSuggestedFileName( |
+ net::GetSuggestedFilename(url, |
+ value, |
+ std::string(), // referrer_charset |
+ std::string(), // suggested_name |
+ std::string(), // mime_type |
+ std::string())); // default_name |
+ |
+ Time time_val; |
+ if (headers->GetLastModifiedValue(&time_val)) |
+ response->setLastModifiedDate(time_val.ToDoubleT()); |
+ |
+ // Build up the header map. |
+ void* iter = NULL; |
+ std::string name; |
+ while (headers->EnumerateHeaderLines(&iter, &name, &value)) { |
+ response->addHTTPHeaderField(WebString::fromLatin1(name), |
+ WebString::fromLatin1(value)); |
+ } |
+} |
+ |
void WebURLLoaderImpl::loadSynchronously(const WebURLRequest& request, |
WebURLResponse& response, |
WebURLError& error, |