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-03-16 15:21:06 +0100 |
commit | 561894881e7c83e64122f82860c5d3cdab1a686c (patch) | |
tree | 449503c4c0db72ac515418022f8c90d0d61ee9ec | |
parent | 7414bf2e42547e8559b07ebd3ae13160fe343252 (diff) | |
download | qtwebengine-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.cc | 6 | ||||
-rw-r--r-- | chromium/content/common/frame_messages.h | 2 | ||||
-rw-r--r-- | chromium/content/renderer/render_frame_impl.cc | 4 |
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, ¶ms->redirects); params->should_update_history = !document_loader->HasUnreachableURL() && response.HttpStatusCode() != 404; |