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 847f0fd5f9d82e6dd5d54a4e4db3d75360c35fde..f2feb2de7a2b649a8358598d66a96c5e9683c913 100644 |
--- a/content/browser/loader/resource_dispatcher_host_impl.cc |
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc |
@@ -1638,12 +1638,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 |