Chromium Code Reviews| Index: content/browser/loader/resource_loader.cc |
| diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc |
| index 6855cf61d2051bd1cb45c37d93262bb53ee6f720..8bc51930cdcf67dfba283e8091ddba75b09dfe7d 100644 |
| --- a/content/browser/loader/resource_loader.cc |
| +++ b/content/browser/loader/resource_loader.cc |
| @@ -40,6 +40,9 @@ using base::TimeTicks; |
| namespace content { |
| namespace { |
| +// The interval for calls to ResourceLoader::ReportUploadProgress. |
| +const int kUploadProgressIntervalMsec = 100; |
| + |
| void PopulateResourceResponse(ResourceRequestInfoImpl* info, |
| net::URLRequest* request, |
| ResourceResponse* response) { |
| @@ -161,11 +164,8 @@ void ResourceLoader::ReportUploadProgress() { |
| bool too_much_time_passed = time_since_last > kOneSecond; |
| if (is_finished || enough_new_progress || too_much_time_passed) { |
| - ResourceRequestInfoImpl* info = GetRequestInfo(); |
| - if (info->is_upload_progress_enabled()) { |
| - handler_->OnUploadProgress(progress.position(), progress.size()); |
| - waiting_for_upload_progress_ack_ = true; |
| - } |
| + handler_->OnUploadProgress(progress.position(), progress.size()); |
| + waiting_for_upload_progress_ack_ = true; |
| last_upload_ticks_ = TimeTicks::Now(); |
| last_upload_position_ = progress.position(); |
| } |
| @@ -334,6 +334,8 @@ void ResourceLoader::OnResponseStarted(net::URLRequest* unused) { |
| VLOG(1) << "OnResponseStarted: " << request_->url().spec(); |
| + progress_timer_.Stop(); |
| + |
| // The CanLoadPage check should take place after any server redirects have |
| // finished, at the point in time that we know a page will commit in the |
| // renderer process. |
| @@ -355,8 +357,10 @@ void ResourceLoader::OnResponseStarted(net::URLRequest* unused) { |
| // We want to send a final upload progress message prior to sending the |
| // response complete message even if we're waiting for an ack to to a |
| // previous upload progress message. |
| - waiting_for_upload_progress_ack_ = false; |
| - ReportUploadProgress(); |
| + if (info->is_upload_progress_enabled()) { |
|
Andre
2015/05/20 22:36:10
I think we need to add this check.
|
| + waiting_for_upload_progress_ack_ = false; |
| + ReportUploadProgress(); |
| + } |
| CompleteResponseStarted(); |
| @@ -496,6 +500,14 @@ void ResourceLoader::StartRequestInternal() { |
| request_->Start(); |
| delegate_->DidStartRequest(this); |
| + |
| + if (GetRequestInfo()->is_upload_progress_enabled()) { |
|
mmenke
2015/05/21 15:41:57
I'm paranoid. Maybe add "&& request_->get_upload(
Andre
2015/05/21 20:59:31
Done.
|
| + progress_timer_.Start( |
| + FROM_HERE, |
| + base::TimeDelta::FromMilliseconds(kUploadProgressIntervalMsec), |
| + this, |
| + &ResourceLoader::ReportUploadProgress); |
| + } |
| } |
| void ResourceLoader::CancelRequestInternal(int error, bool from_renderer) { |