Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 2f79ac027a3144ba9006282e9f8b529ea2d58d43..a957f2ceca47ed02b4d21e8ce25dc6cb1360943f 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -3223,9 +3223,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), |