| Index: content/browser/loader/navigation_resource_handler.cc
|
| diff --git a/content/browser/loader/navigation_resource_handler.cc b/content/browser/loader/navigation_resource_handler.cc
|
| index c9e212fdf82d8f97041514da70a62e2c7f4478ef..450cc8e61f49c8410c7e22dbef53d06edcea3df6 100644
|
| --- a/content/browser/loader/navigation_resource_handler.cc
|
| +++ b/content/browser/loader/navigation_resource_handler.cc
|
| @@ -94,16 +94,6 @@ bool NavigationResourceHandler::OnResponseStarted(ResourceResponse* response,
|
|
|
| ResourceRequestInfoImpl* info = GetRequestInfo();
|
|
|
| - // If the MimeTypeResourceHandler intercepted this request and converted it
|
| - // into a download, it will still call OnResponseStarted and immediately
|
| - // cancel. Ignore the call; OnReadCompleted will happen shortly.
|
| - //
|
| - // TODO(davidben): Move the dispatch out of MimeTypeResourceHandler. Perhaps
|
| - // all the way to the UI thread. Downloads, user certificates, etc., should be
|
| - // dispatched at the navigation layer.
|
| - if (info->IsDownload())
|
| - return true;
|
| -
|
| StreamContext* stream_context =
|
| GetStreamContextForResourceContext(info->GetContext());
|
| writer_.InitializeStream(stream_context->registry(),
|
| @@ -132,14 +122,19 @@ bool NavigationResourceHandler::OnResponseStarted(ResourceResponse* response,
|
| ssl_status, std::move(cloned_data),
|
| info->GetGlobalRequestID(), info->IsDownload(),
|
| info->is_stream());
|
| - // Don't defer stream based requests. This includes requests initiated via
|
| - // mime type sniffing, etc.
|
| +
|
| + // Don't defer stream based or download requests. This includes requests
|
| + // initiated via mime type sniffing, etc.
|
| // TODO(ananta)
|
| // Make sure that the requests go through the throttle checks. Currently this
|
| // does not work as the InterceptingResourceHandler is above us and hence it
|
| // does not expect the old handler to defer the request.
|
| - if (!info->is_stream())
|
| + if (!info->is_stream() && !info->IsDownload())
|
| *defer = true;
|
| +
|
| + if (info->IsDownload())
|
| + DetachFromCore();
|
| +
|
| return true;
|
| }
|
|
|
|
|