mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1751281 - Enable Windows Event logging with separate logging module and message parameters r=cmartin
Differential Revision: https://phabricator.services.mozilla.com/D141728
This commit is contained in:
parent
c6f02ebaa8
commit
d4159632e0
@ -212,14 +212,12 @@ static void DumpNeuteredMessage(HWND hwnd, UINT uMsg) {
|
||||
nsAutoCString log("Received \"nonqueued\" ");
|
||||
// classify messages
|
||||
if (uMsg < WM_USER) {
|
||||
int idx = 0;
|
||||
while (mozilla::widget::gAllEvents[idx].mId != uMsg &&
|
||||
mozilla::widget::gAllEvents[idx].mStr != nullptr) {
|
||||
idx++;
|
||||
}
|
||||
if (mozilla::widget::gAllEvents[idx].mStr) {
|
||||
log.AppendPrintf("ui message \"%s\"",
|
||||
mozilla::widget::gAllEvents[idx].mStr);
|
||||
const auto eventMsgInfo = mozilla::widget::gAllEvents.find(uMsg);
|
||||
const char* msgText = eventMsgInfo != mozilla::widget::gAllEvents.end()
|
||||
? eventMsgInfo->second.mStr
|
||||
: nullptr;
|
||||
if (msgText) {
|
||||
log.AppendPrintf("ui message \"%s\"", msgText);
|
||||
} else {
|
||||
log.AppendPrintf("ui message (0x%X)", uMsg);
|
||||
}
|
||||
|
@ -73,8 +73,11 @@ namespace mozilla {
|
||||
namespace widget {
|
||||
|
||||
#define ENTRY(_msg) \
|
||||
{ #_msg, _msg }
|
||||
EventMsgInfo gAllEvents[] = {ENTRY(WM_NULL),
|
||||
{ \
|
||||
_msg, { #_msg, _msg } \
|
||||
}
|
||||
std::unordered_map<UINT, EventMsgInfo> gAllEvents = {
|
||||
ENTRY(WM_NULL),
|
||||
ENTRY(WM_CREATE),
|
||||
ENTRY(WM_DESTROY),
|
||||
ENTRY(WM_MOVE),
|
||||
@ -407,7 +410,7 @@ EventMsgInfo gAllEvents[] = {ENTRY(WM_NULL),
|
||||
ENTRY(WM_GESTURE),
|
||||
ENTRY(WM_GESTURENOTIFY),
|
||||
ENTRY(WM_GETTITLEBARINFOEX),
|
||||
{nullptr, 0x0}};
|
||||
{0x0, {nullptr, 0x0}}};
|
||||
#undef ENTRY
|
||||
|
||||
#ifdef MOZ_PLACES
|
||||
|
@ -96,7 +96,7 @@ typedef struct {
|
||||
const char* mStr;
|
||||
UINT mId;
|
||||
} EventMsgInfo;
|
||||
extern EventMsgInfo gAllEvents[];
|
||||
extern std::unordered_map<UINT, EventMsgInfo> gAllEvents;
|
||||
|
||||
// More complete QS definitions for MsgWaitForMultipleObjects() and
|
||||
// GetQueueStatus() that include newer win8 specific defines.
|
||||
|
@ -5014,15 +5014,24 @@ bool nsWindow::ExternalHandlerProcessMessage(UINT aMessage, WPARAM& aWParam,
|
||||
return false;
|
||||
}
|
||||
|
||||
// The main windows message processing method.
|
||||
// The main windows message processing method. Wraps ProcessMessageInternal so
|
||||
// we can log aRetValue.
|
||||
bool nsWindow::ProcessMessage(UINT msg, WPARAM& wParam, LPARAM& lParam,
|
||||
LRESULT* aRetValue) {
|
||||
#if defined(EVENT_DEBUG_OUTPUT)
|
||||
// First param shows all events, second param indicates whether
|
||||
// to show mouse move events. See nsWindowDbg for details.
|
||||
PrintEvent(msg, SHOW_REPEAT_EVENTS, SHOW_MOUSEMOVE_EVENTS);
|
||||
#endif
|
||||
bool result = ProcessMessageInternal(msg, wParam, lParam, aRetValue);
|
||||
|
||||
// SHOW_REPEAT_EVENTS indicates whether to show all (repeating) events,
|
||||
// SHOW_MOUSEMOVE_EVENTS indicates whether to show mouse move events.
|
||||
// See nsWindowDbg for details.
|
||||
PrintEvent(msg, wParam, lParam, *aRetValue, result, SHOW_REPEAT_EVENTS,
|
||||
SHOW_MOUSEMOVE_EVENTS);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// The main windows message processing method. Called by ProcessMessage.
|
||||
bool nsWindow::ProcessMessageInternal(UINT msg, WPARAM& wParam, LPARAM& lParam,
|
||||
LRESULT* aRetValue) {
|
||||
MSGResult msgResult(aRetValue);
|
||||
if (ExternalHandlerProcessMessage(msg, wParam, lParam, msgResult)) {
|
||||
return (msgResult.mConsumed || !mWnd);
|
||||
|
@ -554,6 +554,9 @@ class nsWindow final : public nsBaseWidget {
|
||||
void RelayMouseEvent(UINT aMsg, WPARAM wParam, LPARAM lParam);
|
||||
bool ProcessMessage(UINT msg, WPARAM& wParam, LPARAM& lParam,
|
||||
LRESULT* aRetValue);
|
||||
// We wrap this in ProcessMessage so we can log the return value
|
||||
bool ProcessMessageInternal(UINT msg, WPARAM& wParam, LPARAM& lParam,
|
||||
LRESULT* aRetValue);
|
||||
bool ExternalHandlerProcessMessage(UINT aMessage, WPARAM& aWParam,
|
||||
LPARAM& aLParam, MSGResult& aResult);
|
||||
LRESULT ProcessCharMessage(const MSG& aMsg, bool* aEventDispatched);
|
||||
|
@ -14,6 +14,7 @@
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::widget;
|
||||
extern mozilla::LazyLogModule gWindowsLog;
|
||||
static mozilla::LazyLogModule gWindowsEventLog("WindowsEvent");
|
||||
|
||||
#if defined(POPUP_ROLLUP_DEBUG_OUTPUT)
|
||||
MSGFEventMsgInfo gMSGFEvents[] = {
|
||||
@ -23,19 +24,24 @@ MSGFEventMsgInfo gMSGFEvents[] = {
|
||||
#endif
|
||||
|
||||
static long gEventCounter = 0;
|
||||
static long gLastEventMsg = 0;
|
||||
static UINT gLastEventMsg = 0;
|
||||
|
||||
void PrintEvent(UINT msg, bool aShowAllEvents, bool aShowMouseMoves) {
|
||||
int inx = 0;
|
||||
while (gAllEvents[inx].mId != msg && gAllEvents[inx].mStr != nullptr) {
|
||||
inx++;
|
||||
}
|
||||
if (aShowAllEvents || (!aShowAllEvents && gLastEventMsg != (long)msg)) {
|
||||
// Size of WPARAM, LPARAM, and LRESULT depends on 32 or 64 bit build,
|
||||
// we use 64 bit types here to ensure it works in either case.
|
||||
void PrintEvent(UINT msg, uint64_t wParam, uint64_t lParam, uint64_t retValue,
|
||||
bool result, bool aShowAllEvents, bool aShowMouseMoves) {
|
||||
const auto eventMsgInfo = gAllEvents.find(msg);
|
||||
const char* msgText =
|
||||
eventMsgInfo != gAllEvents.end() ? eventMsgInfo->second.mStr : nullptr;
|
||||
|
||||
if (aShowAllEvents || (gLastEventMsg != msg)) {
|
||||
if (aShowMouseMoves ||
|
||||
(!aShowMouseMoves && msg != 0x0020 && msg != 0x0200 && msg != 0x0084)) {
|
||||
MOZ_LOG(gWindowsLog, LogLevel::Info,
|
||||
("%6d - 0x%04X %s\n", gEventCounter++, msg,
|
||||
gAllEvents[inx].mStr ? gAllEvents[inx].mStr : "Unknown"));
|
||||
(msg != WM_SETCURSOR && msg != WM_MOUSEMOVE && msg != WM_NCHITTEST)) {
|
||||
MOZ_LOG(
|
||||
gWindowsEventLog, LogLevel::Info,
|
||||
("%6d - 0x%04X (0x%08llX 0x%08llX) %s: 0x%08llX (%s)\n",
|
||||
gEventCounter++, msg, wParam, lParam, msgText ? msgText : "Unknown",
|
||||
retValue, result ? "true" : "false"));
|
||||
gLastEventMsg = msg;
|
||||
}
|
||||
}
|
||||
|
@ -12,9 +12,6 @@
|
||||
|
||||
#include "nsWindowDefs.h"
|
||||
|
||||
// Enabled main event loop debug event output
|
||||
//#define EVENT_DEBUG_OUTPUT
|
||||
|
||||
// Enables debug output for popup rollup hooks
|
||||
//#define POPUP_ROLLUP_DEBUG_OUTPUT
|
||||
|
||||
@ -29,12 +26,11 @@
|
||||
//#define DEBUG_VK
|
||||
|
||||
// Main event loop debug output flags
|
||||
#if defined(EVENT_DEBUG_OUTPUT)
|
||||
#define SHOW_REPEAT_EVENTS true
|
||||
#define SHOW_MOUSEMOVE_EVENTS false
|
||||
#endif // defined(EVENT_DEBUG_OUTPUT)
|
||||
|
||||
void PrintEvent(UINT msg, bool aShowAllEvents, bool aShowMouseMoves);
|
||||
void PrintEvent(UINT msg, uint64_t wParam, uint64_t lParam, uint64_t retValue,
|
||||
bool result, bool aShowAllEvents, bool aShowMouseMoves);
|
||||
|
||||
#if defined(POPUP_ROLLUP_DEBUG_OUTPUT)
|
||||
typedef struct {
|
||||
|
Loading…
Reference in New Issue
Block a user