ipc/glue/WindowsMessageLoop.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
michael@0 2 * vim: sw=2 ts=2 et :
michael@0 3 */
michael@0 4 /* This Source Code Form is subject to the terms of the Mozilla Public
michael@0 5 * License, v. 2.0. If a copy of the MPL was not distributed with this
michael@0 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
michael@0 7
michael@0 8 #ifndef IPC_GLUE_WINDOWSMESSAGELOOP_H
michael@0 9 #define IPC_GLUE_WINDOWSMESSAGELOOP_H
michael@0 10
michael@0 11 // This file is only meant to compile on windows
michael@0 12 #include <windows.h>
michael@0 13
michael@0 14 #include "base/basictypes.h"
michael@0 15 #include "nsISupportsImpl.h"
michael@0 16
michael@0 17 namespace mozilla {
michael@0 18 namespace ipc {
michael@0 19 namespace windows {
michael@0 20
michael@0 21 void InitUIThread();
michael@0 22
michael@0 23 class DeferredMessage
michael@0 24 {
michael@0 25 public:
michael@0 26 DeferredMessage()
michael@0 27 {
michael@0 28 MOZ_COUNT_CTOR(DeferredMessage);
michael@0 29 }
michael@0 30
michael@0 31 virtual ~DeferredMessage()
michael@0 32 {
michael@0 33 MOZ_COUNT_DTOR(DeferredMessage);
michael@0 34 }
michael@0 35
michael@0 36 virtual void Run() = 0;
michael@0 37 };
michael@0 38
michael@0 39 // Uses CallWndProc to deliver a message at a later time. Messages faked with
michael@0 40 // this class must not have pointers in their wParam or lParam members as they
michael@0 41 // may be invalid by the time the message actually runs.
michael@0 42 class DeferredSendMessage : public DeferredMessage
michael@0 43 {
michael@0 44 public:
michael@0 45 DeferredSendMessage(HWND aHWnd,
michael@0 46 UINT aMessage,
michael@0 47 WPARAM aWParam,
michael@0 48 LPARAM aLParam)
michael@0 49 : hWnd(aHWnd),
michael@0 50 message(aMessage),
michael@0 51 wParam(aWParam),
michael@0 52 lParam(aLParam)
michael@0 53 { }
michael@0 54
michael@0 55 virtual void Run();
michael@0 56
michael@0 57 protected:
michael@0 58 HWND hWnd;
michael@0 59 UINT message;
michael@0 60 WPARAM wParam;
michael@0 61 LPARAM lParam;
michael@0 62 };
michael@0 63
michael@0 64 // Uses RedrawWindow to fake several painting-related messages. Flags passed
michael@0 65 // to the constructor go directly to RedrawWindow.
michael@0 66 class DeferredRedrawMessage : public DeferredMessage
michael@0 67 {
michael@0 68 public:
michael@0 69 DeferredRedrawMessage(HWND aHWnd,
michael@0 70 UINT aFlags)
michael@0 71 : hWnd(aHWnd),
michael@0 72 flags(aFlags)
michael@0 73 { }
michael@0 74
michael@0 75 virtual void Run();
michael@0 76
michael@0 77 private:
michael@0 78 HWND hWnd;
michael@0 79 UINT flags;
michael@0 80 };
michael@0 81
michael@0 82 // Uses UpdateWindow to generate a WM_PAINT message if needed.
michael@0 83 class DeferredUpdateMessage : public DeferredMessage
michael@0 84 {
michael@0 85 public:
michael@0 86 DeferredUpdateMessage(HWND aHWnd);
michael@0 87
michael@0 88 virtual void Run();
michael@0 89
michael@0 90 private:
michael@0 91 HWND mWnd;
michael@0 92 RECT mUpdateRect;
michael@0 93 };
michael@0 94
michael@0 95 // This class duplicates a string that may exist in the lParam member of the
michael@0 96 // message.
michael@0 97 class DeferredSettingChangeMessage : public DeferredSendMessage
michael@0 98 {
michael@0 99 public:
michael@0 100 DeferredSettingChangeMessage(HWND aHWnd,
michael@0 101 UINT aMessage,
michael@0 102 WPARAM aWParam,
michael@0 103 LPARAM aLParam);
michael@0 104
michael@0 105 ~DeferredSettingChangeMessage();
michael@0 106 private:
michael@0 107 wchar_t* lParamString;
michael@0 108 };
michael@0 109
michael@0 110 // This class uses SetWindowPos to fake various size-related messages. Flags
michael@0 111 // passed to the constructor go straight through to SetWindowPos.
michael@0 112 class DeferredWindowPosMessage : public DeferredMessage
michael@0 113 {
michael@0 114 public:
michael@0 115 DeferredWindowPosMessage(HWND aHWnd,
michael@0 116 LPARAM aLParam,
michael@0 117 bool aForCalcSize = false,
michael@0 118 WPARAM aWParam = 0);
michael@0 119
michael@0 120 virtual void Run();
michael@0 121
michael@0 122 private:
michael@0 123 WINDOWPOS windowPos;
michael@0 124 };
michael@0 125
michael@0 126 // This class duplicates a data buffer for a WM_COPYDATA message.
michael@0 127 class DeferredCopyDataMessage : public DeferredSendMessage
michael@0 128 {
michael@0 129 public:
michael@0 130 DeferredCopyDataMessage(HWND aHWnd,
michael@0 131 UINT aMessage,
michael@0 132 WPARAM aWParam,
michael@0 133 LPARAM aLParam);
michael@0 134
michael@0 135 ~DeferredCopyDataMessage();
michael@0 136 private:
michael@0 137 COPYDATASTRUCT copyData;
michael@0 138 };
michael@0 139
michael@0 140 class DeferredStyleChangeMessage : public DeferredMessage
michael@0 141 {
michael@0 142 public:
michael@0 143 DeferredStyleChangeMessage(HWND aHWnd,
michael@0 144 WPARAM aWParam,
michael@0 145 LPARAM aLParam);
michael@0 146
michael@0 147 virtual void Run();
michael@0 148
michael@0 149 private:
michael@0 150 HWND hWnd;
michael@0 151 int index;
michael@0 152 LONG_PTR style;
michael@0 153 };
michael@0 154
michael@0 155 class DeferredSetIconMessage : public DeferredSendMessage
michael@0 156 {
michael@0 157 public:
michael@0 158 DeferredSetIconMessage(HWND aHWnd,
michael@0 159 UINT aMessage,
michael@0 160 WPARAM aWParam,
michael@0 161 LPARAM aLParam);
michael@0 162
michael@0 163 virtual void Run();
michael@0 164 };
michael@0 165
michael@0 166 } /* namespace windows */
michael@0 167 } /* namespace ipc */
michael@0 168 } /* namespace mozilla */
michael@0 169
michael@0 170 #endif /* IPC_GLUE_WINDOWSMESSAGELOOP_H */

mercurial