tor-browser

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

commit 55c3ab7cd6d297d118dbeb8173a1cdc78200eab1
parent 50f5ff07bf9cf64d5bffed021c1ad102781b756d
Author: Andreas Farre <farre@mozilla.com>
Date:   Mon, 10 Nov 2025 15:47:04 +0000

Bug 1999189 - Add document filename to navigateerror event. r=avandolder,smaug

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

Diffstat:
Mdom/events/NavigateEvent.h | 4++--
Mdom/navigation/Navigation.cpp | 18++++++++++++++++--
Dtesting/web-platform/meta/navigation-api/navigate-event/navigation-back-same-document-preventDefault.html.ini | 3---
Mtesting/web-platform/meta/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html.ini | 3++-
Mtesting/web-platform/meta/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html.ini | 2+-
5 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/dom/events/NavigateEvent.h b/dom/events/NavigateEvent.h @@ -116,6 +116,8 @@ class NavigateEvent final : public Event { void PerformSharedChecks(ErrorResult& aRv); + Document* GetAssociatedDocument() const; + private: MOZ_CAN_RUN_SCRIPT void PotentiallyResetFocus(); @@ -126,8 +128,6 @@ class NavigateEvent final : public Event { MOZ_CAN_RUN_SCRIPT void ProcessScrollBehavior(); - Document* GetAssociatedDocument() const; - explicit NavigateEvent(EventTarget* aOwner); ~NavigateEvent(); diff --git a/dom/navigation/Navigation.cpp b/dom/navigation/Navigation.cpp @@ -1139,13 +1139,27 @@ nsresult Navigation::FireEvent(const nsAString& aName) { static void ExtractErrorInformation(JSContext* aCx, JS::Handle<JS::Value> aError, - ErrorEventInit& aErrorEventInitDict) { + ErrorEventInit& aErrorEventInitDict, + NavigateEvent* aEvent) { nsContentUtils::ExtractErrorValues( aCx, aError, aErrorEventInitDict.mFilename, &aErrorEventInitDict.mLineno, &aErrorEventInitDict.mColno, aErrorEventInitDict.mMessage); aErrorEventInitDict.mError = aError; aErrorEventInitDict.mBubbles = false; aErrorEventInitDict.mCancelable = false; + + if (!aErrorEventInitDict.mFilename.IsEmpty()) { + return; + } + + RefPtr document = aEvent->GetAssociatedDocument(); + if (!document) { + return; + } + + if (auto* uri = document->GetDocumentURI()) { + uri->GetSpec(aErrorEventInitDict.mFilename); + } } nsresult Navigation::FireErrorEvent(const nsAString& aName, @@ -1832,7 +1846,7 @@ void Navigation::AbortNavigateEvent( // 3. Let errorInfo be the result of extracting error information from reason. RootedDictionary<ErrorEventInit> init(aCx); - ExtractErrorInformation(aCx, aReason, init); + ExtractErrorInformation(aCx, aReason, init, aEvent); // 4. Set navigation's ongoing navigate event to null. mOngoingNavigateEvent = nullptr; diff --git a/testing/web-platform/meta/navigation-api/navigate-event/navigation-back-same-document-preventDefault.html.ini b/testing/web-platform/meta/navigation-api/navigate-event/navigation-back-same-document-preventDefault.html.ini @@ -1,3 +0,0 @@ -[navigation-back-same-document-preventDefault.html] - [navigation.back() same-document preventDefault] - expected: FAIL diff --git a/testing/web-platform/meta/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html.ini b/testing/web-platform/meta/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html.ini @@ -1,3 +1,4 @@ [navigation-traverseTo-in-iframe-same-document-preventDefault.html] + expected: TIMEOUT [navigation.traverseTo() in an iframe with same-document preventDefault in its parent] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html.ini b/testing/web-platform/meta/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html.ini @@ -1,4 +1,4 @@ [traverseTo-navigates-multiple-iframes.html] expected: [TIMEOUT, OK] [entries() should be correct after a traversal that navigates multiple browsing contexts] - expected: [TIMEOUT, FAIL] + expected: FAIL