summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-04-17 16:24:21 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2021-10-04 10:21:12 +0200
commit040ca9ac423dbaead66b14b414a66b0ee143912f (patch)
tree90ee33cb8fec79c177f7254425ee8776b8e99014
parenta58f25b9dc95659fdf10626f22738bc57c889c3e (diff)
downloadqtwebengine-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.cc4
-rw-r--r--chromium/content/common/navigation_client.mojom2
-rw-r--r--chromium/content/renderer/render_frame_impl.cc4
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 =