Bug 1257759 part.2 Separate Windows' message and related definitions from nsWindowDefs.h to mozilla/widget/WinMessages.h r=jimm
authorMasayuki Nakano <masayuki@d-toybox.com>
Sat, 09 Apr 2016 15:15:31 +0900
changeset 332506 b7a49478bfcb151d3adfa3b37e92abff29ac3d94
parent 332505 f9ca78699bae28da5a8ec8c0d13f556350f441b3
child 332507 8ced614c9a1ff986eb1be374b75f96d545c5a8a1
push id6048
push userkmoir@mozilla.com
push dateMon, 06 Jun 2016 19:02:08 +0000
treeherdermozilla-beta@46d72a56c57d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjimm
bugs1257759
milestone48.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1257759 part.2 Separate Windows' message and related definitions from nsWindowDefs.h to mozilla/widget/WinMessages.h r=jimm This patch separates Windows' message definition and related definitions from nsWindowDefs.h to mozilla/widget/WinMessages.h because the definitions are useful in plugin module but nsWindowDefs.h cannot be included from plugin module since it depends on some headers in under widget. MozReview-Commit-ID: KNUAffLMKT1
dom/plugins/base/nsPluginInstanceOwner.cpp
dom/plugins/ipc/PluginInstanceChild.cpp
widget/windows/WinMessages.h
widget/windows/moz.build
widget/windows/nsWindowDefs.h
--- a/dom/plugins/base/nsPluginInstanceOwner.cpp
+++ b/dom/plugins/base/nsPluginInstanceOwner.cpp
@@ -68,23 +68,18 @@ using mozilla::DefaultXDisplay;
 #include "nsContentCID.h"
 #include "nsWidgetsCID.h"
 static NS_DEFINE_CID(kWidgetCID, NS_CHILD_CID);
 static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
 
 #ifdef XP_WIN
 #include <wtypes.h>
 #include <winuser.h>
-#ifndef WM_MOUSEHWHEEL
-#define WM_MOUSEHWHEEL (0x020E)
-#endif
-#ifndef SPI_GETWHEELSCROLLCHARS
-#define SPI_GETWHEELSCROLLCHARS (0x006C)
-#endif
-#endif
+#include "mozilla/widget/WinMessages.h"
+#endif // #ifdef XP_WIN
 
 #ifdef XP_MACOSX
 #include "ComplexTextInputPanel.h"
 #include "nsIDOMXULDocument.h"
 #include "nsIDOMXULCommandDispatcher.h"
 #endif
 
 #ifdef MOZ_WIDGET_GTK
--- a/dom/plugins/ipc/PluginInstanceChild.cpp
+++ b/dom/plugins/ipc/PluginInstanceChild.cpp
@@ -51,20 +51,21 @@ using namespace std;
 #include <gdk/gdkx.h>
 #include <gdk/gdk.h>
 #include "gtk2xtbin.h"
 
 #elif defined(MOZ_WIDGET_QT)
 #undef KeyPress
 #undef KeyRelease
 #elif defined(OS_WIN)
-#ifndef WM_MOUSEHWHEEL
-#define WM_MOUSEHWHEEL     0x020E
-#endif
-
+
+#include <windows.h>
+#include <windowsx.h>
+
+#include "mozilla/widget/WinMessages.h"
 #include "nsWindowsDllInterceptor.h"
 
 typedef BOOL (WINAPI *User32TrackPopupMenu)(HMENU hMenu,
                                             UINT uFlags,
                                             int x,
                                             int y,
                                             int nReserved,
                                             HWND hWnd,
@@ -89,19 +90,16 @@ static Imm32ImmReleaseContext sImm32ImmR
 static Imm32ImmGetCompositionString sImm32ImmGetCompositionStringStub = nullptr;
 static Imm32ImmSetCandidateWindow sImm32ImmSetCandidateWindowStub = nullptr;
 static Imm32ImmNotifyIME sImm32ImmNotifyIME = nullptr;
 static PluginInstanceChild* sCurrentPluginInstance = nullptr;
 static const HIMC sHookIMC = (const HIMC)0xefefefef;
 
 using mozilla::gfx::SharedDIB;
 
-#include <windows.h>
-#include <windowsx.h>
-
 // Flash WM_USER message delay time for PostDelayedTask. Borrowed
 // from Chromium's web plugin delegate src. See 'flash msg throttling
 // helpers' section for details.
 const int kFlashWMUSERMessageThrottleDelayMs = 5;
 
 static const TCHAR kPluginIgnoreSubclassProperty[] = TEXT("PluginIgnoreSubclassProperty");
 
 #elif defined(XP_MACOSX)
copy from widget/windows/nsWindowDefs.h
copy to widget/windows/WinMessages.h
--- a/widget/windows/nsWindowDefs.h
+++ b/widget/windows/WinMessages.h
@@ -1,32 +1,22 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#ifndef WindowDefs_h__
-#define WindowDefs_h__
-
-/*
- * nsWindowDefs - nsWindow related definitions, consts, and macros.
- */
+#ifndef mozilla_widget_WinMessages_h_
+#define mozilla_widget_WinMessages_h_
 
-#include "nsBaseWidget.h"
-#include "nsdefs.h"
-#include "resource.h"
+/*****************************************************************************
+ * MOZ_WM_* messages
+ ****************************************************************************/
 
-/**************************************************************
- *
- * SECTION: defines
- * 
- **************************************************************/
-
-// A magic APP message that can be sent to quit, sort of like a QUERYENDSESSION/ENDSESSION,
-// but without the query.
+// A magic APP message that can be sent to quit, sort of like a
+// QUERYENDSESSION/ENDSESSION, but without the query.
 #define MOZ_WM_APP_QUIT                   (WM_APP+0x0300)
 // Used as a "tracer" event to probe event loop latency.
 #define MOZ_WM_TRACE                      (WM_APP+0x0301)
 // Our internal message for WM_MOUSEWHEEL, WM_MOUSEHWHEEL, WM_VSCROLL and
 // WM_HSCROLL
 #define MOZ_WM_MOUSEVWHEEL                (WM_APP+0x0310)
 #define MOZ_WM_MOUSEHWHEEL                (WM_APP+0x0311)
 #define MOZ_WM_VSCROLL                    (WM_APP+0x0312)
@@ -43,16 +33,26 @@
 #define MOZ_WM_SKEWFIX                    (WM_APP+0x0316)
 // Internal message used for hiding the on-screen keyboard
 #define MOZ_WM_DISMISS_ONSCREEN_KEYBOARD  (WM_APP+0x0317)
 
 // Internal message for ensuring the file picker is visible on multi monitor
 // systems, and when the screen resolution changes.
 #define MOZ_WM_ENSUREVISIBLE              (WM_APP+0x374F)
 
+// XXX Should rename them to MOZ_WM_* and use safer values!
+// Messages for fullscreen transition window
+#define WM_FULLSCREEN_TRANSITION_BEFORE   (WM_USER + 0)
+#define WM_FULLSCREEN_TRANSITION_AFTER    (WM_USER + 1)
+
+/*****************************************************************************
+ * WM_* messages and related constants which may not be defined by
+ * old Windows SDK
+ ****************************************************************************/
+
 #ifndef SM_CXPADDEDBORDER
 #define SM_CXPADDEDBORDER                 92
 #endif
 
 // require WINVER >= 0x601
 #ifndef SM_MAXIMUMTOUCHES
 #define SM_MAXIMUMTOUCHES                 95
 #endif
@@ -105,30 +105,19 @@
 #endif
 #ifndef WM_DWMCOLORIZATIONCOLORCHANGED
 #define WM_DWMCOLORIZATIONCOLORCHANGED    0x0320
 #endif
 #ifndef WM_DWMWINDOWMAXIMIZEDCHANGE
 #define WM_DWMWINDOWMAXIMIZEDCHANGE       0x0321
 #endif
 
-// ConstrainPosition window positioning slop value
-#define kWindowPositionSlop               20
-
-// Origin of the system context menu when displayed in full screen mode
-#define MOZ_SYSCONTEXT_X_POS              20
-#define MOZ_SYSCONTEXT_Y_POS              20
-
 // Drop shadow window style
 #define CS_XP_DROPSHADOW                  0x00020000
 
-// Don't put more than this many rects in the dirty region, just fluff
-// out to the bounding-box if there are more
-#define MAX_RECTS_IN_REGION               100
-
 // App Command messages for IntelliMouse and Natural Keyboard Pro
 // These messages are not included in Visual C++ 6.0, but are in 7.0+
 #ifndef WM_APPCOMMAND
 #define WM_APPCOMMAND                     0x0319
 #endif
 
 #define FAPPCOMMAND_MASK                  0xF000
 
@@ -149,17 +138,17 @@
   #define APPCOMMAND_BROWSER_FAVORITES      6
   #define APPCOMMAND_BROWSER_HOME           7
 
   #define APPCOMMAND_MEDIA_NEXTTRACK        11
   #define APPCOMMAND_MEDIA_PREVIOUSTRACK    12
   #define APPCOMMAND_MEDIA_STOP             13
   #define APPCOMMAND_MEDIA_PLAY_PAUSE       14
 
-  /* 
+  /*
    * Additional commands currently not in use.
    *
    *#define APPCOMMAND_VOLUME_MUTE            8
    *#define APPCOMMAND_VOLUME_DOWN            9
    *#define APPCOMMAND_VOLUME_UP              10
    *#define APPCOMMAND_LAUNCH_MAIL            15
    *#define APPCOMMAND_LAUNCH_MEDIA_SELECT    16
    *#define APPCOMMAND_LAUNCH_APP1            17
@@ -179,117 +168,9 @@
   /*
    *#define GET_DEVICE_LPARAM(lParam)         ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
    *#define GET_MOUSEORKEY_LPARAM             GET_DEVICE_LPARAM
    *#define GET_FLAGS_LPARAM(lParam)          (LOWORD(lParam))
    *#define GET_KEYSTATE_LPARAM(lParam)       GET_FLAGS_LPARAM(lParam)
    */
 #endif // #ifndef APPCOMMAND_BROWSER_BACKWARD
 
-//Tablet PC Mouse Input Source
-#define TABLET_INK_SIGNATURE 0xFFFFFF00
-#define TABLET_INK_CHECK     0xFF515700
-#define TABLET_INK_TOUCH     0x00000080
-#define MOUSE_INPUT_SOURCE() WinUtils::GetMouseInputSource()
-
-// Messages for fullscreen transition window
-#define WM_FULLSCREEN_TRANSITION_BEFORE     (WM_USER + 0)
-#define WM_FULLSCREEN_TRANSITION_AFTER      (WM_USER + 1)
-
-/**************************************************************
- *
- * SECTION: enums
- * 
- **************************************************************/
-
-// nsWindow::sCanQuit
-typedef enum
-{
-    TRI_UNKNOWN = -1,
-    TRI_FALSE = 0,
-    TRI_TRUE = 1
-} TriStateBool;
-
-/**************************************************************
- *
- * SECTION: constants
- * 
- **************************************************************/
-
-/*
- * Native windows class names
- *
- * ::: IMPORTANT :::
- *
- * External apps and drivers depend on window class names.
- * For example, changing the window classes could break
- * touchpad scrolling or screen readers.
- */
-const uint32_t kMaxClassNameLength   = 40;
-const wchar_t kClassNameHidden[]     = L"MozillaHiddenWindowClass";
-const wchar_t kClassNameGeneral[]    = L"MozillaWindowClass";
-const wchar_t kClassNameDialog[]     = L"MozillaDialogClass";
-const wchar_t kClassNameDropShadow[] = L"MozillaDropShadowWindowClass";
-const wchar_t kClassNameTemp[]       = L"MozillaTempWindowClass";
-const wchar_t kClassNameTransition[] = L"MozillaTransitionWindowClass";
-
-/**************************************************************
- *
- * SECTION: structs
- * 
- **************************************************************/
-
-// Used for synthesizing events
-struct KeyPair {
-  uint8_t mGeneral;
-  uint8_t mSpecific;
-  KeyPair(uint32_t aGeneral, uint32_t aSpecific)
-    : mGeneral(uint8_t(aGeneral)), mSpecific(uint8_t(aSpecific)) {}
-};
-
-#if (WINVER < 0x0600)
-struct TITLEBARINFOEX
-{
-    DWORD cbSize;
-    RECT rcTitleBar;
-    DWORD rgstate[CCHILDREN_TITLEBAR + 1];
-    RECT rgrect[CCHILDREN_TITLEBAR + 1];
-};
-#endif
-
-namespace mozilla {
-namespace widget {
-
-struct MSGResult
-{
-  // Result for the message.
-  LRESULT& mResult;
-  // If mConsumed is true, the caller shouldn't call next wndproc.
-  bool mConsumed;
-
-  MSGResult(LRESULT* aResult = nullptr) :
-    mResult(aResult ? *aResult : mDefaultResult), mConsumed(false)
-  {
-  }
-
-private:
-  LRESULT mDefaultResult;
-};
-
-} // namespace widget
-} // namespace mozilla
-
-/**************************************************************
- *
- * SECTION: macros
- * 
- **************************************************************/
-
-#define NSRGB_2_COLOREF(color) \
-      RGB(NS_GET_R(color),NS_GET_G(color),NS_GET_B(color))
-#define COLOREF_2_NSRGB(color) \
-      NS_RGB(GetRValue(color), GetGValue(color), GetBValue(color))
-
-#define VERIFY_WINDOW_STYLE(s) \
-      NS_ASSERTION(((s) & (WS_CHILD | WS_POPUP)) != (WS_CHILD | WS_POPUP), \
-      "WS_POPUP and WS_CHILD are mutually exclusive")
-
-#endif /* WindowDefs_h__ */
+#endif // #ifndef mozilla_widget_WinMessages_h_
--- a/widget/windows/moz.build
+++ b/widget/windows/moz.build
@@ -9,16 +9,17 @@ TEST_DIRS += ['tests']
 EXPORTS += [
     'nsdefs.h',
     'WindowHook.h',
     'WinUtils.h',
 ]
 
 EXPORTS.mozilla.widget += [
     'AudioSession.h',
+    'WinMessages.h',
 ]
 
 UNIFIED_SOURCES += [
     'AudioSession.cpp',
     'GfxInfo.cpp',
     'IEnumFE.cpp',
     'IMMHandler.cpp',
     'InkCollector.cpp',
--- a/widget/windows/nsWindowDefs.h
+++ b/widget/windows/nsWindowDefs.h
@@ -5,200 +5,44 @@
 
 #ifndef WindowDefs_h__
 #define WindowDefs_h__
 
 /*
  * nsWindowDefs - nsWindow related definitions, consts, and macros.
  */
 
+#include "mozilla/widget/WinMessages.h"
 #include "nsBaseWidget.h"
 #include "nsdefs.h"
 #include "resource.h"
 
 /**************************************************************
  *
  * SECTION: defines
  * 
  **************************************************************/
 
-// A magic APP message that can be sent to quit, sort of like a QUERYENDSESSION/ENDSESSION,
-// but without the query.
-#define MOZ_WM_APP_QUIT                   (WM_APP+0x0300)
-// Used as a "tracer" event to probe event loop latency.
-#define MOZ_WM_TRACE                      (WM_APP+0x0301)
-// Our internal message for WM_MOUSEWHEEL, WM_MOUSEHWHEEL, WM_VSCROLL and
-// WM_HSCROLL
-#define MOZ_WM_MOUSEVWHEEL                (WM_APP+0x0310)
-#define MOZ_WM_MOUSEHWHEEL                (WM_APP+0x0311)
-#define MOZ_WM_VSCROLL                    (WM_APP+0x0312)
-#define MOZ_WM_HSCROLL                    (WM_APP+0x0313)
-#define MOZ_WM_MOUSEWHEEL_FIRST           MOZ_WM_MOUSEVWHEEL
-#define MOZ_WM_MOUSEWHEEL_LAST            MOZ_WM_HSCROLL
-// If a popup window is being activated, we try to reactivate the previous
-// window with this message.
-#define MOZ_WM_REACTIVATE                 (WM_APP+0x0314)
-// If TSFTextStore needs to notify TSF/TIP of layout change later, this
-// message is posted.
-#define MOZ_WM_NOTIY_TSF_OF_LAYOUT_CHANGE (WM_APP+0x0315)
-// Internal message used in correcting backwards clock skew
-#define MOZ_WM_SKEWFIX                    (WM_APP+0x0316)
-// Internal message used for hiding the on-screen keyboard
-#define MOZ_WM_DISMISS_ONSCREEN_KEYBOARD  (WM_APP+0x0317)
-
-// Internal message for ensuring the file picker is visible on multi monitor
-// systems, and when the screen resolution changes.
-#define MOZ_WM_ENSUREVISIBLE              (WM_APP+0x374F)
-
-#ifndef SM_CXPADDEDBORDER
-#define SM_CXPADDEDBORDER                 92
-#endif
-
-// require WINVER >= 0x601
-#ifndef SM_MAXIMUMTOUCHES
-#define SM_MAXIMUMTOUCHES                 95
-#endif
-
-#ifndef WM_THEMECHANGED
-#define WM_THEMECHANGED                   0x031A
-#endif
-
-#ifndef WM_GETOBJECT
-#define WM_GETOBJECT                      0x03d
-#endif
-
-#ifndef PBT_APMRESUMEAUTOMATIC
-#define PBT_APMRESUMEAUTOMATIC            0x0012
-#endif
-
-#ifndef WM_MOUSEHWHEEL
-#define WM_MOUSEHWHEEL                    0x020E
-#endif
-
-#ifndef MOUSEEVENTF_HWHEEL
-#define MOUSEEVENTF_HWHEEL                0x01000
-#endif
-
-#ifndef WM_MOUSELEAVE
-#define WM_MOUSELEAVE                     0x02A3
-#endif
-
-#ifndef SPI_GETWHEELSCROLLCHARS
-#define SPI_GETWHEELSCROLLCHARS           0x006C
-#endif
-
-#ifndef SPI_SETWHEELSCROLLCHARS
-#define SPI_SETWHEELSCROLLCHARS           0x006D
-#endif
-
-#ifndef MAPVK_VSC_TO_VK
-#define MAPVK_VK_TO_VSC                   0
-#define MAPVK_VSC_TO_VK                   1
-#define MAPVK_VK_TO_CHAR                  2
-#define MAPVK_VSC_TO_VK_EX                3
-#define MAPVK_VK_TO_VSC_EX                4
-#endif
-
-#ifndef WM_DWMCOMPOSITIONCHANGED
-#define WM_DWMCOMPOSITIONCHANGED          0x031E
-#endif
-#ifndef WM_DWMNCRENDERINGCHANGED
-#define WM_DWMNCRENDERINGCHANGED          0x031F
-#endif
-#ifndef WM_DWMCOLORIZATIONCOLORCHANGED
-#define WM_DWMCOLORIZATIONCOLORCHANGED    0x0320
-#endif
-#ifndef WM_DWMWINDOWMAXIMIZEDCHANGE
-#define WM_DWMWINDOWMAXIMIZEDCHANGE       0x0321
-#endif
-
 // ConstrainPosition window positioning slop value
 #define kWindowPositionSlop               20
 
 // Origin of the system context menu when displayed in full screen mode
 #define MOZ_SYSCONTEXT_X_POS              20
 #define MOZ_SYSCONTEXT_Y_POS              20
 
-// Drop shadow window style
-#define CS_XP_DROPSHADOW                  0x00020000
-
 // Don't put more than this many rects in the dirty region, just fluff
 // out to the bounding-box if there are more
 #define MAX_RECTS_IN_REGION               100
 
-// App Command messages for IntelliMouse and Natural Keyboard Pro
-// These messages are not included in Visual C++ 6.0, but are in 7.0+
-#ifndef WM_APPCOMMAND
-#define WM_APPCOMMAND                     0x0319
-#endif
-
-#define FAPPCOMMAND_MASK                  0xF000
-
-#ifndef WM_GETTITLEBARINFOEX
-#define WM_GETTITLEBARINFOEX              0x033F
-#endif
-
-#ifndef CCHILDREN_TITLEBAR
-#define CCHILDREN_TITLEBAR                5
-#endif
-
-#ifndef APPCOMMAND_BROWSER_BACKWARD
-  #define APPCOMMAND_BROWSER_BACKWARD       1
-  #define APPCOMMAND_BROWSER_FORWARD        2
-  #define APPCOMMAND_BROWSER_REFRESH        3
-  #define APPCOMMAND_BROWSER_STOP           4
-  #define APPCOMMAND_BROWSER_SEARCH         5
-  #define APPCOMMAND_BROWSER_FAVORITES      6
-  #define APPCOMMAND_BROWSER_HOME           7
-
-  #define APPCOMMAND_MEDIA_NEXTTRACK        11
-  #define APPCOMMAND_MEDIA_PREVIOUSTRACK    12
-  #define APPCOMMAND_MEDIA_STOP             13
-  #define APPCOMMAND_MEDIA_PLAY_PAUSE       14
-
-  /* 
-   * Additional commands currently not in use.
-   *
-   *#define APPCOMMAND_VOLUME_MUTE            8
-   *#define APPCOMMAND_VOLUME_DOWN            9
-   *#define APPCOMMAND_VOLUME_UP              10
-   *#define APPCOMMAND_LAUNCH_MAIL            15
-   *#define APPCOMMAND_LAUNCH_MEDIA_SELECT    16
-   *#define APPCOMMAND_LAUNCH_APP1            17
-   *#define APPCOMMAND_LAUNCH_APP2            18
-   *#define APPCOMMAND_BASS_DOWN              19
-   *#define APPCOMMAND_BASS_BOOST             20
-   *#define APPCOMMAND_BASS_UP                21
-   *#define APPCOMMAND_TREBLE_DOWN            22
-   *#define APPCOMMAND_TREBLE_UP              23
-   *#define FAPPCOMMAND_MOUSE                 0x8000
-   *#define FAPPCOMMAND_KEY                   0
-   *#define FAPPCOMMAND_OEM                   0x1000
-   */
-
-  #define GET_APPCOMMAND_LPARAM(lParam)     ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
-
-  /*
-   *#define GET_DEVICE_LPARAM(lParam)         ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
-   *#define GET_MOUSEORKEY_LPARAM             GET_DEVICE_LPARAM
-   *#define GET_FLAGS_LPARAM(lParam)          (LOWORD(lParam))
-   *#define GET_KEYSTATE_LPARAM(lParam)       GET_FLAGS_LPARAM(lParam)
-   */
-#endif // #ifndef APPCOMMAND_BROWSER_BACKWARD
-
 //Tablet PC Mouse Input Source
 #define TABLET_INK_SIGNATURE 0xFFFFFF00
 #define TABLET_INK_CHECK     0xFF515700
 #define TABLET_INK_TOUCH     0x00000080
 #define MOUSE_INPUT_SOURCE() WinUtils::GetMouseInputSource()
 
-// Messages for fullscreen transition window
-#define WM_FULLSCREEN_TRANSITION_BEFORE     (WM_USER + 0)
-#define WM_FULLSCREEN_TRANSITION_AFTER      (WM_USER + 1)
-
 /**************************************************************
  *
  * SECTION: enums
  * 
  **************************************************************/
 
 // nsWindow::sCanQuit
 typedef enum