Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(882)

Side by Side Diff: content/browser/renderer_host/resource_loader.cc

Issue 10825073: Stop using ScopedAllowIO in content::ResourceDispatcherHostImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Chrome Frame fix Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/resource_loader.h" 5 #include "content/browser/renderer_host/resource_loader.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "content/browser/child_process_security_policy_impl.h" 9 #include "content/browser/child_process_security_policy_impl.h"
10 #include "content/browser/renderer_host/doomed_resource_handler.h" 10 #include "content/browser/renderer_host/doomed_resource_handler.h"
11 #include "content/browser/renderer_host/resource_loader_delegate.h" 11 #include "content/browser/renderer_host/resource_loader_delegate.h"
12 #include "content/browser/renderer_host/resource_request_info_impl.h" 12 #include "content/browser/renderer_host/resource_request_info_impl.h"
13 #include "content/browser/ssl/ssl_client_auth_handler.h" 13 #include "content/browser/ssl/ssl_client_auth_handler.h"
14 #include "content/browser/ssl/ssl_manager.h" 14 #include "content/browser/ssl/ssl_manager.h"
15 #include "content/common/ssl_status_serialization.h" 15 #include "content/common/ssl_status_serialization.h"
16 #include "content/public/browser/cert_store.h" 16 #include "content/public/browser/cert_store.h"
17 #include "content/public/browser/resource_dispatcher_host_login_delegate.h" 17 #include "content/public/browser/resource_dispatcher_host_login_delegate.h"
18 #include "content/public/common/resource_response.h" 18 #include "content/public/common/resource_response.h"
19 #include "net/base/load_flags.h" 19 #include "net/base/load_flags.h"
20 #include "net/base/upload_data_stream.h"
20 #include "net/http/http_response_headers.h" 21 #include "net/http/http_response_headers.h"
21 #include "webkit/appcache/appcache_interceptor.h" 22 #include "webkit/appcache/appcache_interceptor.h"
22 23
23 using base::TimeDelta; 24 using base::TimeDelta;
24 using base::TimeTicks; 25 using base::TimeTicks;
25 26
26 namespace content { 27 namespace content {
27 namespace { 28 namespace {
28 29
29 void PopulateResourceResponse(net::URLRequest* request, 30 void PopulateResourceResponse(net::URLRequest* request,
(...skipping 20 matching lines...) Expand all
50 51
51 } // namespace 52 } // namespace
52 53
53 ResourceLoader::ResourceLoader(scoped_ptr<net::URLRequest> request, 54 ResourceLoader::ResourceLoader(scoped_ptr<net::URLRequest> request,
54 scoped_ptr<ResourceHandler> handler, 55 scoped_ptr<ResourceHandler> handler,
55 ResourceLoaderDelegate* delegate) 56 ResourceLoaderDelegate* delegate)
56 : deferred_stage_(DEFERRED_NONE), 57 : deferred_stage_(DEFERRED_NONE),
57 request_(request.Pass()), 58 request_(request.Pass()),
58 handler_(handler.Pass()), 59 handler_(handler.Pass()),
59 delegate_(delegate), 60 delegate_(delegate),
61 upload_size_(0),
60 last_upload_position_(0), 62 last_upload_position_(0),
61 waiting_for_upload_progress_ack_(false), 63 waiting_for_upload_progress_ack_(false),
62 is_transferring_(false), 64 is_transferring_(false),
63 weak_ptr_factory_(this) { 65 weak_ptr_factory_(this) {
64 request_->set_delegate(this); 66 request_->set_delegate(this);
65 handler_->SetController(this); 67 handler_->SetController(this);
66 } 68 }
67 69
68 ResourceLoader::~ResourceLoader() { 70 ResourceLoader::~ResourceLoader() {
69 if (login_delegate_) 71 if (login_delegate_)
(...skipping 30 matching lines...) Expand all
100 void ResourceLoader::CancelRequest(bool from_renderer) { 102 void ResourceLoader::CancelRequest(bool from_renderer) {
101 CancelRequestInternal(net::ERR_ABORTED, from_renderer); 103 CancelRequestInternal(net::ERR_ABORTED, from_renderer);
102 } 104 }
103 105
104 void ResourceLoader::ReportUploadProgress() { 106 void ResourceLoader::ReportUploadProgress() {
105 ResourceRequestInfoImpl* info = GetRequestInfo(); 107 ResourceRequestInfoImpl* info = GetRequestInfo();
106 108
107 if (waiting_for_upload_progress_ack_) 109 if (waiting_for_upload_progress_ack_)
108 return; // Send one progress event at a time. 110 return; // Send one progress event at a time.
109 111
110 uint64 size = info->GetUploadSize(); 112 if (!upload_size_)
111 if (!size)
112 return; // Nothing to upload. 113 return; // Nothing to upload.
113 114
114 uint64 position = request_->GetUploadProgress(); 115 uint64 position = request_->GetUploadProgress();
115 if (position == last_upload_position_) 116 if (position == last_upload_position_)
116 return; // No progress made since last time. 117 return; // No progress made since last time.
117 118
118 const uint64 kHalfPercentIncrements = 200; 119 const uint64 kHalfPercentIncrements = 200;
119 const TimeDelta kOneSecond = TimeDelta::FromMilliseconds(1000); 120 const TimeDelta kOneSecond = TimeDelta::FromMilliseconds(1000);
120 121
121 uint64 amt_since_last = position - last_upload_position_; 122 uint64 amt_since_last = position - last_upload_position_;
122 TimeDelta time_since_last = TimeTicks::Now() - last_upload_ticks_; 123 TimeDelta time_since_last = TimeTicks::Now() - last_upload_ticks_;
123 124
124 bool is_finished = (size == position); 125 bool is_finished = (upload_size_ == position);
125 bool enough_new_progress = (amt_since_last > (size / kHalfPercentIncrements)); 126 bool enough_new_progress =
127 (amt_since_last > (upload_size_ / kHalfPercentIncrements));
126 bool too_much_time_passed = time_since_last > kOneSecond; 128 bool too_much_time_passed = time_since_last > kOneSecond;
127 129
128 if (is_finished || enough_new_progress || too_much_time_passed) { 130 if (is_finished || enough_new_progress || too_much_time_passed) {
129 if (request_->load_flags() & net::LOAD_ENABLE_UPLOAD_PROGRESS) { 131 if (request_->load_flags() & net::LOAD_ENABLE_UPLOAD_PROGRESS) {
130 handler_->OnUploadProgress(info->GetRequestID(), position, size); 132 handler_->OnUploadProgress(info->GetRequestID(), position, upload_size_);
131 waiting_for_upload_progress_ack_ = true; 133 waiting_for_upload_progress_ack_ = true;
132 } 134 }
133 last_upload_ticks_ = TimeTicks::Now(); 135 last_upload_ticks_ = TimeTicks::Now();
134 last_upload_position_ = position; 136 last_upload_position_ = position;
135 } 137 }
136 } 138 }
137 139
138 void ResourceLoader::MarkAsTransferring() { 140 void ResourceLoader::MarkAsTransferring() {
139 is_transferring_ = true; 141 is_transferring_ = true;
140 142
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } 174 }
173 175
174 void ResourceLoader::ClearSSLClientAuthHandler() { 176 void ResourceLoader::ClearSSLClientAuthHandler() {
175 ssl_client_auth_handler_ = NULL; 177 ssl_client_auth_handler_ = NULL;
176 } 178 }
177 179
178 void ResourceLoader::OnUploadProgressACK() { 180 void ResourceLoader::OnUploadProgressACK() {
179 waiting_for_upload_progress_ack_ = false; 181 waiting_for_upload_progress_ack_ = false;
180 } 182 }
181 183
184 void ResourceLoader::OnRequestBodyInitialized(net::URLRequest* request,
185 uint64 size) {
186 upload_size_ = size;
187 }
188
182 void ResourceLoader::OnReceivedRedirect(net::URLRequest* unused, 189 void ResourceLoader::OnReceivedRedirect(net::URLRequest* unused,
183 const GURL& new_url, 190 const GURL& new_url,
184 bool* defer) { 191 bool* defer) {
185 DCHECK_EQ(request_.get(), unused); 192 DCHECK_EQ(request_.get(), unused);
186 193
187 VLOG(1) << "OnReceivedRedirect: " << request_->url().spec(); 194 VLOG(1) << "OnReceivedRedirect: " << request_->url().spec();
188 DCHECK(request_->status().is_success()); 195 DCHECK(request_->status().is_success());
189 196
190 ResourceRequestInfoImpl* info = GetRequestInfo(); 197 ResourceRequestInfoImpl* info = GetRequestInfo();
191 198
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 // we resume. 569 // we resume.
563 deferred_stage_ = DEFERRED_FINISH; 570 deferred_stage_ = DEFERRED_FINISH;
564 } 571 }
565 } 572 }
566 573
567 void ResourceLoader::CallDidFinishLoading() { 574 void ResourceLoader::CallDidFinishLoading() {
568 delegate_->DidFinishLoading(this); 575 delegate_->DidFinishLoading(this);
569 } 576 }
570 577
571 } // namespace content 578 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698