| 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 |