tor-browser

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

commit 567eaa35d8bc0f0f08a0db19177a613a47cc8ec3
parent f3e6a0d058e9199bf05702704644044f5b09a0b7
Author: Emilio Cobos Álvarez <emilio@crisal.io>
Date:   Mon, 13 Oct 2025 07:54:06 +0000

Bug 1993855 - Don't go through the view tree in nsContentUtils::WidgetFor*. r=layout-reviewers,tnikkel

No behavior change, but makes bug 1933181 smaller.

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

Diffstat:
Mdom/base/nsContentUtils.cpp | 19++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)

diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp @@ -7816,16 +7816,10 @@ nsIWidget* nsContentUtils::WidgetForDocument(const Document* aDocument) { nsIWidget* nsContentUtils::WidgetForContent(const nsIContent* aContent) { nsIFrame* frame = aContent->GetPrimaryFrame(); - if (frame) { - frame = nsLayoutUtils::GetDisplayRootFrame(frame); - - nsView* view = frame->GetView(); - if (view) { - return view->GetWidget(); - } + if (!frame) { + return nullptr; } - - return nullptr; + return frame->GetNearestWidget(); } WindowRenderer* nsContentUtils::WindowRendererForContent( @@ -7840,11 +7834,9 @@ WindowRenderer* nsContentUtils::WindowRendererForContent( WindowRenderer* nsContentUtils::WindowRendererForDocument( const Document* aDoc) { - nsIWidget* widget = nsContentUtils::WidgetForDocument(aDoc); - if (widget) { + if (nsIWidget* widget = nsContentUtils::WidgetForDocument(aDoc)) { return widget->GetWindowRenderer(); } - return nullptr; } @@ -9430,7 +9422,8 @@ nsIWidget* nsContentUtils::GetWidget(PresShell* aPresShell, nsPoint* aOffset) { if (!frame) { return nullptr; } - return frame->GetView()->GetNearestWidget(aOffset); + return aOffset ? frame->GetNearestWidget(*aOffset) + : frame->GetNearestWidget(); } int16_t nsContentUtils::GetButtonsFlagForButton(int32_t aButton) {