tor-browser

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

commit cc21229a2117c18751ff675549555cad45fa36d9
parent b9ab86d50825ad1e98c2f6a24e8c89864cb1d36a
Author: serge-sans-paille <sguelton@mozilla.com>
Date:   Thu,  6 Nov 2025 15:25:15 +0000

Bug 1998401 - Have mozilla::widget::AppendFlagsInfo accept a span instead of an nsTArray r=emilio,win-reviewers,gstoll

Allowing for removal of a few MOZ_RUNINIT in the process, yay.

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

Diffstat:
Mwidget/windows/nsWindowDbg.cpp | 73+++++++++++++++++++++++++++++++++++++++++--------------------------------
Mwidget/windows/nsWindowDbg.h | 2+-
2 files changed, 42 insertions(+), 33 deletions(-)

diff --git a/widget/windows/nsWindowDbg.cpp b/widget/windows/nsWindowDbg.cpp @@ -263,7 +263,7 @@ void AppendEnumValueInfo( } bool AppendFlagsInfo(nsCString& str, uint64_t flags, - const nsTArray<EnumValueAndName>& flagsAndNames, + Span<const EnumValueAndName> flagsAndNames, const char* name) { if (name != nullptr) { str.AppendPrintf("%s=", name); @@ -483,24 +483,24 @@ void CreateStructParamInfo(nsCString& str, uint64_t value, const char* name, GetNameFromAtom(createStruct->lpszClass).getW(), createStruct->x, createStruct->y, createStruct->cx, createStruct->cy); str.AppendASCII(" "); - const static nsTArray<EnumValueAndName> windowStyles = { - // these combinations of other flags need to come first - VALANDNAME_ENTRY(WS_OVERLAPPEDWINDOW), VALANDNAME_ENTRY(WS_POPUPWINDOW), - VALANDNAME_ENTRY(WS_CAPTION), - // regular flags - VALANDNAME_ENTRY(WS_POPUP), VALANDNAME_ENTRY(WS_CHILD), - VALANDNAME_ENTRY(WS_MINIMIZE), VALANDNAME_ENTRY(WS_VISIBLE), - VALANDNAME_ENTRY(WS_DISABLED), VALANDNAME_ENTRY(WS_CLIPSIBLINGS), - VALANDNAME_ENTRY(WS_CLIPCHILDREN), VALANDNAME_ENTRY(WS_MAXIMIZE), - VALANDNAME_ENTRY(WS_BORDER), VALANDNAME_ENTRY(WS_DLGFRAME), - VALANDNAME_ENTRY(WS_VSCROLL), VALANDNAME_ENTRY(WS_HSCROLL), - VALANDNAME_ENTRY(WS_SYSMENU), VALANDNAME_ENTRY(WS_THICKFRAME), - VALANDNAME_ENTRY(WS_GROUP), VALANDNAME_ENTRY(WS_TABSTOP), - // zero value needs to come last - VALANDNAME_ENTRY(WS_OVERLAPPED)}; + const static std::array<EnumValueAndName, 20> windowStyles{ + {// these combinations of other flags need to come first + VALANDNAME_ENTRY(WS_OVERLAPPEDWINDOW), VALANDNAME_ENTRY(WS_POPUPWINDOW), + VALANDNAME_ENTRY(WS_CAPTION), + // regular flags + VALANDNAME_ENTRY(WS_POPUP), VALANDNAME_ENTRY(WS_CHILD), + VALANDNAME_ENTRY(WS_MINIMIZE), VALANDNAME_ENTRY(WS_VISIBLE), + VALANDNAME_ENTRY(WS_DISABLED), VALANDNAME_ENTRY(WS_CLIPSIBLINGS), + VALANDNAME_ENTRY(WS_CLIPCHILDREN), VALANDNAME_ENTRY(WS_MAXIMIZE), + VALANDNAME_ENTRY(WS_BORDER), VALANDNAME_ENTRY(WS_DLGFRAME), + VALANDNAME_ENTRY(WS_VSCROLL), VALANDNAME_ENTRY(WS_HSCROLL), + VALANDNAME_ENTRY(WS_SYSMENU), VALANDNAME_ENTRY(WS_THICKFRAME), + VALANDNAME_ENTRY(WS_GROUP), VALANDNAME_ENTRY(WS_TABSTOP), + // zero value needs to come last + VALANDNAME_ENTRY(WS_OVERLAPPED)}}; AppendFlagsInfo(str, createStruct->style, windowStyles, "style"); str.AppendASCII(" "); - const nsTArray<EnumValueAndName> extendedWindowStyles = { + const std::array<EnumValueAndName, 27> extendedWindowStyles{{ // these combinations of other flags need to come first VALANDNAME_ENTRY(WS_EX_OVERLAPPEDWINDOW), VALANDNAME_ENTRY(WS_EX_PALETTEWINDOW), @@ -530,7 +530,7 @@ void CreateStructParamInfo(nsCString& str, uint64_t value, const char* name, VALANDNAME_ENTRY(WS_EX_NOACTIVATE), VALANDNAME_ENTRY(WS_EX_COMPOSITED), VALANDNAME_ENTRY(WS_EX_NOREDIRECTIONBITMAP), - }; + }}; AppendFlagsInfo(str, createStruct->dwExStyle, extendedWindowStyles, "dwExStyle"); } @@ -751,11 +751,15 @@ void VirtualKeyParamInfo(nsCString& result, uint64_t param, const char* name, void VirtualModifierKeysParamInfo(nsCString& result, uint64_t param, const char* name, bool /* isPreCall */) { - const static nsTArray<EnumValueAndName> virtualKeys{ - VALANDNAME_ENTRY(MK_CONTROL), VALANDNAME_ENTRY(MK_LBUTTON), - VALANDNAME_ENTRY(MK_MBUTTON), VALANDNAME_ENTRY(MK_RBUTTON), - VALANDNAME_ENTRY(MK_SHIFT), VALANDNAME_ENTRY(MK_XBUTTON1), - VALANDNAME_ENTRY(MK_XBUTTON2), {0, "(none)"}}; + const static std::array<EnumValueAndName, 8> virtualKeys{ + {VALANDNAME_ENTRY(MK_CONTROL), + VALANDNAME_ENTRY(MK_LBUTTON), + VALANDNAME_ENTRY(MK_MBUTTON), + VALANDNAME_ENTRY(MK_RBUTTON), + VALANDNAME_ENTRY(MK_SHIFT), + VALANDNAME_ENTRY(MK_XBUTTON1), + VALANDNAME_ENTRY(MK_XBUTTON2), + {0, "(none)"}}}; AppendFlagsInfo(result, param, virtualKeys, name); } @@ -1054,17 +1058,22 @@ nsAutoCString WmSizeParamInfo(uint64_t wParam, uint64_t lParam, return result; } -MOZ_RUNINIT const nsTArray<EnumValueAndName> windowPositionFlags = { - VALANDNAME_ENTRY(SWP_DRAWFRAME), VALANDNAME_ENTRY(SWP_HIDEWINDOW), - VALANDNAME_ENTRY(SWP_NOACTIVATE), VALANDNAME_ENTRY(SWP_NOCOPYBITS), - VALANDNAME_ENTRY(SWP_NOMOVE), VALANDNAME_ENTRY(SWP_NOOWNERZORDER), - VALANDNAME_ENTRY(SWP_NOREDRAW), VALANDNAME_ENTRY(SWP_NOSENDCHANGING), - VALANDNAME_ENTRY(SWP_NOSIZE), VALANDNAME_ENTRY(SWP_NOZORDER), +constexpr std::array<EnumValueAndName, 11> windowPositionFlags{{ + VALANDNAME_ENTRY(SWP_DRAWFRAME), + VALANDNAME_ENTRY(SWP_HIDEWINDOW), + VALANDNAME_ENTRY(SWP_NOACTIVATE), + VALANDNAME_ENTRY(SWP_NOCOPYBITS), + VALANDNAME_ENTRY(SWP_NOMOVE), + VALANDNAME_ENTRY(SWP_NOOWNERZORDER), + VALANDNAME_ENTRY(SWP_NOREDRAW), + VALANDNAME_ENTRY(SWP_NOSENDCHANGING), + VALANDNAME_ENTRY(SWP_NOSIZE), + VALANDNAME_ENTRY(SWP_NOZORDER), VALANDNAME_ENTRY(SWP_SHOWWINDOW), -}; +}}; static std::unordered_map<uint64_t, const char*> const& HitTestResults() { - static const std::unordered_map<uint64_t, const char*> data{ + static const std::unordered_map<uint64_t, const char*> data{{ VALANDNAME_ENTRY(HTBORDER), VALANDNAME_ENTRY(HTBOTTOM), VALANDNAME_ENTRY(HTBOTTOMLEFT), VALANDNAME_ENTRY(HTBOTTOMRIGHT), VALANDNAME_ENTRY(HTCAPTION), VALANDNAME_ENTRY(HTCLIENT), @@ -1078,7 +1087,7 @@ static std::unordered_map<uint64_t, const char*> const& HitTestResults() { VALANDNAME_ENTRY(HTTOP), VALANDNAME_ENTRY(HTTOPLEFT), VALANDNAME_ENTRY(HTTOPRIGHT), VALANDNAME_ENTRY(HTTRANSPARENT), VALANDNAME_ENTRY(HTVSCROLL), VALANDNAME_ENTRY(HTZOOM), - }; + }}; return data; } diff --git a/widget/windows/nsWindowDbg.h b/widget/windows/nsWindowDbg.h @@ -107,7 +107,7 @@ struct EnumValueAndName { // 0, and it must come last in the flagsAndNames array. // Returns whether any info was appended to str. bool AppendFlagsInfo(nsCString& str, uint64_t flags, - const nsTArray<EnumValueAndName>& flagsAndNames, + Span<const EnumValueAndName> flagsAndNames, const char* name); nsAutoCString WmSizeParamInfo(uint64_t wParam, uint64_t lParam, bool isPreCall);