| Index: content/browser/loader/buffered_resource_handler.cc
|
| diff --git a/content/browser/loader/buffered_resource_handler.cc b/content/browser/loader/buffered_resource_handler.cc
|
| index d5cabe35d4b0105f2c7002353dfa14da96d124bc..48061396a7a18634d5cdab08140632a08a091c0c 100644
|
| --- a/content/browser/loader/buffered_resource_handler.cc
|
| +++ b/content/browser/loader/buffered_resource_handler.cc
|
| @@ -15,6 +15,7 @@
|
| #include "content/browser/loader/certificate_resource_handler.h"
|
| #include "content/browser/loader/resource_dispatcher_host_impl.h"
|
| #include "content/browser/loader/resource_request_info_impl.h"
|
| +#include "content/browser/loader/stream_resource_handler.h"
|
| #include "content/browser/plugin_service_impl.h"
|
| #include "content/public/browser/content_browser_client.h"
|
| #include "content/public/browser/download_item.h"
|
| @@ -321,10 +322,22 @@ bool BufferedResourceHandler::SelectNextHandler(bool* defer) {
|
| if (net::IsSupportedMimeType(mime_type))
|
| return true;
|
|
|
| - scoped_ptr<ResourceHandler> handler(
|
| + scoped_ptr<StreamResourceHandler> handler(
|
| host_->MaybeInterceptAsStream(request(), response_.get()));
|
| - if (handler)
|
| - return UseAlternateNextHandler(handler.Pass());
|
| + if (handler) {
|
| + if (handler->HasPayload()) {
|
| + handler->SetNextHandler(next_handler_.Pass());
|
| +
|
| + next_handler_ = handler.Pass();
|
| + next_handler_->SetController(this);
|
| +
|
| + int request_id =
|
| + ResourceRequestInfo::ForRequest(request())->GetRequestID();
|
| + return CopyReadBufferToNextHandler(request_id);
|
| + } else {
|
| + UseAlternateNextHandler(handler.PassAs<ResourceHandler>());
|
| + }
|
| + }
|
|
|
| #if defined(ENABLE_PLUGINS)
|
| bool stale;
|
|
|