widget/windows/nsWindowDbg.cpp

Thu, 15 Jan 2015 15:59:08 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:59:08 +0100
branch
TOR_BUG_9701
changeset 10
ac0c01689b40
permissions
-rw-r--r--

Implement a real Private Browsing Mode condition by changing the API/ABI;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     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

mercurial