From 5b561d6fce6ab7e732c78eaac4388ca5367f496f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Goco=C5=82?= <93707234+jakub-gocol-red@users.noreply.github.com> Date: Fri, 4 Aug 2023 08:42:41 +0200 Subject: [PATCH] Add env var to allow keeping the existent navigation on a fragment load --- Source/WebCore/loader/FrameLoader.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp index 16b8749be53b3..58d2728898412 100644 --- a/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp @@ -3241,8 +3241,16 @@ void FrameLoader::continueFragmentScrollAfterNavigationPolicy(const ResourceRequ // frame to be deallocated. Ref protectedFrame(m_frame); + static bool keepNavigationOnFragmentLoad = false; + static bool keepNavigationOnFragmentLoadInitialized = false; + + if (!keepNavigationOnFragmentLoadInitialized) { + keepNavigationOnFragmentLoad = !!getenv("WPE_KEEP_NAVIGATION_ON_FRAGMENT_LOAD"); + keepNavigationOnFragmentLoadInitialized = true; + } + // If we have a provisional request for a different document, a fragment scroll should cancel it. - if (m_provisionalDocumentLoader && !equalIgnoringFragmentIdentifier(m_provisionalDocumentLoader->request().url(), request.url())) { + if (m_provisionalDocumentLoader && !equalIgnoringFragmentIdentifier(m_provisionalDocumentLoader->request().url(), request.url()) && !keepNavigationOnFragmentLoad) { m_provisionalDocumentLoader->stopLoading(); FRAMELOADER_RELEASE_LOG(ResourceLoading, "continueFragmentScrollAfterNavigationPolicy: Clearing provisional document loader (m_provisionalDocumentLoader=%p)", m_provisionalDocumentLoader.get()); setProvisionalDocumentLoader(nullptr);