Index: content/child/web_url_loader_impl.cc |
diff --git a/content/child/web_url_loader_impl.cc b/content/child/web_url_loader_impl.cc |
index 5fe04707bed2d64298d13c550dd4029bed75870e..de4cfb0f1634b07def61137e6ba4ff0eae1ebc37 100644 |
--- a/content/child/web_url_loader_impl.cc |
+++ b/content/child/web_url_loader_impl.cc |
@@ -530,6 +530,12 @@ void WebURLLoaderImpl::Context::OnReceivedResponse( |
WebURLResponse response; |
response.initialize(); |
+ // Updates the request url if the response was fetched by a ServiceWorker, |
+ // and it was not generated inside the ServiceWorker. |
+ if (info.was_fetched_via_service_worker && |
+ !info.original_url_via_service_worker.is_empty()) { |
+ request_.setURL(info.original_url_via_service_worker); |
+ } |
PopulateURLResponse(request_.url(), info, &response); |
bool show_raw_listing = (GURL(request_.url()).query() == "raw"); |
@@ -752,6 +758,7 @@ void WebURLLoaderImpl::PopulateURLResponse(const GURL& url, |
response->setConnectionID(info.load_timing.socket_log_id); |
response->setConnectionReused(info.load_timing.socket_reused); |
response->setDownloadFilePath(info.download_file_path.AsUTF16Unsafe()); |
+ response->setWasFetchedViaServiceWorker(info.was_fetched_via_service_worker); |
WebURLResponseExtraDataImpl* extra_data = |
new WebURLResponseExtraDataImpl(info.npn_negotiated_protocol); |
response->setExtraData(extra_data); |