tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 12c885354d8d68651d3641d735f25088ca2b5ba9
parent cc62581d15f70fcc46b53feb5a89e77580e76d83
Author: Andreas Farre <farre@mozilla.com>
Date:   Mon, 10 Nov 2025 14:51:43 +0000

Bug 1998735 - Pass user navigation involvment from form submission. r=dom-core,smaug

Differential Revision: https://phabricator.services.mozilla.com/D271621

Diffstat:
Mdocshell/base/nsDocShell.cpp | 2+-
Mdom/html/HTMLFormElement.cpp | 10++++++++++
Dtesting/web-platform/meta/navigation-api/navigate-event/navigate-form-userInitiated.html.ini | 5-----
3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp @@ -13440,6 +13440,7 @@ class OnLinkClickEvent : public Runnable { // concerned. (Bug 1930445) AutoJSAPI jsapi; if (jsapi.Init(mContent->OwnerDoc()->GetScopeObject())) { + mLoadState->SetSourceElement(mContent->AsElement()); mHandler->OnLinkClickSync(mContent, mLoadState, mNoOpenerImplied, mTriggeringPrincipal); } @@ -13790,7 +13791,6 @@ nsresult nsDocShell::OnLinkClickSync(nsIContent* aContent, aLoadState->SetInternalLoadFlags(flags); aLoadState->SetLoadType(loadType); aLoadState->SetSourceBrowsingContext(mBrowsingContext); - aLoadState->SetSourceElement(aContent->AsElement()); nsresult rv = InternalLoad(aLoadState); diff --git a/dom/html/HTMLFormElement.cpp b/dom/html/HTMLFormElement.cpp @@ -884,6 +884,16 @@ nsresult HTMLFormElement::SubmitSubmission( doc->ConsumeTextDirectiveUserActivation() || hasValidUserGestureActivation); loadState->SetFormDataEntryList(aFormSubmission->GetFormData()); + if (aFormSubmission->IsInitiatedFromUserInput()) { + loadState->SetUserNavigationInvolvement( + UserNavigationInvolvement::Activation); + } + if (FormData* formData = aFormSubmission->GetFormData(); + formData && formData->GetSubmitterElement()) { + loadState->SetSourceElement(formData->GetSubmitterElement()); + } else { + loadState->SetSourceElement(this); + } nsCOMPtr<nsIPrincipal> nodePrincipal = NodePrincipal(); rv = container->OnLinkClickSync(this, loadState, false, nodePrincipal); diff --git a/testing/web-platform/meta/navigation-api/navigate-event/navigate-form-userInitiated.html.ini b/testing/web-platform/meta/navigation-api/navigate-event/navigate-form-userInitiated.html.ini @@ -1,5 +0,0 @@ -[navigate-form-userInitiated.html] - expected: - if (processor == "x86") and debug: [OK, ERROR] - [<form> submission fires navigate event] - expected: FAIL