diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-04-17 16:24:21 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-10-04 10:21:12 +0200 |
commit | 040ca9ac423dbaead66b14b414a66b0ee143912f (patch) | |
tree | 90ee33cb8fec79c177f7254425ee8776b8e99014 | |
parent | a58f25b9dc95659fdf10626f22738bc57c889c3e (diff) | |
download | qtwebengine-chromium-040ca9ac423dbaead66b14b414a66b0ee143912f.tar.gz |
Pass virtual url of data url request back to the UI
Otherwise we lose information about interpage navigation.
This fixes a regression after Chromium switched to browser-side
navigation
Task-number: QTBUG-67701
Change-Id: I10659699f1acc033948e297e3f7319ee44d6423f
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
-rw-r--r-- | chromium/content/browser/renderer_host/navigation_controller_impl.cc | 4 | ||||
-rw-r--r-- | chromium/content/common/navigation_client.mojom | 2 | ||||
-rw-r--r-- | chromium/content/renderer/render_frame_impl.cc | 4 |
3 files changed, 10 insertions, 0 deletions
diff --git a/chromium/content/browser/renderer_host/navigation_controller_impl.cc b/chromium/content/browser/renderer_host/navigation_controller_impl.cc index 2627b4846c0..908c0ebe17e 100644 --- a/chromium/content/browser/renderer_host/navigation_controller_impl.cc +++ b/chromium/content/browser/renderer_host/navigation_controller_impl.cc @@ -1684,6 +1684,8 @@ void NavigationControllerImpl::RendererDidNavigateToNewEntry( new_entry->SetURL(params.url); if (update_virtual_url) UpdateVirtualURLToURL(new_entry.get(), params.url); + else if (!params.virtual_url.is_empty()) + new_entry->SetVirtualURL(params.virtual_url); new_entry->SetReferrer(Referrer(*params.referrer)); new_entry->SetTransitionType(params.transition); new_entry->set_site_instance( @@ -1921,6 +1923,8 @@ void NavigationControllerImpl::RendererDidNavigateToExistingEntry( entry->SetReferrer(Referrer(*params.referrer)); if (entry->update_virtual_url_with_url()) UpdateVirtualURLToURL(entry, params.url); + else if (!params.virtual_url.is_empty()) + entry->SetVirtualURL(params.virtual_url); entry->SetOriginalRequestURL(request->GetOriginalRequestURL()); diff --git a/chromium/content/common/navigation_client.mojom b/chromium/content/common/navigation_client.mojom index 7085eb8e390..5560156827d 100644 --- a/chromium/content/common/navigation_client.mojom +++ b/chromium/content/common/navigation_client.mojom @@ -56,6 +56,8 @@ struct DidCommitProvisionalLoadParams { // URL of the page being loaded. url.mojom.Url url; + url.mojom.Url virtual_url; + // URL of the referrer of this load. WebKit generates this based on the // source of the event that caused the load. blink.mojom.Referrer referrer; diff --git a/chromium/content/renderer/render_frame_impl.cc b/chromium/content/renderer/render_frame_impl.cc index 6c6bfdc1838..09cf0bc111e 100644 --- a/chromium/content/renderer/render_frame_impl.cc +++ b/chromium/content/renderer/render_frame_impl.cc @@ -4459,6 +4459,10 @@ RenderFrameImpl::MakeDidCommitProvisionalLoadParams( // Set the URL to be displayed in the browser UI to the user. params->url = GetLoadingUrl(); + if (DocumentState::FromDocumentLoader(document_loader)->was_load_data_with_base_url_request() && + GURL(frame_document.Url()) != params->url) + params->virtual_url = frame_document.Url(); + // TODO(https://crbug.com/1158101): Reconsider how we calculate // should_update_history. params->should_update_history = |