Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/nsWidgetInitData.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 40; 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/. */
5
6
#ifndef nsWidgetInitData_h__
7
#define nsWidgetInitData_h__
8
9
/**
10
 * Window types
11
 *
12
 * Don't alter previously encoded enum values - 3rd party apps may look at
13
 * these.
14
 */
15
enum nsWindowType {
16
  eWindowType_toplevel,           // default top level window
17
  eWindowType_dialog,             // top level window but usually handled differently
18
                                  // by the OS
19
  eWindowType_sheet,              // MacOSX sheet (special dialog class)
20
  eWindowType_popup,              // used for combo boxes, etc
21
  eWindowType_child,              // child windows (contained inside a window on the
22
                                  // desktop (has no border))
23
  eWindowType_invisible,          // windows that are invisible or offscreen
24
  eWindowType_plugin,             // plugin window
25
  eWindowType_plugin_ipc_chrome,  // chrome side native widget for plugins (e10s)
26
  eWindowType_plugin_ipc_content, // content side puppet widget for plugins (e10s)
27
};
28
29
/**
30
 * Popup types
31
 *
32
 * For eWindowType_popup
33
 */
34
enum nsPopupType {
35
  ePopupTypePanel,
36
  ePopupTypeMenu,
37
  ePopupTypeTooltip,
38
  ePopupTypeAny      = 0xF000 // used only to pass to
39
                              // nsXULPopupManager::GetTopPopup
40
};
41
42
/**
43
 * Popup levels specify the window ordering behaviour.
44
 */
45
enum nsPopupLevel {
46
  // the popup appears just above its parent and maintains its position
47
  // relative to the parent
48
  ePopupLevelParent,
49
  // the popup is a floating popup used for tool palettes. A parent window
50
  // must be specified, but a platform implementation need not use this.
51
  // On Windows, floating is generally equivalent to parent. On Mac, floating
52
  // puts the popup at toplevel, but it will hide when the application is deactivated
53
  ePopupLevelFloating,
54
  // the popup appears on top of other windows, including those of other applications
55
  ePopupLevelTop
56
};
57
58
/**
59
 * Border styles
60
 */
61
enum nsBorderStyle {
62
  eBorderStyle_none     = 0,      // no border, titlebar, etc.. opposite of
63
                                  // all
64
  eBorderStyle_all      = 1 << 0, // all window decorations
65
  eBorderStyle_border   = 1 << 1, // enables the border on the window. these
66
                                  // are only for decoration and are not
67
                                  // resize handles
68
  eBorderStyle_resizeh  = 1 << 2, // enables the resize handles for the
69
                                  // window. if this is set, border is
70
                                  // implied to also be set
71
  eBorderStyle_title    = 1 << 3, // enables the titlebar for the window
72
  eBorderStyle_menu     = 1 << 4, // enables the window menu button on the
73
                                  // title bar. this being on should force
74
                                  // the title bar to display
75
  eBorderStyle_minimize = 1 << 5, // enables the minimize button so the user
76
                                  // can minimize the window. turned off for
77
                                  // tranient windows since they can not be
78
                                  // minimized separate from their parent
79
  eBorderStyle_maximize = 1 << 6, // enables the maxmize button so the user
80
                                  // can maximize the window
81
  eBorderStyle_close    = 1 << 7, // show the close button
82
  eBorderStyle_default  = -1      // whatever the OS wants... i.e. don't do
83
                                  // anything
84
};
85
86
/**
87
 * Basic struct for widget initialization data.
88
 * @see Create member function of nsIWidget
89
 */
90
91
struct nsWidgetInitData {
92
  nsWidgetInitData() :
93
      mWindowType(eWindowType_child),
94
      mBorderStyle(eBorderStyle_default),
95
      mPopupHint(ePopupTypePanel),
96
      mPopupLevel(ePopupLevelTop),
97
      mScreenId(0),
98
      clipChildren(false),
99
      clipSiblings(false),
100
      mDropShadow(false),
101
      mListenForResizes(false),
102
      mUnicode(true),
103
      mRTL(false),
104
      mNoAutoHide(false),
105
      mIsDragPopup(false),
106
      mIsAnimationSuppressed(false),
107
      mSupportTranslucency(false),
108
      mMouseTransparent(false),
109
      mHasRemoteContent(false)
110
0
  {
111
0
  }
112
113
  nsWindowType  mWindowType;
114
  nsBorderStyle mBorderStyle;
115
  nsPopupType   mPopupHint;
116
  nsPopupLevel  mPopupLevel;
117
  // B2G multi-screen support. Screen ID is for differentiating screens of
118
  // windows, and due to the hardware limitation, it is platform-specific for
119
  // now, which align with the value of display type defined in HWC.
120
  uint32_t      mScreenId;
121
  // when painting exclude area occupied by child windows and sibling windows
122
  bool          clipChildren, clipSiblings, mDropShadow;
123
  bool          mListenForResizes;
124
  bool          mUnicode;
125
  bool          mRTL;
126
  bool          mNoAutoHide; // true for noautohide panels
127
  bool          mIsDragPopup;  // true for drag feedback panels
128
  // true if window creation animation is suppressed, e.g. for session restore
129
  bool          mIsAnimationSuppressed;
130
  // true if the window should support an alpha channel, if available.
131
  bool          mSupportTranslucency;
132
  // true if the window should be transparent to mouse events. Currently this is
133
  // only valid for eWindowType_popup widgets
134
  bool          mMouseTransparent;
135
  bool          mHasRemoteContent;
136
};
137
138
#endif // nsWidgetInitData_h__