Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 /*
7 * nsWindowDbg - Debug related utilities for nsWindow.
8 */
10 #include "nsWindowDbg.h"
12 #ifdef PR_LOGGING
13 extern PRLogModuleInfo* gWindowsLog;
14 #endif
16 #if defined(POPUP_ROLLUP_DEBUG_OUTPUT) || defined(EVENT_DEBUG_OUTPUT) || 1
18 typedef struct {
19 const char * mStr;
20 long mId;
21 } EventMsgInfo;
23 #if defined(POPUP_ROLLUP_DEBUG_OUTPUT)
24 MSGFEventMsgInfo gMSGFEvents[] = {
25 "MSGF_DIALOGBOX", 0,
26 "MSGF_MESSAGEBOX", 1,
27 "MSGF_MENU", 2,
28 "MSGF_SCROLLBAR", 5,
29 "MSGF_NEXTWINDOW", 6,
30 "MSGF_MAX", 8,
31 "MSGF_USER", 4096,
32 nullptr, 0};
33 #endif
35 EventMsgInfo gAllEvents[] = {
36 {"WM_NULL", 0x0000},
37 {"WM_CREATE", 0x0001},
38 {"WM_DESTROY", 0x0002},
39 {"WM_MOVE", 0x0003},
40 {"WM_SIZE", 0x0005},
41 {"WM_ACTIVATE", 0x0006},
42 {"WM_SETFOCUS", 0x0007},
43 {"WM_KILLFOCUS", 0x0008},
44 {"WM_ENABLE", 0x000A},
45 {"WM_SETREDRAW", 0x000B},
46 {"WM_SETTEXT", 0x000C},
47 {"WM_GETTEXT", 0x000D},
48 {"WM_GETTEXTLENGTH", 0x000E},
49 {"WM_PAINT", 0x000F},
50 {"WM_CLOSE", 0x0010},
51 {"WM_QUERYENDSESSION", 0x0011},
52 {"WM_QUIT", 0x0012},
53 {"WM_QUERYOPEN", 0x0013},
54 {"WM_ERASEBKGND", 0x0014},
55 {"WM_SYSCOLORCHANGE", 0x0015},
56 {"WM_ENDSESSION", 0x0016},
57 {"WM_SHOWWINDOW", 0x0018},
58 {"WM_SETTINGCHANGE", 0x001A},
59 {"WM_DEVMODECHANGE", 0x001B},
60 {"WM_ACTIVATEAPP", 0x001C},
61 {"WM_FONTCHANGE", 0x001D},
62 {"WM_TIMECHANGE", 0x001E},
63 {"WM_CANCELMODE", 0x001F},
64 {"WM_SETCURSOR", 0x0020},
65 {"WM_MOUSEACTIVATE", 0x0021},
66 {"WM_CHILDACTIVATE", 0x0022},
67 {"WM_QUEUESYNC", 0x0023},
68 {"WM_GETMINMAXINFO", 0x0024},
69 {"WM_PAINTICON", 0x0026},
70 {"WM_ICONERASEBKGND", 0x0027},
71 {"WM_NEXTDLGCTL", 0x0028},
72 {"WM_SPOOLERSTATUS", 0x002A},
73 {"WM_DRAWITEM", 0x002B},
74 {"WM_MEASUREITEM", 0x002C},
75 {"WM_DELETEITEM", 0x002D},
76 {"WM_VKEYTOITEM", 0x002E},
77 {"WM_CHARTOITEM", 0x002F},
78 {"WM_SETFONT", 0x0030},
79 {"WM_GETFONT", 0x0031},
80 {"WM_SETHOTKEY", 0x0032},
81 {"WM_GETHOTKEY", 0x0033},
82 {"WM_QUERYDRAGICON", 0x0037},
83 {"WM_COMPAREITEM", 0x0039},
84 {"WM_GETOBJECT", 0x003D},
85 {"WM_COMPACTING", 0x0041},
86 {"WM_COMMNOTIFY", 0x0044},
87 {"WM_WINDOWPOSCHANGING", 0x0046},
88 {"WM_WINDOWPOSCHANGED", 0x0047},
89 {"WM_POWER", 0x0048},
90 {"WM_COPYDATA", 0x004A},
91 {"WM_CANCELJOURNAL", 0x004B},
92 {"WM_NOTIFY", 0x004E},
93 {"WM_INPUTLANGCHANGEREQUEST", 0x0050},
94 {"WM_INPUTLANGCHANGE", 0x0051},
95 {"WM_TCARD", 0x0052},
96 {"WM_HELP", 0x0053},
97 {"WM_USERCHANGED", 0x0054},
98 {"WM_NOTIFYFORMAT", 0x0055},
99 {"WM_CONTEXTMENU", 0x007B},
100 {"WM_STYLECHANGING", 0x007C},
101 {"WM_STYLECHANGED", 0x007D},
102 {"WM_DISPLAYCHANGE", 0x007E},
103 {"WM_GETICON", 0x007F},
104 {"WM_SETICON", 0x0080},
105 {"WM_NCCREATE", 0x0081},
106 {"WM_NCDESTROY", 0x0082},
107 {"WM_NCCALCSIZE", 0x0083},
108 {"WM_NCHITTEST", 0x0084},
109 {"WM_NCPAINT", 0x0085},
110 {"WM_NCACTIVATE", 0x0086},
111 {"WM_GETDLGCODE", 0x0087},
112 {"WM_SYNCPAINT", 0x0088},
113 {"WM_NCMOUSEMOVE", 0x00A0},
114 {"WM_NCLBUTTONDOWN", 0x00A1},
115 {"WM_NCLBUTTONUP", 0x00A2},
116 {"WM_NCLBUTTONDBLCLK", 0x00A3},
117 {"WM_NCRBUTTONDOWN", 0x00A4},
118 {"WM_NCRBUTTONUP", 0x00A5},
119 {"WM_NCRBUTTONDBLCLK", 0x00A6},
120 {"WM_NCMBUTTONDOWN", 0x00A7},
121 {"WM_NCMBUTTONUP", 0x00A8},
122 {"WM_NCMBUTTONDBLCLK", 0x00A9},
123 {"EM_GETSEL", 0x00B0},
124 {"EM_SETSEL", 0x00B1},
125 {"EM_GETRECT", 0x00B2},
126 {"EM_SETRECT", 0x00B3},
127 {"EM_SETRECTNP", 0x00B4},
128 {"EM_SCROLL", 0x00B5},
129 {"EM_LINESCROLL", 0x00B6},
130 {"EM_SCROLLCARET", 0x00B7},
131 {"EM_GETMODIFY", 0x00B8},
132 {"EM_SETMODIFY", 0x00B9},
133 {"EM_GETLINECOUNT", 0x00BA},
134 {"EM_LINEINDEX", 0x00BB},
135 {"EM_SETHANDLE", 0x00BC},
136 {"EM_GETHANDLE", 0x00BD},
137 {"EM_GETTHUMB", 0x00BE},
138 {"EM_LINELENGTH", 0x00C1},
139 {"EM_REPLACESEL", 0x00C2},
140 {"EM_GETLINE", 0x00C4},
141 {"EM_LIMITTEXT", 0x00C5},
142 {"EM_CANUNDO", 0x00C6},
143 {"EM_UNDO", 0x00C7},
144 {"EM_FMTLINES", 0x00C8},
145 {"EM_LINEFROMCHAR", 0x00C9},
146 {"EM_SETTABSTOPS", 0x00CB},
147 {"EM_SETPASSWORDCHAR", 0x00CC},
148 {"EM_EMPTYUNDOBUFFER", 0x00CD},
149 {"EM_GETFIRSTVISIBLELINE", 0x00CE},
150 {"EM_SETREADONLY", 0x00CF},
151 {"EM_SETWORDBREAKPROC", 0x00D0},
152 {"EM_GETWORDBREAKPROC", 0x00D1},
153 {"EM_GETPASSWORDCHAR", 0x00D2},
154 {"EM_SETMARGINS", 0x00D3},
155 {"EM_GETMARGINS", 0x00D4},
156 {"EM_GETLIMITTEXT", 0x00D5},
157 {"EM_POSFROMCHAR", 0x00D6},
158 {"EM_CHARFROMPOS", 0x00D7},
159 {"EM_SETIMESTATUS", 0x00D8},
160 {"EM_GETIMESTATUS", 0x00D9},
161 {"SBM_SETPOS", 0x00E0},
162 {"SBM_GETPOS", 0x00E1},
163 {"SBM_SETRANGE", 0x00E2},
164 {"SBM_SETRANGEREDRAW", 0x00E6},
165 {"SBM_GETRANGE", 0x00E3},
166 {"SBM_ENABLE_ARROWS", 0x00E4},
167 {"SBM_SETSCROLLINFO", 0x00E9},
168 {"SBM_GETSCROLLINFO", 0x00EA},
169 {"WM_KEYDOWN", 0x0100},
170 {"WM_KEYUP", 0x0101},
171 {"WM_CHAR", 0x0102},
172 {"WM_DEADCHAR", 0x0103},
173 {"WM_SYSKEYDOWN", 0x0104},
174 {"WM_SYSKEYUP", 0x0105},
175 {"WM_SYSCHAR", 0x0106},
176 {"WM_SYSDEADCHAR", 0x0107},
177 {"WM_KEYLAST", 0x0108},
178 {"WM_IME_STARTCOMPOSITION", 0x010D},
179 {"WM_IME_ENDCOMPOSITION", 0x010E},
180 {"WM_IME_COMPOSITION", 0x010F},
181 {"WM_INITDIALOG", 0x0110},
182 {"WM_COMMAND", 0x0111},
183 {"WM_SYSCOMMAND", 0x0112},
184 {"WM_TIMER", 0x0113},
185 {"WM_HSCROLL", 0x0114},
186 {"WM_VSCROLL", 0x0115},
187 {"WM_INITMENU", 0x0116},
188 {"WM_INITMENUPOPUP", 0x0117},
189 {"WM_MENUSELECT", 0x011F},
190 {"WM_MENUCHAR", 0x0120},
191 {"WM_ENTERIDLE", 0x0121},
192 {"WM_MENURBUTTONUP", 0x0122},
193 {"WM_MENUDRAG", 0x0123},
194 {"WM_MENUGETOBJECT", 0x0124},
195 {"WM_UNINITMENUPOPUP", 0x0125},
196 {"WM_MENUCOMMAND", 0x0126},
197 {"WM_CHANGEUISTATE", 0x0127},
198 {"WM_UPDATEUISTATE", 0x0128},
199 {"WM_CTLCOLORMSGBOX", 0x0132},
200 {"WM_CTLCOLOREDIT", 0x0133},
201 {"WM_CTLCOLORLISTBOX", 0x0134},
202 {"WM_CTLCOLORBTN", 0x0135},
203 {"WM_CTLCOLORDLG", 0x0136},
204 {"WM_CTLCOLORSCROLLBAR", 0x0137},
205 {"WM_CTLCOLORSTATIC", 0x0138},
206 {"CB_GETEDITSEL", 0x0140},
207 {"CB_LIMITTEXT", 0x0141},
208 {"CB_SETEDITSEL", 0x0142},
209 {"CB_ADDSTRING", 0x0143},
210 {"CB_DELETESTRING", 0x0144},
211 {"CB_DIR", 0x0145},
212 {"CB_GETCOUNT", 0x0146},
213 {"CB_GETCURSEL", 0x0147},
214 {"CB_GETLBTEXT", 0x0148},
215 {"CB_GETLBTEXTLEN", 0x0149},
216 {"CB_INSERTSTRING", 0x014A},
217 {"CB_RESETCONTENT", 0x014B},
218 {"CB_FINDSTRING", 0x014C},
219 {"CB_SELECTSTRING", 0x014D},
220 {"CB_SETCURSEL", 0x014E},
221 {"CB_SHOWDROPDOWN", 0x014F},
222 {"CB_GETITEMDATA", 0x0150},
223 {"CB_SETITEMDATA", 0x0151},
224 {"CB_GETDROPPEDCONTROLRECT", 0x0152},
225 {"CB_SETITEMHEIGHT", 0x0153},
226 {"CB_GETITEMHEIGHT", 0x0154},
227 {"CB_SETEXTENDEDUI", 0x0155},
228 {"CB_GETEXTENDEDUI", 0x0156},
229 {"CB_GETDROPPEDSTATE", 0x0157},
230 {"CB_FINDSTRINGEXACT", 0x0158},
231 {"CB_SETLOCALE", 0x0159},
232 {"CB_GETLOCALE", 0x015A},
233 {"CB_GETTOPINDEX", 0x015b},
234 {"CB_SETTOPINDEX", 0x015c},
235 {"CB_GETHORIZONTALEXTENT", 0x015d},
236 {"CB_SETHORIZONTALEXTENT", 0x015e},
237 {"CB_GETDROPPEDWIDTH", 0x015f},
238 {"CB_SETDROPPEDWIDTH", 0x0160},
239 {"CB_INITSTORAGE", 0x0161},
240 {"CB_MSGMAX", 0x0162},
241 {"LB_ADDSTRING", 0x0180},
242 {"LB_INSERTSTRING", 0x0181},
243 {"LB_DELETESTRING", 0x0182},
244 {"LB_SELITEMRANGEEX", 0x0183},
245 {"LB_RESETCONTENT", 0x0184},
246 {"LB_SETSEL", 0x0185},
247 {"LB_SETCURSEL", 0x0186},
248 {"LB_GETSEL", 0x0187},
249 {"LB_GETCURSEL", 0x0188},
250 {"LB_GETTEXT", 0x0189},
251 {"LB_GETTEXTLEN", 0x018A},
252 {"LB_GETCOUNT", 0x018B},
253 {"LB_SELECTSTRING", 0x018C},
254 {"LB_DIR", 0x018D},
255 {"LB_GETTOPINDEX", 0x018E},
256 {"LB_FINDSTRING", 0x018F},
257 {"LB_GETSELCOUNT", 0x0190},
258 {"LB_GETSELITEMS", 0x0191},
259 {"LB_SETTABSTOPS", 0x0192},
260 {"LB_GETHORIZONTALEXTENT", 0x0193},
261 {"LB_SETHORIZONTALEXTENT", 0x0194},
262 {"LB_SETCOLUMNWIDTH", 0x0195},
263 {"LB_ADDFILE", 0x0196},
264 {"LB_SETTOPINDEX", 0x0197},
265 {"LB_GETITEMRECT", 0x0198},
266 {"LB_GETITEMDATA", 0x0199},
267 {"LB_SETITEMDATA", 0x019A},
268 {"LB_SELITEMRANGE", 0x019B},
269 {"LB_SETANCHORINDEX", 0x019C},
270 {"LB_GETANCHORINDEX", 0x019D},
271 {"LB_SETCARETINDEX", 0x019E},
272 {"LB_GETCARETINDEX", 0x019F},
273 {"LB_SETITEMHEIGHT", 0x01A0},
274 {"LB_GETITEMHEIGHT", 0x01A1},
275 {"LB_FINDSTRINGEXACT", 0x01A2},
276 {"LB_SETLOCALE", 0x01A5},
277 {"LB_GETLOCALE", 0x01A6},
278 {"LB_SETCOUNT", 0x01A7},
279 {"LB_INITSTORAGE", 0x01A8},
280 {"LB_ITEMFROMPOINT", 0x01A9},
281 {"LB_MSGMAX", 0x01B0},
282 {"WM_MOUSEMOVE", 0x0200},
283 {"WM_LBUTTONDOWN", 0x0201},
284 {"WM_LBUTTONUP", 0x0202},
285 {"WM_LBUTTONDBLCLK", 0x0203},
286 {"WM_RBUTTONDOWN", 0x0204},
287 {"WM_RBUTTONUP", 0x0205},
288 {"WM_RBUTTONDBLCLK", 0x0206},
289 {"WM_MBUTTONDOWN", 0x0207},
290 {"WM_MBUTTONUP", 0x0208},
291 {"WM_MBUTTONDBLCLK", 0x0209},
292 {"WM_MOUSEWHEEL", 0x020A},
293 {"WM_MOUSEHWHEEL", 0x020E},
294 {"WM_PARENTNOTIFY", 0x0210},
295 {"WM_ENTERMENULOOP", 0x0211},
296 {"WM_EXITMENULOOP", 0x0212},
297 {"WM_NEXTMENU", 0x0213},
298 {"WM_SIZING", 0x0214},
299 {"WM_CAPTURECHANGED", 0x0215},
300 {"WM_MOVING", 0x0216},
301 {"WM_POWERBROADCAST", 0x0218},
302 {"WM_DEVICECHANGE", 0x0219},
303 {"WM_MDICREATE", 0x0220},
304 {"WM_MDIDESTROY", 0x0221},
305 {"WM_MDIACTIVATE", 0x0222},
306 {"WM_MDIRESTORE", 0x0223},
307 {"WM_MDINEXT", 0x0224},
308 {"WM_MDIMAXIMIZE", 0x0225},
309 {"WM_MDITILE", 0x0226},
310 {"WM_MDICASCADE", 0x0227},
311 {"WM_MDIICONARRANGE", 0x0228},
312 {"WM_MDIGETACTIVE", 0x0229},
313 {"WM_MDISETMENU", 0x0230},
314 {"WM_ENTERSIZEMOVE", 0x0231},
315 {"WM_EXITSIZEMOVE", 0x0232},
316 {"WM_DROPFILES", 0x0233},
317 {"WM_MDIREFRESHMENU", 0x0234},
318 {"WM_IME_SETCONTEXT", 0x0281},
319 {"WM_IME_NOTIFY", 0x0282},
320 {"WM_IME_CONTROL", 0x0283},
321 {"WM_IME_COMPOSITIONFULL", 0x0284},
322 {"WM_IME_SELECT", 0x0285},
323 {"WM_IME_CHAR", 0x0286},
324 {"WM_IME_REQUEST", 0x0288},
325 {"WM_IME_KEYDOWN", 0x0290},
326 {"WM_IME_KEYUP", 0x0291},
327 {"WM_NCMOUSEHOVER", 0x02A0},
328 {"WM_MOUSEHOVER", 0x02A1},
329 {"WM_MOUSELEAVE", 0x02A3},
330 {"WM_CUT", 0x0300},
331 {"WM_COPY", 0x0301},
332 {"WM_PASTE", 0x0302},
333 {"WM_CLEAR", 0x0303},
334 {"WM_UNDO", 0x0304},
335 {"WM_RENDERFORMAT", 0x0305},
336 {"WM_RENDERALLFORMATS", 0x0306},
337 {"WM_DESTROYCLIPBOARD", 0x0307},
338 {"WM_DRAWCLIPBOARD", 0x0308},
339 {"WM_PAINTCLIPBOARD", 0x0309},
340 {"WM_VSCROLLCLIPBOARD", 0x030A},
341 {"WM_SIZECLIPBOARD", 0x030B},
342 {"WM_ASKCBFORMATNAME", 0x030C},
343 {"WM_CHANGECBCHAIN", 0x030D},
344 {"WM_HSCROLLCLIPBOARD", 0x030E},
345 {"WM_QUERYNEWPALETTE", 0x030F},
346 {"WM_PALETTEISCHANGING", 0x0310},
347 {"WM_PALETTECHANGED", 0x0311},
348 {"WM_HOTKEY", 0x0312},
349 {"WM_PRINT", 0x0317},
350 {"WM_PRINTCLIENT", 0x0318},
351 {"WM_THEMECHANGED", 0x031A},
352 {"WM_HANDHELDFIRST", 0x0358},
353 {"WM_HANDHELDLAST", 0x035F},
354 {"WM_AFXFIRST", 0x0360},
355 {"WM_AFXLAST", 0x037F},
356 {"WM_PENWINFIRST", 0x0380},
357 {"WM_PENWINLAST", 0x038F},
358 {"WM_APP", 0x8000},
359 {"WM_DWMCOMPOSITIONCHANGED", 0x031E},
360 {"WM_DWMNCRENDERINGCHANGED", 0x031F},
361 {"WM_DWMCOLORIZATIONCOLORCHANGED", 0x0320},
362 {"WM_DWMWINDOWMAXIMIZEDCHANGE", 0x0321},
363 {"WM_DWMSENDICONICTHUMBNAIL", 0x0323},
364 {"WM_DWMSENDICONICLIVEPREVIEWBITMAP", 0x0326},
365 {"WM_TABLET_QUERYSYSTEMGESTURESTATUS", 0x02CC},
366 {"WM_GESTURE", 0x0119},
367 {"WM_GESTURENOTIFY", 0x011A},
368 {"WM_GETTITLEBARINFOEX", 0x033F},
369 {nullptr, 0x0}
370 };
372 static long gEventCounter = 0;
373 static long gLastEventMsg = 0;
375 void PrintEvent(UINT msg, bool aShowAllEvents, bool aShowMouseMoves)
376 {
377 int inx = 0;
378 while (gAllEvents[inx].mId != (long)msg && gAllEvents[inx].mStr != nullptr) {
379 inx++;
380 }
381 if (aShowAllEvents || (!aShowAllEvents && gLastEventMsg != (long)msg)) {
382 if (aShowMouseMoves || (!aShowMouseMoves && msg != 0x0020 && msg != 0x0200 && msg != 0x0084)) {
383 PR_LOG(gWindowsLog, PR_LOG_ALWAYS,
384 ("%6d - 0x%04X %s\n", gEventCounter++, msg,
385 gAllEvents[inx].mStr ? gAllEvents[inx].mStr : "Unknown"));
386 gLastEventMsg = msg;
387 }
388 }
389 }
391 #endif // defined(POPUP_ROLLUP_DEBUG_OUTPUT) || defined(EVENT_DEBUG_OUTPUT)
393 #ifdef DEBUG
394 void DDError(const char *msg, HRESULT hr)
395 {
396 /*XXX make nicer */
397 PR_LOG(gWindowsLog, PR_LOG_ERROR,
398 ("direct draw error %s: 0x%08lx\n", msg, hr));
399 }
400 #endif
402 #ifdef DEBUG_VK
403 bool is_vk_down(int vk)
404 {
405 SHORT st = GetKeyState(vk);
406 #ifdef DEBUG
407 PR_LOG(gWindowsLog, PR_LOG_ALWAYS, ("is_vk_down vk=%x st=%x\n",vk, st));
408 #endif
409 return (st < 0);
410 }
411 #endif