Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index df70a011bf97a45271eb3f3906a5dd709b1fc197..33d921124ff15ae47095906ad175eb2974ad062f 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -3229,9 +3229,18 @@ void RenderFrameImpl::loadURLExternally(const blink::WebURLRequest& request, |
bool should_replace_current_entry) { |
Referrer referrer(RenderViewImpl::GetReferrerFromRequest(frame_, request)); |
if (policy == blink::WebNavigationPolicyDownload) { |
- Send(new FrameHostMsg_DownloadUrl(render_view_->GetRoutingID(), |
- GetRoutingID(), request.url(), referrer, |
- suggested_name)); |
+ ServiceWorkerNetworkProvider* provider = |
+ ServiceWorkerNetworkProvider::FromDocumentState( |
+ DocumentState::FromDataSource(frame_->dataSource())); |
+ DCHECK(provider); |
+ FrameHostMsg_DownloadUrl_Params params; |
+ params.render_view_id = render_view_->GetRoutingID(); |
+ params.render_frame_id = GetRoutingID(); |
+ params.service_worker_provider_id = provider->provider_id(); |
+ params.url = request.url(); |
+ params.referrer = referrer; |
+ params.suggested_name = suggested_name; |
+ Send(new FrameHostMsg_DownloadUrl(params)); |
} else { |
OpenURL(request.url(), IsHttpPost(request), |
GetRequestBodyForWebURLRequest(request), |