diff options
12 files changed, 66 insertions, 60 deletions
diff --git a/base/memory/ref_counted.h b/base/memory/ref_counted.h index 64615f1..858ed2b 100644 --- a/base/memory/ref_counted.h +++ b/base/memory/ref_counted.h @@ -164,6 +164,10 @@ class RefCountedData : public base::RefCounted< base::RefCountedData<T> > { RefCountedData(const T& in_value) : data(in_value) {} T data; + + private: + friend class base::RefCounted<base::RefCountedData<T> >; + ~RefCountedData() {} }; } // namespace base diff --git a/chrome/browser/net/load_timing_observer.cc b/chrome/browser/net/load_timing_observer.cc index e50fb05..3eb1ad8 100644 --- a/chrome/browser/net/load_timing_observer.cc +++ b/chrome/browser/net/load_timing_observer.cc @@ -115,9 +115,9 @@ void LoadTimingObserver::PopulateTimingInfo( LoadTimingObserver::URLRequestRecord* record = observer->GetURLRequestRecord(source_id); if (record) { - response->connection_id = record->socket_log_id; - response->connection_reused = record->socket_reused; - response->load_timing = record->timing; + response->head.connection_id = record->socket_log_id; + response->head.connection_reused = record->socket_reused; + response->head.load_timing = record->timing; } } diff --git a/content/browser/debugger/devtools_netlog_observer.cc b/content/browser/debugger/devtools_netlog_observer.cc index 31fb9d7..f48e22c 100644 --- a/content/browser/debugger/devtools_netlog_observer.cc +++ b/content/browser/debugger/devtools_netlog_observer.cc @@ -280,7 +280,7 @@ void DevToolsNetLogObserver::PopulateResponseInfo( DevToolsNetLogObserver::GetInstance(); if (dev_tools_net_log_observer == NULL) return; - response->devtools_info = + response->head.devtools_info = dev_tools_net_log_observer->GetResourceInfo(source_id); } diff --git a/content/browser/download/download_resource_handler.cc b/content/browser/download/download_resource_handler.cc index 2e4f6f0..eda416f 100644 --- a/content/browser/download/download_resource_handler.cc +++ b/content/browser/download/download_resource_handler.cc @@ -136,7 +136,7 @@ bool DownloadResourceHandler::OnResponseStarted( request_->GetResponseHeaderByName("content-disposition", &content_disposition); SetContentDisposition(content_disposition); - SetContentLength(response->content_length); + SetContentLength(response->head.content_length); const ResourceRequestInfoImpl* request_info = ResourceRequestInfoImpl::ForRequest(request_); @@ -164,7 +164,7 @@ bool DownloadResourceHandler::OnResponseStarted( info->state = DownloadItem::IN_PROGRESS; info->has_user_gesture = request_info->HasUserGesture(); info->content_disposition = content_disposition_; - info->mime_type = response->mime_type; + info->mime_type = response->head.mime_type; info->remote_address = request_->GetSocketAddress().host(); download_stats::RecordDownloadMimeType(info->mime_type); @@ -184,15 +184,14 @@ bool DownloadResourceHandler::OnResponseStarted( } std::string content_type_header; - if (!response->headers || - !response->headers->GetMimeType(&content_type_header)) + if (!response->head.headers || + !response->head.headers->GetMimeType(&content_type_header)) content_type_header = ""; info->original_mime_type = content_type_header; - if (!response->headers || - !response->headers->EnumerateHeader(NULL, - "Accept-Ranges", - &accept_ranges_)) { + if (!response->head.headers || + !response->head.headers->EnumerateHeader( + NULL, "Accept-Ranges", &accept_ranges_)) { accept_ranges_ = ""; } diff --git a/content/browser/renderer_host/async_resource_handler.cc b/content/browser/renderer_host/async_resource_handler.cc index 8177a5a..e37724d 100644 --- a/content/browser/renderer_host/async_resource_handler.cc +++ b/content/browser/renderer_host/async_resource_handler.cc @@ -148,10 +148,10 @@ bool AsyncResourceHandler::OnRequestRedirected(int request_id, rdh_->delegate()->OnRequestRedirected(request_, response); DevToolsNetLogObserver::PopulateResponseInfo(request_, response); - response->request_start = request_->creation_time(); - response->response_start = TimeTicks::Now(); + response->head.request_start = request_->creation_time(); + response->head.response_start = TimeTicks::Now(); return filter_->Send(new ResourceMsg_ReceivedRedirect( - routing_id_, request_id, new_url, *response)); + routing_id_, request_id, new_url, response->head)); } bool AsyncResourceHandler::OnResponseStarted(int request_id, @@ -181,10 +181,10 @@ bool AsyncResourceHandler::OnResponseStarted(int request_id, request_url)))); } - response->request_start = request_->creation_time(); - response->response_start = TimeTicks::Now(); + response->head.request_start = request_->creation_time(); + response->head.response_start = TimeTicks::Now(); filter_->Send(new ResourceMsg_ReceivedResponse( - routing_id_, request_id, *response)); + routing_id_, request_id, response->head)); if (request_->response_info().metadata) { std::vector<char> copy(request_->response_info().metadata->data(), diff --git a/content/browser/renderer_host/buffered_resource_handler.cc b/content/browser/renderer_host/buffered_resource_handler.cc index 11db2df..fab935b 100644 --- a/content/browser/renderer_host/buffered_resource_handler.cc +++ b/content/browser/renderer_host/buffered_resource_handler.cc @@ -164,7 +164,8 @@ bool BufferedResourceHandler::DelayResponse() { const bool sniffing_blocked = LowerCaseEqualsASCII(content_type_options, "nosniff"); const bool not_modified_status = - response_->headers && response_->headers->response_code() == 304; + (response_->head.headers && + response_->head.headers->response_code() == 304); const bool we_would_like_to_sniff = not_modified_status ? false : net::ShouldSniffMimeType(request_->url(), mime_type); @@ -184,7 +185,7 @@ bool BufferedResourceHandler::DelayResponse() { // mime type. What's a browser to do? Turns out, we're supposed to treat // the response as "text/plain". This is the most secure option. mime_type.assign("text/plain"); - response_->mime_type.assign(mime_type); + response_->head.mime_type.assign(mime_type); } if (!not_modified_status && ShouldWaitForPlugins()) { @@ -231,7 +232,7 @@ bool BufferedResourceHandler::KeepBuffering(int bytes_read) { } } sniff_content_ = false; - response_->mime_type.assign(new_type); + response_->head.mime_type.assign(new_type); // We just sniffed the mime type, maybe there is a doctype to process. if (ShouldWaitForPlugins()) @@ -260,8 +261,8 @@ bool BufferedResourceHandler::CompleteResponseStarted(int request_id, // are doing it for an X.509 client certificates. // TODO(darin): This does not belong here! - if (response_->headers && // Can be NULL if FTP. - response_->headers->response_code() / 100 != 2) { + if (response_->head.headers && // Can be NULL if FTP. + response_->head.headers->response_code() / 100 != 2) { // The response code indicates that this is an error page, but we are // expecting an X.509 user certificate. We follow Firefox here and show // our own error page instead of handling the error page as a @@ -282,9 +283,8 @@ bool BufferedResourceHandler::CompleteResponseStarted(int request_id, if (info->allow_download() && ShouldDownload(NULL)) { // Forward the data to the download thread. - - if (response_->headers && // Can be NULL if FTP. - response_->headers->response_code() / 100 != 2) { + if (response_->head.headers && // Can be NULL if FTP. + response_->head.headers->response_code() / 100 != 2) { // The response code indicates that this is an error page, but we don't // know how to display the content. We follow Firefox here and show our // own error page instead of triggering a download. @@ -328,7 +328,7 @@ bool BufferedResourceHandler::ShouldWaitForPlugins() { bool BufferedResourceHandler::ShouldDownload(bool* need_plugin_list) { if (need_plugin_list) *need_plugin_list = false; - std::string type = StringToLowerASCII(response_->mime_type); + std::string type = StringToLowerASCII(response_->head.mime_type); // First, examine Content-Disposition. std::string disposition; diff --git a/content/browser/renderer_host/cross_site_resource_handler.cc b/content/browser/renderer_host/cross_site_resource_handler.cc index 7527401..9073f6e 100644 --- a/content/browser/renderer_host/cross_site_resource_handler.cc +++ b/content/browser/renderer_host/cross_site_resource_handler.cc @@ -92,7 +92,8 @@ bool CrossSiteResourceHandler::OnResponseStarted( // cross-site navigation, since we are unable to tell when to destroy it. // See RenderViewHostManager::RendererAbortedProvisionalLoad. if (info->is_download() || - (response->headers && response->headers->response_code() == 204)) { + (response->head.headers && + response->head.headers->response_code() == 204)) { return next_handler_->OnResponseStarted(request_id, response, defer); } diff --git a/content/browser/renderer_host/redirect_to_file_resource_handler.cc b/content/browser/renderer_host/redirect_to_file_resource_handler.cc index c1cf187..78a5933 100644 --- a/content/browser/renderer_host/redirect_to_file_resource_handler.cc +++ b/content/browser/renderer_host/redirect_to_file_resource_handler.cc @@ -60,9 +60,9 @@ bool RedirectToFileResourceHandler::OnResponseStarted( int request_id, ResourceResponse* response, bool* defer) { - if (response->status.is_success()) { + if (response->head.status.is_success()) { DCHECK(deletable_file_ && !deletable_file_->path().empty()); - response->download_file_path = deletable_file_->path(); + response->head.download_file_path = deletable_file_->path(); } return next_handler_->OnResponseStarted(request_id, response, defer); } diff --git a/content/browser/renderer_host/resource_loader.cc b/content/browser/renderer_host/resource_loader.cc index a1baea5..be923ca 100644 --- a/content/browser/renderer_host/resource_loader.cc +++ b/content/browser/renderer_host/resource_loader.cc @@ -28,23 +28,24 @@ namespace { void PopulateResourceResponse(net::URLRequest* request, ResourceResponse* response) { - response->status = request->status(); - response->request_time = request->request_time(); - response->response_time = request->response_time(); - response->headers = request->response_headers(); - request->GetCharset(&response->charset); - response->content_length = request->GetExpectedContentSize(); - request->GetMimeType(&response->mime_type); + response->head.status = request->status(); + response->head.request_time = request->request_time(); + response->head.response_time = request->response_time(); + response->head.headers = request->response_headers(); + request->GetCharset(&response->head.charset); + response->head.content_length = request->GetExpectedContentSize(); + request->GetMimeType(&response->head.mime_type); net::HttpResponseInfo response_info = request->response_info(); - response->was_fetched_via_spdy = response_info.was_fetched_via_spdy; - response->was_npn_negotiated = response_info.was_npn_negotiated; - response->npn_negotiated_protocol = response_info.npn_negotiated_protocol; - response->was_fetched_via_proxy = request->was_fetched_via_proxy(); - response->socket_address = request->GetSocketAddress(); + response->head.was_fetched_via_spdy = response_info.was_fetched_via_spdy; + response->head.was_npn_negotiated = response_info.was_npn_negotiated; + response->head.npn_negotiated_protocol = + response_info.npn_negotiated_protocol; + response->head.was_fetched_via_proxy = request->was_fetched_via_proxy(); + response->head.socket_address = request->GetSocketAddress(); appcache::AppCacheInterceptor::GetExtraResponseInfo( request, - &response->appcache_id, - &response->appcache_manifest_url); + &response->head.appcache_id, + &response->head.appcache_manifest_url); } } // namespace @@ -491,7 +492,7 @@ bool ResourceLoader::CompleteResponseStarted() { int cert_id = CertStore::GetInstance()->StoreCert(request_->ssl_info().cert, info->GetChildID()); - response->security_info = SerializeSecurityInfo( + response->head.security_info = SerializeSecurityInfo( cert_id, request_->ssl_info().cert_status, request_->ssl_info().security_bits, diff --git a/content/browser/renderer_host/sync_resource_handler.cc b/content/browser/renderer_host/sync_resource_handler.cc index 90a098e..4b77096 100644 --- a/content/browser/renderer_host/sync_resource_handler.cc +++ b/content/browser/renderer_host/sync_resource_handler.cc @@ -72,16 +72,16 @@ bool SyncResourceHandler::OnResponseStarted( DevToolsNetLogObserver::PopulateResponseInfo(request_, response); // We don't care about copying the status here. - result_.headers = response->headers; - result_.mime_type = response->mime_type; - result_.charset = response->charset; - result_.download_file_path = response->download_file_path; - result_.request_time = response->request_time; - result_.response_time = response->response_time; - result_.connection_id = response->connection_id; - result_.connection_reused = response->connection_reused; - result_.load_timing = response->load_timing; - result_.devtools_info = response->devtools_info; + result_.headers = response->head.headers; + result_.mime_type = response->head.mime_type; + result_.charset = response->head.charset; + result_.download_file_path = response->head.download_file_path; + result_.request_time = response->head.request_time; + result_.response_time = response->head.response_time; + result_.connection_id = response->head.connection_id; + result_.connection_reused = response->head.connection_reused; + result_.load_timing = response->head.load_timing; + result_.devtools_info = response->head.devtools_info; return true; } diff --git a/content/browser/renderer_host/x509_user_cert_resource_handler.cc b/content/browser/renderer_host/x509_user_cert_resource_handler.cc index f66fdb6..5132f97 100644 --- a/content/browser/renderer_host/x509_user_cert_resource_handler.cc +++ b/content/browser/renderer_host/x509_user_cert_resource_handler.cc @@ -50,7 +50,7 @@ bool X509UserCertResourceHandler::OnRequestRedirected(int request_id, bool X509UserCertResourceHandler::OnResponseStarted(int request_id, ResourceResponse* resp, bool* defer) { - return (resp->mime_type == "application/x-x509-user-cert"); + return (resp->head.mime_type == "application/x-x509-user-cert"); } bool X509UserCertResourceHandler::OnWillStart(int request_id, diff --git a/content/public/common/resource_response.h b/content/public/common/resource_response.h index 9a8e3a8..b6c4eaa 100644 --- a/content/public/common/resource_response.h +++ b/content/public/common/resource_response.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -39,13 +39,14 @@ struct SyncLoadResult : ResourceResponseHead { }; // Simple wrapper that refcounts ResourceResponseHead. +// Inherited, rather than typedef'd, to allow forward declarations. struct CONTENT_EXPORT ResourceResponse - : public NON_EXPORTED_BASE(ResourceResponseHead), - public base::RefCounted<ResourceResponse> { + : public base::RefCounted<ResourceResponse> { + public: + ResourceResponseHead head; private: friend class base::RefCounted<ResourceResponse>; - ~ResourceResponse() {} }; |