summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreustas@chromium.org <eustas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-10 12:54:57 +0000
committereustas@chromium.org <eustas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-10 12:54:57 +0000
commitc8c56758c394793fd106f6607b50f0966976e135 (patch)
treef75a94538866b7b68dfa5a7217e61a2fdae859d5
parentfd00e49adcf05f05a5cff215abed207e738c606c (diff)
downloadchromium_src-c8c56758c394793fd106f6607b50f0966976e135.zip
chromium_src-c8c56758c394793fd106f6607b50f0966976e135.tar.gz
chromium_src-c8c56758c394793fd106f6607b50f0966976e135.tar.bz2
Add transfer size paramater to didFinishLoading [2/3]
Mini DD: https://docs.google.com/a/chromium.org/document/d/1kAKnBKofLc3Tex_JPveubwJcQLT3BhIL3xNQyjvRIps/edit?usp=sharing Most of files contain only signature changes. There are 3 non-trivial changes: 1) ResourceMsg_RequestComplete IPC message receives struct instead of distinct parameters. 2) Use URLRequest::GetTotalReceivedBytes instead of DevToolsNetLogObserver::GetAndResetEncodedDataLength 3) Remove unused code in DevToolsNetLogObserver. BUG=111052 Review URL: https://codereview.chromium.org/143263002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250069 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/renderer/extensions/extension_localization_peer.cc9
-rw-r--r--chrome/renderer/extensions/extension_localization_peer.h3
-rw-r--r--chrome/renderer/extensions/extension_localization_peer_unittest.cc27
-rw-r--r--chrome/renderer/security_filter_peer.cc17
-rw-r--r--chrome/renderer/security_filter_peer.h9
-rw-r--r--content/browser/devtools/devtools_netlog_observer.cc126
-rw-r--r--content/browser/devtools/devtools_netlog_observer.h9
-rw-r--r--content/browser/loader/async_resource_handler.cc18
-rw-r--r--content/browser/loader/async_resource_handler.h2
-rw-r--r--content/browser/loader/resource_dispatcher_host_impl.cc2
-rw-r--r--content/browser/loader/sync_resource_handler.cc9
-rw-r--r--content/browser/loader/sync_resource_handler.h1
-rw-r--r--content/child/npapi/plugin_url_fetcher.cc3
-rw-r--r--content/child/npapi/plugin_url_fetcher.h3
-rw-r--r--content/child/resource_dispatcher.cc3
-rw-r--r--content/child/resource_dispatcher_unittest.cc9
-rw-r--r--content/common/resource_messages.h3
-rw-r--r--content/renderer/fetchers/resource_fetcher_impl.cc3
-rw-r--r--content/renderer/fetchers/resource_fetcher_impl.h3
-rw-r--r--content/renderer/media/android/media_info_loader.cc3
-rw-r--r--content/renderer/media/android/media_info_loader.h3
-rw-r--r--content/renderer/media/buffered_data_source_unittest.cc2
-rw-r--r--content/renderer/media/buffered_resource_loader.cc3
-rw-r--r--content/renderer/media/buffered_resource_loader.h3
-rw-r--r--content/renderer/media/buffered_resource_loader_unittest.cc4
-rw-r--r--content/renderer/npapi/webplugin_impl.cc7
-rw-r--r--content/renderer/npapi/webplugin_impl.h3
-rw-r--r--content/renderer/p2p/port_allocator.cc5
-rw-r--r--content/renderer/p2p/port_allocator.h3
-rw-r--r--content/renderer/pepper/pepper_plugin_instance_impl.cc7
-rw-r--r--content/renderer/pepper/pepper_plugin_instance_impl.h3
-rw-r--r--content/renderer/pepper/pepper_url_loader_host.cc3
-rw-r--r--content/renderer/pepper/pepper_url_loader_host.h3
-rw-r--r--content/renderer/pepper/pepper_webplugin_impl.cc3
-rw-r--r--content/test/weburl_loader_mock.cc2
-rw-r--r--webkit/child/multipart_response_delegate_unittest.cc3
-rw-r--r--webkit/child/resource_loader_bridge.h9
-rw-r--r--webkit/child/weburlloader_impl.cc11
38 files changed, 131 insertions, 208 deletions
diff --git a/chrome/renderer/extensions/extension_localization_peer.cc b/chrome/renderer/extensions/extension_localization_peer.cc
index e3e2c91..789b0e6 100644
--- a/chrome/renderer/extensions/extension_localization_peer.cc
+++ b/chrome/renderer/extensions/extension_localization_peer.cc
@@ -70,7 +70,8 @@ void ExtensionLocalizationPeer::OnCompletedRequest(
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) {
// Make sure we delete ourselves at the end of this call.
scoped_ptr<ExtensionLocalizationPeer> this_deleter(this);
@@ -80,7 +81,8 @@ void ExtensionLocalizationPeer::OnCompletedRequest(
original_peer_->OnReceivedResponse(response_info_);
original_peer_->OnCompletedRequest(net::ERR_ABORTED, false,
stale_copy_in_cache, security_info,
- completion_time);
+ completion_time,
+ total_transfer_size);
return;
}
@@ -93,7 +95,8 @@ void ExtensionLocalizationPeer::OnCompletedRequest(
-1);
original_peer_->OnCompletedRequest(error_code, was_ignored_by_handler,
stale_copy_in_cache,
- security_info, completion_time);
+ security_info, completion_time,
+ total_transfer_size);
}
void ExtensionLocalizationPeer::ReplaceMessages() {
diff --git a/chrome/renderer/extensions/extension_localization_peer.h b/chrome/renderer/extensions/extension_localization_peer.h
index 8c8b748..78aab0c 100644
--- a/chrome/renderer/extensions/extension_localization_peer.h
+++ b/chrome/renderer/extensions/extension_localization_peer.h
@@ -46,7 +46,8 @@ class ExtensionLocalizationPeer
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE;
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE;
private:
friend class ExtensionLocalizationPeerTest;
diff --git a/chrome/renderer/extensions/extension_localization_peer_unittest.cc b/chrome/renderer/extensions/extension_localization_peer_unittest.cc
index e110030..0eba97c 100644
--- a/chrome/renderer/extensions/extension_localization_peer_unittest.cc
+++ b/chrome/renderer/extensions/extension_localization_peer_unittest.cc
@@ -68,12 +68,13 @@ class MockResourceLoaderBridgePeer
MOCK_METHOD3(OnReceivedData, void(const char* data,
int data_length,
int encoded_data_length));
- MOCK_METHOD5(OnCompletedRequest, void(
+ MOCK_METHOD6(OnCompletedRequest, void(
int error_code,
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time));
+ const base::TimeTicks& completion_time,
+ int64_t total_transfer_size));
private:
DISALLOW_COPY_AND_ASSIGN(MockResourceLoaderBridgePeer);
@@ -143,10 +144,10 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestBadURLRequestStatus) {
EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
EXPECT_CALL(*original_peer_, OnCompletedRequest(
- net::ERR_ABORTED, false, false, "", base::TimeTicks()));
+ net::ERR_ABORTED, false, false, "", base::TimeTicks(), -1));
filter_peer->OnCompletedRequest(
- net::ERR_FAILED, false, false, std::string(), base::TimeTicks());
+ net::ERR_FAILED, false, false, std::string(), base::TimeTicks(), -1);
}
TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) {
@@ -158,10 +159,10 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) {
EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
EXPECT_CALL(*original_peer_, OnCompletedRequest(
- net::OK, false, false, "", base::TimeTicks()));
+ net::OK, false, false, "", base::TimeTicks(), -1));
filter_peer->OnCompletedRequest(
- net::OK, false, false, std::string(), base::TimeTicks());
+ net::OK, false, false, std::string(), base::TimeTicks(), -1);
}
TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) {
@@ -178,10 +179,10 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) {
EXPECT_CALL(*original_peer_, OnReceivedResponse(_)).Times(2);
EXPECT_CALL(*original_peer_, OnCompletedRequest(
- net::OK, false, false, "", base::TimeTicks())).Times(2);
+ net::OK, false, false, "", base::TimeTicks(), -1)).Times(2);
filter_peer->OnCompletedRequest(
- net::OK, false, false, std::string(), base::TimeTicks());
+ net::OK, false, false, std::string(), base::TimeTicks(), -1);
// Test if Send gets called again (it shouldn't be) when first call returned
// an empty dictionary.
@@ -189,7 +190,7 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) {
CreateExtensionLocalizationPeer("text/css", GURL(kExtensionUrl_1));
SetData(filter_peer, "some text");
filter_peer->OnCompletedRequest(
- net::OK, false, false, std::string(), base::TimeTicks());
+ net::OK, false, false, std::string(), base::TimeTicks(), -1);
}
TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestWithCatalogs) {
@@ -215,10 +216,10 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestWithCatalogs) {
EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
EXPECT_CALL(*original_peer_, OnCompletedRequest(
- net::OK, false, false, "", base::TimeTicks()));
+ net::OK, false, false, "", base::TimeTicks(), -1));
filter_peer->OnCompletedRequest(
- net::OK, false, false, std::string(), base::TimeTicks());
+ net::OK, false, false, std::string(), base::TimeTicks(), -1);
}
TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) {
@@ -244,8 +245,8 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) {
EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
EXPECT_CALL(*original_peer_, OnCompletedRequest(
- net::OK, false, false, "", base::TimeTicks()));
+ net::OK, false, false, "", base::TimeTicks(), -1));
filter_peer->OnCompletedRequest(
- net::OK, false, false, std::string(), base::TimeTicks());
+ net::OK, false, false, std::string(), base::TimeTicks(), -1);
}
diff --git a/chrome/renderer/security_filter_peer.cc b/chrome/renderer/security_filter_peer.cc
index c0e5fd2..370fb66 100644
--- a/chrome/renderer/security_filter_peer.cc
+++ b/chrome/renderer/security_filter_peer.cc
@@ -95,7 +95,8 @@ void SecurityFilterPeer::OnCompletedRequest(
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) {
NOTREACHED();
}
@@ -157,7 +158,8 @@ void BufferedPeer::OnCompletedRequest(int error_code,
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) {
// Make sure we delete ourselves at the end of this call.
scoped_ptr<BufferedPeer> this_deleter(this);
@@ -167,7 +169,8 @@ void BufferedPeer::OnCompletedRequest(int error_code,
original_peer_->OnReceivedResponse(response_info_);
original_peer_->OnCompletedRequest(net::ERR_ABORTED, false,
stale_copy_in_cache,
- security_info, completion_time);
+ security_info, completion_time,
+ total_transfer_size);
return;
}
@@ -178,7 +181,7 @@ void BufferedPeer::OnCompletedRequest(int error_code,
-1);
original_peer_->OnCompletedRequest(error_code, was_ignored_by_handler,
stale_copy_in_cache, security_info,
- completion_time);
+ completion_time, total_transfer_size);
}
////////////////////////////////////////////////////////////////////////////////
@@ -213,7 +216,8 @@ void ReplaceContentPeer::OnCompletedRequest(
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) {
webkit_glue::ResourceResponseInfo info;
ProcessResponseInfo(info, &info, mime_type_);
info.security_info = security_info;
@@ -227,7 +231,8 @@ void ReplaceContentPeer::OnCompletedRequest(
false,
stale_copy_in_cache,
security_info,
- completion_time);
+ completion_time,
+ total_transfer_size);
// The request processing is complete, we must delete ourselves.
delete this;
diff --git a/chrome/renderer/security_filter_peer.h b/chrome/renderer/security_filter_peer.h
index e6c1b8f..f67de71 100644
--- a/chrome/renderer/security_filter_peer.h
+++ b/chrome/renderer/security_filter_peer.h
@@ -45,7 +45,8 @@ class SecurityFilterPeer : public webkit_glue::ResourceLoaderBridge::Peer {
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE;
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE;
protected:
SecurityFilterPeer(webkit_glue::ResourceLoaderBridge* resource_loader_bridge,
@@ -78,7 +79,8 @@ class BufferedPeer : public SecurityFilterPeer {
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE;
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE;
protected:
// Invoked when the entire request has been processed before the data is sent
@@ -123,7 +125,8 @@ class ReplaceContentPeer : public SecurityFilterPeer {
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE;
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE;
private:
webkit_glue::ResourceResponseInfo response_info_;
diff --git a/content/browser/devtools/devtools_netlog_observer.cc b/content/browser/devtools/devtools_netlog_observer.cc
index 21a835b..6b77c0b 100644
--- a/content/browser/devtools/devtools_netlog_observer.cc
+++ b/content/browser/devtools/devtools_netlog_observer.cc
@@ -42,10 +42,6 @@ void DevToolsNetLogObserver::OnAddEntry(const net::NetLog::Entry& entry) {
if (entry.source().type == net::NetLog::SOURCE_URL_REQUEST)
OnAddURLRequestEntry(entry);
- else if (entry.source().type == net::NetLog::SOURCE_HTTP_STREAM_JOB)
- OnAddHTTPStreamJobEntry(entry);
- else if (entry.source().type == net::NetLog::SOURCE_SOCKET)
- OnAddSocketEntry(entry);
}
void DevToolsNetLogObserver::OnAddURLRequestEntry(
@@ -74,22 +70,12 @@ void DevToolsNetLogObserver::OnAddURLRequestEntry(
}
request_to_info_[entry.source().id] = new ResourceInfo();
-
- if (request_to_encoded_data_length_.size() > kMaxNumEntries) {
- LOG(WARNING) << "The encoded data length observer url request count "
- "has grown larger than expected, resetting";
- request_to_encoded_data_length_.clear();
- }
-
- request_to_encoded_data_length_[entry.source().id] = 0;
}
return;
} else if (entry.type() == net::NetLog::TYPE_REQUEST_ALIVE) {
// Cleanup records based on the TYPE_REQUEST_ALIVE entry.
- if (is_end) {
+ if (is_end)
request_to_info_.erase(entry.source().id);
- request_to_encoded_data_length_.erase(entry.source().id);
- }
return;
}
@@ -167,99 +153,11 @@ void DevToolsNetLogObserver::OnAddURLRequestEntry(
response_headers->raw_headers());
break;
}
- case net::NetLog::TYPE_HTTP_STREAM_REQUEST_BOUND_TO_JOB: {
- scoped_ptr<base::Value> event_params(entry.ParametersToValue());
- net::NetLog::Source http_stream_job_source;
- if (!net::NetLog::Source::FromEventParameters(event_params.get(),
- &http_stream_job_source)) {
- NOTREACHED();
- break;
- }
-
- uint32 http_stream_job_id = http_stream_job_source.id;
- HTTPStreamJobToSocketMap::iterator it =
- http_stream_job_to_socket_.find(http_stream_job_id);
- if (it == http_stream_job_to_socket_.end())
- return;
- uint32 socket_id = it->second;
-
- if (socket_to_request_.size() > kMaxNumEntries) {
- LOG(WARNING) << "The url request observer socket count has grown "
- "larger than expected, resetting";
- socket_to_request_.clear();
- }
-
- socket_to_request_[socket_id] = entry.source().id;
- http_stream_job_to_socket_.erase(http_stream_job_id);
- break;
- }
default:
break;
}
}
-void DevToolsNetLogObserver::OnAddHTTPStreamJobEntry(
- const net::NetLog::Entry& entry) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-
- if (entry.type() == net::NetLog::TYPE_SOCKET_POOL_BOUND_TO_SOCKET) {
- scoped_ptr<base::Value> event_params(entry.ParametersToValue());
- net::NetLog::Source socket_source;
- if (!net::NetLog::Source::FromEventParameters(event_params.get(),
- &socket_source)) {
- NOTREACHED();
- return;
- }
-
- // Prevents us from passively growing the memory unbounded in
- // case something went wrong. Should not happen.
- if (http_stream_job_to_socket_.size() > kMaxNumEntries) {
- LOG(WARNING) << "The load timing observer http stream job count "
- "has grown larger than expected, resetting";
- http_stream_job_to_socket_.clear();
- }
- http_stream_job_to_socket_[entry.source().id] = socket_source.id;
- }
-}
-
-void DevToolsNetLogObserver::OnAddSocketEntry(
- const net::NetLog::Entry& entry) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-
- bool is_end = entry.phase() == net::NetLog::PHASE_END;
-
- SocketToRequestMap::iterator it =
- socket_to_request_.find(entry.source().id);
- if (it == socket_to_request_.end())
- return;
- uint32 request_id = it->second;
-
- if (entry.type() == net::NetLog::TYPE_SOCKET_IN_USE) {
- if (is_end)
- socket_to_request_.erase(entry.source().id);
- return;
- }
-
- RequestToEncodedDataLengthMap::iterator encoded_data_length_it =
- request_to_encoded_data_length_.find(request_id);
- if (encoded_data_length_it == request_to_encoded_data_length_.end())
- return;
-
- if (net::NetLog::TYPE_SOCKET_BYTES_RECEIVED == entry.type()) {
- int byte_count = 0;
- scoped_ptr<base::Value> value(entry.ParametersToValue());
- if (!value->IsType(base::Value::TYPE_DICTIONARY))
- return;
-
- base::DictionaryValue* dValue =
- static_cast<base::DictionaryValue*>(value.get());
- if (!dValue->GetInteger("byte_count", &byte_count))
- return;
-
- encoded_data_length_it->second += byte_count;
- }
-}
-
void DevToolsNetLogObserver::Attach() {
DCHECK(!instance_);
net::NetLog* net_log = GetContentClient()->browser()->GetNetLog();
@@ -303,26 +201,4 @@ void DevToolsNetLogObserver::PopulateResponseInfo(
dev_tools_net_log_observer->GetResourceInfo(source_id);
}
-// static
-int DevToolsNetLogObserver::GetAndResetEncodedDataLength(
- net::URLRequest* request) {
- if (!(request->load_flags() & net::LOAD_REPORT_RAW_HEADERS))
- return -1;
-
- uint32 source_id = request->net_log().source().id;
- DevToolsNetLogObserver* dev_tools_net_log_observer =
- DevToolsNetLogObserver::GetInstance();
- if (dev_tools_net_log_observer == NULL)
- return -1;
-
- RequestToEncodedDataLengthMap::iterator it =
- dev_tools_net_log_observer->request_to_encoded_data_length_.find(
- source_id);
- if (it == dev_tools_net_log_observer->request_to_encoded_data_length_.end())
- return -1;
- int encoded_data_length = it->second;
- it->second = 0;
- return encoded_data_length;
-}
-
} // namespace content
diff --git a/content/browser/devtools/devtools_netlog_observer.h b/content/browser/devtools/devtools_netlog_observer.h
index d1d478c..f5ef088 100644
--- a/content/browser/devtools/devtools_netlog_observer.h
+++ b/content/browser/devtools/devtools_netlog_observer.h
@@ -32,8 +32,6 @@ class DevToolsNetLogObserver : public net::NetLog::ThreadSafeObserver {
virtual void OnAddEntry(const net::NetLog::Entry& entry) OVERRIDE;
void OnAddURLRequestEntry(const net::NetLog::Entry& entry);
- void OnAddHTTPStreamJobEntry(const net::NetLog::Entry& entry);
- void OnAddSocketEntry(const net::NetLog::Entry& entry);
static void Attach();
static void Detach();
@@ -43,7 +41,6 @@ class DevToolsNetLogObserver : public net::NetLog::ThreadSafeObserver {
static DevToolsNetLogObserver* GetInstance();
static void PopulateResponseInfo(net::URLRequest*,
ResourceResponse*);
- static int GetAndResetEncodedDataLength(net::URLRequest* request);
private:
static DevToolsNetLogObserver* instance_;
@@ -54,13 +51,7 @@ class DevToolsNetLogObserver : public net::NetLog::ThreadSafeObserver {
ResourceInfo* GetResourceInfo(uint32 id);
typedef base::hash_map<uint32, scoped_refptr<ResourceInfo> > RequestToInfoMap;
- typedef base::hash_map<uint32, int> RequestToEncodedDataLengthMap;
- typedef base::hash_map<uint32, uint32> HTTPStreamJobToSocketMap;
- typedef base::hash_map<uint32, uint32> SocketToRequestMap;
RequestToInfoMap request_to_info_;
- RequestToEncodedDataLengthMap request_to_encoded_data_length_;
- HTTPStreamJobToSocketMap http_stream_job_to_socket_;
- SocketToRequestMap socket_to_request_;
DISALLOW_COPY_AND_ASSIGN(DevToolsNetLogObserver);
};
diff --git a/content/browser/loader/async_resource_handler.cc b/content/browser/loader/async_resource_handler.cc
index 2a35c4d..5326b66 100644
--- a/content/browser/loader/async_resource_handler.cc
+++ b/content/browser/loader/async_resource_handler.cc
@@ -87,7 +87,8 @@ AsyncResourceHandler::AsyncResourceHandler(
did_defer_(false),
has_checked_for_sufficient_resources_(false),
sent_received_response_msg_(false),
- sent_first_data_msg_(false) {
+ sent_first_data_msg_(false),
+ reported_transfer_size_(0) {
InitializeResourceBufferConstants();
}
@@ -159,6 +160,8 @@ bool AsyncResourceHandler::OnRequestRedirected(int request_id,
}
DevToolsNetLogObserver::PopulateResponseInfo(request(), response);
+ response->head.encoded_data_length = request()->GetTotalReceivedBytes();
+ reported_transfer_size_ = 0;
response->head.request_start = request()->creation_time();
response->head.response_start = TimeTicks::Now();
return info->filter()->Send(new ResourceMsg_ReceivedRedirect(
@@ -279,8 +282,10 @@ bool AsyncResourceHandler::OnReadCompleted(int request_id, int bytes_read,
}
int data_offset = buffer_->GetLastAllocationOffset();
- int encoded_data_length =
- DevToolsNetLogObserver::GetAndResetEncodedDataLength(request());
+
+ int64_t current_transfer_size = request()->GetTotalReceivedBytes();
+ int encoded_data_length = current_transfer_size - reported_transfer_size_;
+ reported_transfer_size_ = current_transfer_size;
filter->Send(new ResourceMsg_DataReceived(
request_id, data_offset, bytes_read, encoded_data_length));
@@ -302,8 +307,9 @@ bool AsyncResourceHandler::OnReadCompleted(int request_id, int bytes_read,
void AsyncResourceHandler::OnDataDownloaded(
int request_id, int bytes_downloaded) {
- int encoded_data_length =
- DevToolsNetLogObserver::GetAndResetEncodedDataLength(request());
+ int64_t current_transfer_size = request()->GetTotalReceivedBytes();
+ int encoded_data_length = current_transfer_size - reported_transfer_size_;
+ reported_transfer_size_ = current_transfer_size;
ResourceMessageFilter* filter = GetFilter();
if (filter) {
@@ -360,6 +366,8 @@ void AsyncResourceHandler::OnResponseCompleted(
request_complete_data.exists_in_cache = request()->response_info().was_cached;
request_complete_data.security_info = security_info;
request_complete_data.completion_time = TimeTicks::Now();
+ request_complete_data.encoded_data_length =
+ request()->GetTotalReceivedBytes();
info->filter()->Send(
new ResourceMsg_RequestComplete(request_id, request_complete_data));
}
diff --git a/content/browser/loader/async_resource_handler.h b/content/browser/loader/async_resource_handler.h
index 2de156c..7a51b77 100644
--- a/content/browser/loader/async_resource_handler.h
+++ b/content/browser/loader/async_resource_handler.h
@@ -92,6 +92,8 @@ class AsyncResourceHandler : public ResourceHandler,
bool sent_received_response_msg_;
bool sent_first_data_msg_;
+ int64_t reported_transfer_size_;
+
DISALLOW_COPY_AND_ASSIGN(AsyncResourceHandler);
};
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
index 173202e..ab93adb 100644
--- a/content/browser/loader/resource_dispatcher_host_impl.cc
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -164,7 +164,7 @@ void AbortRequestBeforeItStarts(ResourceMessageFilter* filter,
request_complete_data.exists_in_cache = false;
// No security info needed, connection not established.
request_complete_data.completion_time = base::TimeTicks();
-
+ request_complete_data.encoded_data_length = 0;
filter->Send(new ResourceMsg_RequestComplete(
request_id, request_complete_data));
}
diff --git a/content/browser/loader/sync_resource_handler.cc b/content/browser/loader/sync_resource_handler.cc
index 23e44f7..865b29e 100644
--- a/content/browser/loader/sync_resource_handler.cc
+++ b/content/browser/loader/sync_resource_handler.cc
@@ -25,7 +25,8 @@ SyncResourceHandler::SyncResourceHandler(
: ResourceHandler(request),
read_buffer_(new net::IOBuffer(kReadBufSize)),
result_message_(result_message),
- rdh_(resource_dispatcher_host) {
+ rdh_(resource_dispatcher_host),
+ total_transfer_size_(0) {
result_.final_url = request->url();
}
@@ -65,6 +66,8 @@ bool SyncResourceHandler::OnRequestRedirected(
return false;
}
result_.final_url = new_url;
+
+ total_transfer_size_ += request()->GetTotalReceivedBytes();
return true;
}
@@ -136,8 +139,8 @@ void SyncResourceHandler::OnResponseCompleted(
result_.error_code = status.error();
- result_.encoded_data_length =
- DevToolsNetLogObserver::GetAndResetEncodedDataLength(request());
+ int total_transfer_size = request()->GetTotalReceivedBytes();
+ result_.encoded_data_length = total_transfer_size_ + total_transfer_size;
ResourceHostMsg_SyncLoad::WriteReplyParams(result_message_, result_);
filter->Send(result_message_);
diff --git a/content/browser/loader/sync_resource_handler.h b/content/browser/loader/sync_resource_handler.h
index bc5d646..3a71483 100644
--- a/content/browser/loader/sync_resource_handler.h
+++ b/content/browser/loader/sync_resource_handler.h
@@ -70,6 +70,7 @@ class SyncResourceHandler : public ResourceHandler {
SyncLoadResult result_;
IPC::Message* result_message_;
ResourceDispatcherHostImpl* rdh_;
+ int64 total_transfer_size_;
};
} // namespace content
diff --git a/content/child/npapi/plugin_url_fetcher.cc b/content/child/npapi/plugin_url_fetcher.cc
index fa85dd6..7359041 100644
--- a/content/child/npapi/plugin_url_fetcher.cc
+++ b/content/child/npapi/plugin_url_fetcher.cc
@@ -343,7 +343,8 @@ void PluginURLFetcher::OnCompletedRequest(
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) {
if (multipart_delegate_) {
multipart_delegate_->OnCompletedRequest();
multipart_delegate_.reset();
diff --git a/content/child/npapi/plugin_url_fetcher.h b/content/child/npapi/plugin_url_fetcher.h
index cf58813..4e5e2ff 100644
--- a/content/child/npapi/plugin_url_fetcher.h
+++ b/content/child/npapi/plugin_url_fetcher.h
@@ -64,7 +64,8 @@ class PluginURLFetcher : public webkit_glue::ResourceLoaderBridge::Peer {
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE;
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE;
PluginStreamUrl* plugin_stream_;
GURL url_;
diff --git a/content/child/resource_dispatcher.cc b/content/child/resource_dispatcher.cc
index d6affbb..c8f0021 100644
--- a/content/child/resource_dispatcher.cc
+++ b/content/child/resource_dispatcher.cc
@@ -552,7 +552,8 @@ void ResourceDispatcher::OnRequestComplete(
request_complete_data.was_ignored_by_handler,
request_complete_data.exists_in_cache,
request_complete_data.security_info,
- renderer_completion_time);
+ renderer_completion_time,
+ request_complete_data.encoded_data_length);
}
int ResourceDispatcher::AddPendingRequest(
diff --git a/content/child/resource_dispatcher_unittest.cc b/content/child/resource_dispatcher_unittest.cc
index 7ff9ac3..6452575 100644
--- a/content/child/resource_dispatcher_unittest.cc
+++ b/content/child/resource_dispatcher_unittest.cc
@@ -72,7 +72,8 @@ class TestRequestCallback : public ResourceLoaderBridge::Peer {
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE {
EXPECT_FALSE(complete_);
complete_ = true;
}
@@ -298,7 +299,8 @@ class DeferredResourceLoadingTest : public ResourceDispatcherTest,
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE {
}
protected:
@@ -386,7 +388,8 @@ class TimeConversionTest : public ResourceDispatcherTest,
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE {
}
const ResourceResponseInfo& response_info() const { return response_info_; }
diff --git a/content/common/resource_messages.h b/content/common/resource_messages.h
index 100f75c..063bfd6 100644
--- a/content/common/resource_messages.h
+++ b/content/common/resource_messages.h
@@ -229,6 +229,9 @@ IPC_STRUCT_BEGIN(ResourceMsg_RequestCompleteData)
// Time the request completed.
IPC_STRUCT_MEMBER(base::TimeTicks, completion_time)
+
+ // Total amount of data received from the network.
+ IPC_STRUCT_MEMBER(int64, encoded_data_length)
IPC_STRUCT_END()
// Resource messages sent from the browser to the renderer.
diff --git a/content/renderer/fetchers/resource_fetcher_impl.cc b/content/renderer/fetchers/resource_fetcher_impl.cc
index e5678a8..6462e76 100644
--- a/content/renderer/fetchers/resource_fetcher_impl.cc
+++ b/content/renderer/fetchers/resource_fetcher_impl.cc
@@ -164,7 +164,8 @@ void ResourceFetcherImpl::didReceiveCachedMetadata(
}
void ResourceFetcherImpl::didFinishLoading(
- WebURLLoader* loader, double finishTime) {
+ WebURLLoader* loader, double finishTime,
+ int64_t total_encoded_data_length) {
DCHECK(!completed_);
RunCallback(response_, data_);
diff --git a/content/renderer/fetchers/resource_fetcher_impl.h b/content/renderer/fetchers/resource_fetcher_impl.h
index 5ae09e2..aed1d79 100644
--- a/content/renderer/fetchers/resource_fetcher_impl.h
+++ b/content/renderer/fetchers/resource_fetcher_impl.h
@@ -70,7 +70,8 @@ class ResourceFetcherImpl : public ResourceFetcher,
blink::WebURLLoader* loader, const char* data, int data_length,
int encoded_data_length);
virtual void didFinishLoading(
- blink::WebURLLoader* loader, double finishTime);
+ blink::WebURLLoader* loader, double finishTime,
+ int64_t total_encoded_data_length);
virtual void didFail(
blink::WebURLLoader* loader, const blink::WebURLError& error);
diff --git a/content/renderer/media/android/media_info_loader.cc b/content/renderer/media/android/media_info_loader.cc
index 875265c..8a49e04 100644
--- a/content/renderer/media/android/media_info_loader.cc
+++ b/content/renderer/media/android/media_info_loader.cc
@@ -147,7 +147,8 @@ void MediaInfoLoader::didReceiveCachedMetadata(
void MediaInfoLoader::didFinishLoading(
WebURLLoader* loader,
- double finishTime) {
+ double finishTime,
+ int64_t total_encoded_data_length) {
DCHECK(active_loader_.get());
DidBecomeReady(kOk);
}
diff --git a/content/renderer/media/android/media_info_loader.h b/content/renderer/media/android/media_info_loader.h
index 8e67c80..68e5232 100644
--- a/content/renderer/media/android/media_info_loader.h
+++ b/content/renderer/media/android/media_info_loader.h
@@ -95,7 +95,8 @@ class CONTENT_EXPORT MediaInfoLoader : private blink::WebURLLoaderClient {
const char* data, int dataLength);
virtual void didFinishLoading(
blink::WebURLLoader* loader,
- double finishTime);
+ double finishTime,
+ int64_t total_encoded_data_length);
virtual void didFail(
blink::WebURLLoader* loader,
const blink::WebURLError&);
diff --git a/content/renderer/media/buffered_data_source_unittest.cc b/content/renderer/media/buffered_data_source_unittest.cc
index e486907..df4aae8 100644
--- a/content/renderer/media/buffered_data_source_unittest.cc
+++ b/content/renderer/media/buffered_data_source_unittest.cc
@@ -175,7 +175,7 @@ class BufferedDataSourceTest : public testing::Test {
void FinishLoading() {
data_source_->set_loading(false);
- loader()->didFinishLoading(url_loader(), 0);
+ loader()->didFinishLoading(url_loader(), 0, -1);
message_loop_.RunUntilIdle();
}
diff --git a/content/renderer/media/buffered_resource_loader.cc b/content/renderer/media/buffered_resource_loader.cc
index b050feb..3177209 100644
--- a/content/renderer/media/buffered_resource_loader.cc
+++ b/content/renderer/media/buffered_resource_loader.cc
@@ -483,7 +483,8 @@ void BufferedResourceLoader::didReceiveCachedMetadata(
void BufferedResourceLoader::didFinishLoading(
WebURLLoader* loader,
- double finishTime) {
+ double finishTime,
+ int64_t total_encoded_data_length) {
DVLOG(1) << "didFinishLoading";
DCHECK(active_loader_.get());
diff --git a/content/renderer/media/buffered_resource_loader.h b/content/renderer/media/buffered_resource_loader.h
index 3331979..ee4759d 100644
--- a/content/renderer/media/buffered_resource_loader.h
+++ b/content/renderer/media/buffered_resource_loader.h
@@ -164,7 +164,8 @@ class CONTENT_EXPORT BufferedResourceLoader
const char* data, int dataLength);
virtual void didFinishLoading(
blink::WebURLLoader* loader,
- double finishTime);
+ double finishTime,
+ int64_t total_encoded_data_length);
virtual void didFail(
blink::WebURLLoader* loader,
const blink::WebURLError&);
diff --git a/content/renderer/media/buffered_resource_loader_unittest.cc b/content/renderer/media/buffered_resource_loader_unittest.cc
index a18422f..94022f6 100644
--- a/content/renderer/media/buffered_resource_loader_unittest.cc
+++ b/content/renderer/media/buffered_resource_loader_unittest.cc
@@ -425,7 +425,7 @@ TEST_F(BufferedResourceLoaderTest, BufferAndRead) {
// Response has completed.
EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFinished));
- loader_->didFinishLoading(url_loader_, 0);
+ loader_->didFinishLoading(url_loader_, 0, -1);
// Try to read 10 from position 25 will just return with 5 bytes.
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 5));
@@ -518,7 +518,7 @@ TEST_F(BufferedResourceLoaderTest, ReadOutsideBuffer) {
EXPECT_CALL(*this, LoadingCallback(BufferedResourceLoader::kLoadingFinished));
EXPECT_CALL(*this, ReadCallback(BufferedResourceLoader::kOk, 5));
- loader_->didFinishLoading(url_loader_, 0);
+ loader_->didFinishLoading(url_loader_, 0, -1);
}
TEST_F(BufferedResourceLoaderTest, RequestFailedWhenRead) {
diff --git a/content/renderer/npapi/webplugin_impl.cc b/content/renderer/npapi/webplugin_impl.cc
index 4027802..7df9ea4 100644
--- a/content/renderer/npapi/webplugin_impl.cc
+++ b/content/renderer/npapi/webplugin_impl.cc
@@ -132,7 +132,9 @@ class MultiPartResponseClient : public WebURLLoaderClient {
byte_range_lower_bound_ += data_length;
}
- virtual void didFinishLoading(WebURLLoader*, double finishTime) {}
+ virtual void didFinishLoading(WebURLLoader*,
+ double finishTime,
+ int64_t total_encoded_data_length) {}
virtual void didFail(WebURLLoader*, const WebURLError&) {}
private:
@@ -510,7 +512,8 @@ void WebPluginImpl::LoaderClient::didReceiveCachedMetadata(
}
void WebPluginImpl::LoaderClient::didFinishLoading(
- blink::WebURLLoader* loader, double finishTime) {
+ blink::WebURLLoader* loader, double finishTime,
+ int64_t total_encoded_data_length) {
parent_->didFinishLoading(loader, finishTime);
}
diff --git a/content/renderer/npapi/webplugin_impl.h b/content/renderer/npapi/webplugin_impl.h
index ef7b8ea..b8b59d5 100644
--- a/content/renderer/npapi/webplugin_impl.h
+++ b/content/renderer/npapi/webplugin_impl.h
@@ -353,7 +353,8 @@ class WebPluginImpl : public WebPlugin,
const char* data,
int dataLength) OVERRIDE;
virtual void didFinishLoading(blink::WebURLLoader*,
- double finishTime) OVERRIDE;
+ double finishTime,
+ int64_t total_encoded_data_length) OVERRIDE;
virtual void didFail(blink::WebURLLoader*,
const blink::WebURLError&) OVERRIDE;
diff --git a/content/renderer/p2p/port_allocator.cc b/content/renderer/p2p/port_allocator.cc
index 5600663..1be8152 100644
--- a/content/renderer/p2p/port_allocator.cc
+++ b/content/renderer/p2p/port_allocator.cc
@@ -133,8 +133,9 @@ void P2PPortAllocatorSession::didReceiveData(
relay_session_response_.append(data, data + data_length);
}
-void P2PPortAllocatorSession::didFinishLoading(WebURLLoader* loader,
- double finish_time) {
+void P2PPortAllocatorSession::didFinishLoading(
+ WebURLLoader* loader, double finish_time,
+ int64_t total_encoded_data_length) {
ParseRelayResponse();
}
diff --git a/content/renderer/p2p/port_allocator.h b/content/renderer/p2p/port_allocator.h
index edb3403..8ff20a5 100644
--- a/content/renderer/p2p/port_allocator.h
+++ b/content/renderer/p2p/port_allocator.h
@@ -94,7 +94,8 @@ class P2PPortAllocatorSession : public cricket::BasicPortAllocatorSession,
int data_length,
int encoded_data_length) OVERRIDE;
virtual void didFinishLoading(blink::WebURLLoader* loader,
- double finish_time) OVERRIDE;
+ double finish_time,
+ int64_t total_encoded_data_length) OVERRIDE;
virtual void didFail(blink::WebURLLoader* loader,
const blink::WebURLError& error) OVERRIDE;
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
index b54b4d4..dadddf9 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -428,8 +428,8 @@ void PepperPluginInstanceImpl::ExternalDocumentLoader::ReplayReceivedData(
0 /* encoded_data_length */);
}
if (finished_loading_) {
- document_loader->didFinishLoading(NULL,
- 0 /* finish_time */);
+ document_loader->didFinishLoading(NULL, 0 /* finish_time */,
+ blink::WebURLLoaderClient::kUnknownEncodedDataLength);
}
if (error_.get()) {
document_loader->didFail(NULL, *error_);
@@ -446,7 +446,8 @@ void PepperPluginInstanceImpl::ExternalDocumentLoader::didReceiveData(
void PepperPluginInstanceImpl::ExternalDocumentLoader::didFinishLoading(
WebURLLoader* loader,
- double finish_time) {
+ double finish_time,
+ int64_t total_encoded_data_length) {
DCHECK(!finished_loading_);
finished_loading_ = true;
}
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.h b/content/renderer/pepper/pepper_plugin_instance_impl.h
index 62c6614..cc5b98f 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.h
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.h
@@ -538,7 +538,8 @@ class CONTENT_EXPORT PepperPluginInstanceImpl
int data_length,
int encoded_data_length);
virtual void didFinishLoading(blink::WebURLLoader* loader,
- double finish_time);
+ double finish_time,
+ int64_t total_encoded_data_length);
virtual void didFail(blink::WebURLLoader* loader,
const blink::WebURLError& error);
diff --git a/content/renderer/pepper/pepper_url_loader_host.cc b/content/renderer/pepper/pepper_url_loader_host.cc
index 178548e..e6a2b5c 100644
--- a/content/renderer/pepper/pepper_url_loader_host.cc
+++ b/content/renderer/pepper/pepper_url_loader_host.cc
@@ -173,7 +173,8 @@ void PepperURLLoaderHost::didReceiveData(WebURLLoader* loader,
}
void PepperURLLoaderHost::didFinishLoading(WebURLLoader* loader,
- double finish_time) {
+ double finish_time,
+ int64_t total_encoded_data_length) {
// Note that |loader| will be NULL for document loads.
SendUpdateToPlugin(new PpapiPluginMsg_URLLoader_FinishedLoading(PP_OK));
}
diff --git a/content/renderer/pepper/pepper_url_loader_host.h b/content/renderer/pepper/pepper_url_loader_host.h
index 2790c78..d352536 100644
--- a/content/renderer/pepper/pepper_url_loader_host.h
+++ b/content/renderer/pepper/pepper_url_loader_host.h
@@ -59,7 +59,8 @@ class PepperURLLoaderHost
int data_length,
int encoded_data_length);
virtual void didFinishLoading(blink::WebURLLoader* loader,
- double finish_time);
+ double finish_time,
+ int64_t total_encoded_data_length);
virtual void didFail(blink::WebURLLoader* loader,
const blink::WebURLError& error);
diff --git a/content/renderer/pepper/pepper_webplugin_impl.cc b/content/renderer/pepper/pepper_webplugin_impl.cc
index 8947d73..1cd2850 100644
--- a/content/renderer/pepper/pepper_webplugin_impl.cc
+++ b/content/renderer/pepper/pepper_webplugin_impl.cc
@@ -211,7 +211,8 @@ void PepperWebPluginImpl::didReceiveData(const char* data, int data_length) {
void PepperWebPluginImpl::didFinishLoading() {
blink::WebURLLoaderClient* document_loader = instance_->document_loader();
if (document_loader)
- document_loader->didFinishLoading(NULL, 0.0);
+ document_loader->didFinishLoading(NULL, 0.0,
+ blink::WebURLLoaderClient::kUnknownEncodedDataLength);
}
void PepperWebPluginImpl::didFailLoading(const blink::WebURLError& error) {
diff --git a/content/test/weburl_loader_mock.cc b/content/test/weburl_loader_mock.cc
index 5503053..929c542 100644
--- a/content/test/weburl_loader_mock.cc
+++ b/content/test/weburl_loader_mock.cc
@@ -37,7 +37,7 @@ void WebURLLoaderMock::ServeAsynchronousRequest(
return;
}
client_->didReceiveData(this, data.data(), data.size(), data.size());
- client_->didFinishLoading(this, 0);
+ client_->didFinishLoading(this, 0, data.size());
}
blink::WebURLRequest WebURLLoaderMock::ServeRedirect(
diff --git a/webkit/child/multipart_response_delegate_unittest.cc b/webkit/child/multipart_response_delegate_unittest.cc
index 4bfa6ab..58c92c5e 100644
--- a/webkit/child/multipart_response_delegate_unittest.cc
+++ b/webkit/child/multipart_response_delegate_unittest.cc
@@ -75,7 +75,8 @@ class MockWebURLLoaderClient : public WebURLLoaderClient {
data_.append(data, data_length);
total_encoded_data_length_ += encoded_data_length;
}
- virtual void didFinishLoading(WebURLLoader*, double finishTime) {}
+ virtual void didFinishLoading(
+ WebURLLoader*, double finishTime, int64_t total_encoded_data_length) {}
virtual void didFail(WebURLLoader*, const WebURLError&) {}
void Reset() {
diff --git a/webkit/child/resource_loader_bridge.h b/webkit/child/resource_loader_bridge.h
index ac8d1fa..2a54d616 100644
--- a/webkit/child/resource_loader_bridge.h
+++ b/webkit/child/resource_loader_bridge.h
@@ -155,16 +155,14 @@ class ResourceLoaderBridge {
// that case, OnReceivedData will not be called.
// The encoded_data_length is the length of the encoded data transferred
// over the network, which could be different from data length (e.g. for
- // gzipped content), or -1 if unknown. It is only valid while devtools are
- // attached. Otherwise it becomes -1.
+ // gzipped content).
virtual void OnDownloadedData(int len, int encoded_data_length) = 0;
// Called when a chunk of response data is available. This method may
// be called multiple times or not at all if an error occurs.
// The encoded_data_length is the length of the encoded data transferred
// over the network, which could be different from data length (e.g. for
- // gzipped content), or -1 if unknown. It is only valid while devtools are
- // attached. Otherwise it becomes -1.
+ // gzipped content).
virtual void OnReceivedData(const char* data,
int data_length,
int encoded_data_length) = 0;
@@ -180,7 +178,8 @@ class ResourceLoaderBridge {
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) = 0;
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) = 0;
protected:
virtual ~Peer() {}
diff --git a/webkit/child/weburlloader_impl.cc b/webkit/child/weburlloader_impl.cc
index 64f91ab..fb805a5 100644
--- a/webkit/child/weburlloader_impl.cc
+++ b/webkit/child/weburlloader_impl.cc
@@ -247,7 +247,8 @@ class WebURLLoaderImpl::Context : public base::RefCounted<Context>,
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE;
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) OVERRIDE;
private:
friend class base::RefCounted<Context>;
@@ -601,7 +602,8 @@ void WebURLLoaderImpl::Context::OnCompletedRequest(
bool was_ignored_by_handler,
bool stale_copy_in_cache,
const std::string& security_info,
- const base::TimeTicks& completion_time) {
+ const base::TimeTicks& completion_time,
+ int64 total_transfer_size) {
if (ftp_listing_delegate_) {
ftp_listing_delegate_->OnCompletedRequest();
ftp_listing_delegate_.reset(NULL);
@@ -622,7 +624,8 @@ void WebURLLoaderImpl::Context::OnCompletedRequest(
error_code));
} else {
client_->didFinishLoading(
- loader_, (completion_time - TimeTicks()).InSecondsF());
+ loader_, (completion_time - TimeTicks()).InSecondsF(),
+ total_transfer_size);
}
}
@@ -674,7 +677,7 @@ void WebURLLoaderImpl::Context::HandleDataURL() {
}
OnCompletedRequest(error_code, false, false, info.security_info,
- base::TimeTicks::Now());
+ base::TimeTicks::Now(), 0);
}
// WebURLLoaderImpl -----------------------------------------------------------