tor-browser

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

commit 64a19d6e96aa456e7947aa3f96b4cd8b54f97235
parent 1b7b4ca39f9018a6dd3873a4a14cbdc3599d0bc6
Author: Gregory Pappas <gp3033@protonmail.com>
Date:   Sat, 10 Jan 2026 19:46:04 +0000

Bug 208427 - Retarget originalTarget to closest non-NAC when caller is not chrome r=smaug,webidl

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

Diffstat:
Mdom/events/Event.cpp | 13+++++++++++++
Mdom/events/Event.h | 1+
Mdom/webidl/Event.webidl | 1+
3 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/dom/events/Event.cpp b/dom/events/Event.cpp @@ -332,6 +332,19 @@ EventTarget* Event::GetOriginalTarget() const { return mEvent->GetOriginalDOMEventTarget(); } +EventTarget* Event::GetOriginalTarget(CallerType aCallerType) const { + if (aCallerType == CallerType::System || nsContentUtils::IsCallerUAWidget()) { + return GetOriginalTarget(); + } + + EventTarget* et = mEvent->GetOriginalDOMEventTarget(); + nsIContent* content = nsIContent::FromEventTargetOrNull(et); + if (!content) { + return et; + } + return content->FindFirstNonChromeOnlyAccessContent(); +} + EventTarget* Event::GetComposedTarget() const { EventTarget* et = GetOriginalTarget(); nsIContent* content = nsIContent::FromEventTargetOrNull(et); diff --git a/dom/events/Event.h b/dom/events/Event.h @@ -360,6 +360,7 @@ class Event : public nsISupports, public nsWrapperCache { double TimeStamp(); EventTarget* GetOriginalTarget() const; + EventTarget* GetOriginalTarget(CallerType aCallerType) const; EventTarget* GetExplicitOriginalTarget() const; EventTarget* GetComposedTarget() const; diff --git a/dom/webidl/Event.webidl b/dom/webidl/Event.webidl @@ -69,6 +69,7 @@ partial interface Event { const long META_MASK = 0x00000008; /** The original target of the event, before any retargetings. */ + [NeedsCallerType] readonly attribute EventTarget? originalTarget; /** * The explicit original target of the event. If the event was retargeted