Index: content/browser/loader/resource_dispatcher_host_impl.cc |
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc |
index 1fbd0004096973802910cea4abca6b3ca02c09bd..7a6e6f5960de6a9fbe2c9f732407543f08c8cc77 100644 |
--- a/content/browser/loader/resource_dispatcher_host_impl.cc |
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc |
@@ -1586,12 +1586,19 @@ ResourceDispatcherHostImpl::CreateResourceHandler( |
} |
} |
+ bool start_detached = request_data.download_to_network_cache_only; |
+ |
// Prefetches and <a ping> requests outlive their child process. |
- if (!sync_result && IsDetachableResourceType(request_data.resource_type)) { |
- handler.reset(new DetachableResourceHandler( |
- request, |
- base::TimeDelta::FromMilliseconds(kDefaultDetachableCancelDelayMs), |
- std::move(handler))); |
+ if (!sync_result && (start_detached || |
+ IsDetachableResourceType(request_data.resource_type))) { |
+ std::unique_ptr<DetachableResourceHandler> detachable_handler = |
+ base::MakeUnique<DetachableResourceHandler>( |
+ request, |
+ base::TimeDelta::FromMilliseconds(kDefaultDetachableCancelDelayMs), |
+ std::move(handler)); |
+ if (start_detached) |
+ detachable_handler->Detach(); |
+ handler = std::move(detachable_handler); |
} |
// PlzNavigate: If using --enable-browser-side-navigation, the |