| 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 2a5ef9cd120c0957467e0054c2a3b5f6900ca94e..ba23eaf326ed854b4548ba5bc90533b7be40fc14 100644
|
| --- a/content/browser/loader/buffered_resource_handler.cc
|
| +++ b/content/browser/loader/buffered_resource_handler.cc
|
| @@ -307,6 +307,7 @@ bool BufferedResourceHandler::SelectNextHandler(bool* defer) {
|
|
|
| if (net::IsSupportedCertificateMimeType(mime_type)) {
|
| // Install certificate file.
|
| + info->set_is_download(true);
|
| scoped_ptr<ResourceHandler> handler(
|
| new CertificateResourceHandler(request()));
|
| return UseAlternateNextHandler(handler.Pass());
|
| @@ -372,9 +373,11 @@ bool BufferedResourceHandler::UseAlternateNextHandler(
|
| // Inform the original ResourceHandler that this will be handled entirely by
|
| // the new ResourceHandler.
|
| // TODO(darin): We should probably check the return values of these.
|
| - // TODO(davidben): These DCHECKs do actually trigger.
|
| bool defer_ignored = false;
|
| next_handler_->OnResponseStarted(request_id, response_.get(), &defer_ignored);
|
| + // Although deferring OnResponseStarted is legal, the only downstream handler
|
| + // which does so is CrossSiteResourceHandler. Cross-site transitions should
|
| + // not trigger when switching handlers.
|
| DCHECK(!defer_ignored);
|
| net::URLRequestStatus status(net::URLRequestStatus::CANCELED,
|
| net::ERR_ABORTED);
|
|
|