OLD | NEW |
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/buffered_resource_handler.h" | 5 #include "content/browser/renderer_host/buffered_resource_handler.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 case STATE_STREAMING: | 204 case STATE_STREAMING: |
205 controller()->Resume(); | 205 controller()->Resume(); |
206 break; | 206 break; |
207 } | 207 } |
208 } | 208 } |
209 | 209 |
210 void BufferedResourceHandler::Cancel() { | 210 void BufferedResourceHandler::Cancel() { |
211 controller()->Cancel(); | 211 controller()->Cancel(); |
212 } | 212 } |
213 | 213 |
| 214 void BufferedResourceHandler::CancelAndIgnore() { |
| 215 controller()->CancelAndIgnore(); |
| 216 } |
| 217 |
214 bool BufferedResourceHandler::ProcessResponse(bool* defer) { | 218 bool BufferedResourceHandler::ProcessResponse(bool* defer) { |
215 DCHECK_EQ(STATE_PROCESSING, state_); | 219 DCHECK_EQ(STATE_PROCESSING, state_); |
216 | 220 |
217 // TODO(darin): Stop special-casing 304 responses. | 221 // TODO(darin): Stop special-casing 304 responses. |
218 if (!(response_->head.headers && | 222 if (!(response_->head.headers && |
219 response_->head.headers->response_code() == 304)) { | 223 response_->head.headers->response_code() == 304)) { |
220 if (!SelectNextHandler(defer)) | 224 if (!SelectNextHandler(defer)) |
221 return false; | 225 return false; |
222 if (*defer) | 226 if (*defer) |
223 return true; | 227 return true; |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 } | 348 } |
345 | 349 |
346 int request_id = ResourceRequestInfo::ForRequest(request_)->GetRequestID(); | 350 int request_id = ResourceRequestInfo::ForRequest(request_)->GetRequestID(); |
347 | 351 |
348 // Inform the original ResourceHandler that this will be handled entirely by | 352 // Inform the original ResourceHandler that this will be handled entirely by |
349 // the new ResourceHandler. | 353 // the new ResourceHandler. |
350 // TODO(darin): We should probably check the return values of these. | 354 // TODO(darin): We should probably check the return values of these. |
351 bool defer_ignored = false; | 355 bool defer_ignored = false; |
352 next_handler_->OnResponseStarted(request_id, response_, &defer_ignored); | 356 next_handler_->OnResponseStarted(request_id, response_, &defer_ignored); |
353 DCHECK(!defer_ignored); | 357 DCHECK(!defer_ignored); |
354 net::URLRequestStatus status(net::URLRequestStatus::HANDLED_EXTERNALLY, 0); | 358 net::URLRequestStatus status(net::URLRequestStatus::CANCELED, |
| 359 net::ERR_ABORTED); |
355 next_handler_->OnResponseCompleted(request_id, status, std::string()); | 360 next_handler_->OnResponseCompleted(request_id, status, std::string()); |
356 | 361 |
357 // This is handled entirely within the new ResourceHandler, so just reset the | 362 // This is handled entirely within the new ResourceHandler, so just reset the |
358 // original ResourceHandler. | 363 // original ResourceHandler. |
359 next_handler_ = new_handler.Pass(); | 364 next_handler_ = new_handler.Pass(); |
360 next_handler_->SetController(this); | 365 next_handler_->SetController(this); |
361 | 366 |
362 return CopyReadBufferToNextHandler(request_id); | 367 return CopyReadBufferToNextHandler(request_id); |
363 } | 368 } |
364 | 369 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 const std::vector<webkit::WebPluginInfo>& plugins) { | 443 const std::vector<webkit::WebPluginInfo>& plugins) { |
439 bool defer = false; | 444 bool defer = false; |
440 if (!ProcessResponse(&defer)) { | 445 if (!ProcessResponse(&defer)) { |
441 controller()->Cancel(); | 446 controller()->Cancel(); |
442 } else if (!defer) { | 447 } else if (!defer) { |
443 controller()->Resume(); | 448 controller()->Resume(); |
444 } | 449 } |
445 } | 450 } |
446 | 451 |
447 } // namespace content | 452 } // namespace content |
OLD | NEW |