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-03-16 15:21:06 +0100
commit561894881e7c83e64122f82860c5d3cdab1a686c (patch)
tree449503c4c0db72ac515418022f8c90d0d61ee9ec
parent7414bf2e42547e8559b07ebd3ae13160fe343252 (diff)
downloadqtwebengine-chromium-561894881e7c83e64122f82860c5d3cdab1a686c.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.cc6
-rw-r--r--chromium/content/common/frame_messages.h2
-rw-r--r--chromium/content/renderer/render_frame_impl.cc4
3 files changed, 12 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 9f8131ce70b..bf39f5fc309 100644
--- a/chromium/content/browser/renderer_host/navigation_controller_impl.cc
+++ b/chromium/content/browser/renderer_host/navigation_controller_impl.cc
@@ -1513,6 +1513,8 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
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(params.referrer);
new_entry->SetTransitionType(params.transition);
new_entry->set_site_instance(
@@ -1709,6 +1711,8 @@ void NavigationControllerImpl::RendererDidNavigateToExistingPage(
entry->SetReferrer(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(params.original_request_url);
@@ -1776,6 +1780,8 @@ void NavigationControllerImpl::RendererDidNavigateToSamePage(
: PAGE_TYPE_NORMAL);
if (existing_entry->update_virtual_url_with_url())
UpdateVirtualURLToURL(existing_entry, params.url);
+ else if (!params.virtual_url.is_empty())
+ existing_entry->SetVirtualURL(params.virtual_url);
existing_entry->SetURL(params.url);
// If a user presses enter in the omnibox and the server redirects, the URL
diff --git a/chromium/content/common/frame_messages.h b/chromium/content/common/frame_messages.h
index 34e40d5fd8e..89371b39515 100644
--- a/chromium/content/common/frame_messages.h
+++ b/chromium/content/common/frame_messages.h
@@ -241,6 +241,8 @@ IPC_STRUCT_BEGIN(FrameHostMsg_DidCommitProvisionalLoad_Params)
// set to original URL of the site the MHTML represents.
IPC_STRUCT_MEMBER(GURL, base_url)
+ IPC_STRUCT_MEMBER(GURL, virtual_url)
+
// URL of the referrer of this load. WebKit generates this based on the
// source of the event that caused the load.
IPC_STRUCT_MEMBER(content::Referrer, referrer)
diff --git a/chromium/content/renderer/render_frame_impl.cc b/chromium/content/renderer/render_frame_impl.cc
index 9450ff8a3f2..2e30471150c 100644
--- a/chromium/content/renderer/render_frame_impl.cc
+++ b/chromium/content/renderer/render_frame_impl.cc
@@ -5066,6 +5066,10 @@ RenderFrameImpl::MakeDidCommitProvisionalLoadParams(
if (GURL(frame_document.BaseURL()) != params->url)
params->base_url = frame_document.BaseURL();
+ if (DocumentState::FromDocumentLoader(document_loader)->was_load_data_with_base_url_request() &&
+ GURL(frame_document.Url()) != params->url)
+ params->virtual_url = frame_document.Url();
+
GetRedirectChain(document_loader, &params->redirects);
params->should_update_history =
!document_loader->HasUnreachableURL() && response.HttpStatusCode() != 404;