summaryrefslogtreecommitdiffstats
path: root/xpcom/system/nsIXULRuntime.idl
blob: 994084c0a4f17bff592d450b2a1869a191f45acd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/* 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/. */

#include "nsISupports.idl"

%{C++

namespace mozilla {
// Simple C++ getter for nsIXULRuntime::browserTabsRemoteAutostart
// This getter is a temporary function that checks for special
// conditions in which e10s support is not great yet, and should
// therefore be disabled. Bug 1065561 tracks its removal.
bool BrowserTabsRemoteAutostart();
}

%}

/**
 * Provides information about the XUL runtime.
 * @status UNSTABLE - This interface is not frozen and will probably change in
 *                    future releases. If you need this functionality to be
 *                    stable/frozen, please contact Benjamin Smedberg.
 */

[scriptable, uuid(a1b2e167-b748-42bf-ba85-996ec39062b9)]
interface nsIXULRuntime : nsISupports
{
  /**
   * Whether the application was launched in safe mode.
   */
  readonly attribute boolean inSafeMode;

  /**
   * Whether to write console errors to a log file. If a component
   * encounters startup errors that might prevent the app from showing
   * proper UI, it should set this flag to "true".
   */
  attribute boolean logConsoleErrors;

  /**
   * A string tag identifying the current operating system. This is taken
   * from the OS_TARGET configure variable. It will always be available.
   */
  readonly attribute AUTF8String OS;

  /**
   * A string tag identifying the binary ABI of the current processor and
   * compiler vtable. This is taken from the TARGET_XPCOM_ABI configure
   * variable. It may not be available on all platforms, especially
   * unusual processor or compiler combinations.
   *
   * The result takes the form <processor>-<compilerABI>, for example:
   *   x86-msvc
   *   ppc-gcc3
   *
   * This value should almost always be used in combination with "OS".
   *
   * @throw NS_ERROR_NOT_AVAILABLE if not available.
   */
  readonly attribute AUTF8String XPCOMABI;

  /**
   * A string tag identifying the target widget toolkit in use.
   * This is taken from the MOZ_WIDGET_TOOLKIT configure variable.
   */
  readonly attribute AUTF8String widgetToolkit;

  /**
   * The legal values of processType.
   */
  const unsigned long PROCESS_TYPE_DEFAULT = 0;
  const unsigned long PROCESS_TYPE_PLUGIN = 1;
  const unsigned long PROCESS_TYPE_CONTENT = 2;
  const unsigned long PROCESS_TYPE_IPDLUNITTEST = 3;
  const unsigned long PROCESS_TYPE_GMPLUGIN = 4;
  const unsigned long PROCESS_TYPE_GPU = 5;

  /**
   * The type of the caller's process.  Returns one of the values above.
   */
  readonly attribute unsigned long processType;

  /**
   * The system process ID of the caller's process.
   */
  readonly attribute unsigned long processID;

  /**
   * A globally unique and non-recycled ID of the caller's process.
   */
  readonly attribute uint64_t uniqueProcessID;

  /**
   * If true, browser tabs may be opened by default in a different process
   * from the main browser UI.
   */
  readonly attribute boolean browserTabsRemoteAutostart;

  /**
   * A numeric value indicating whether multiprocess might be blocked.
   * Possible values can be found at nsAppRunner.cpp. A value of 0
   * represents not blocking.
   */
   readonly attribute unsigned long multiprocessBlockPolicy;

  /**
   * If true, the accessibility service is running.
   */
  readonly attribute boolean accessibilityEnabled;

  /**
   * Indicates whether the current Firefox build is 64-bit.
   */
  readonly attribute boolean is64Bit;

  /**
   * Signal the apprunner to invalidate caches on the next restart.
   * This will cause components to be autoregistered and all
   * fastload data to be re-created.
   */
  void invalidateCachesOnRestart();

  /**
   * Starts a child process. This method is intented to pre-start a
   * content child process so that when it is actually needed, it is
   * ready to go.
   *
   * @throw NS_ERROR_NOT_AVAILABLE if not available.
   */
  void ensureContentProcess();

  /**
   * Modification time of the profile lock before the profile was locked on
   * this startup. Used to know the last time the profile was used and not
   * closed cleanly. This is set to 0 if there was no existing profile lock.
   */
  readonly attribute PRTime replacedLockTime;

  /**
   * Local ID of the minidump generated when the process crashed
   * on the previous run. Can be passed directly to CrashSubmit.submit.
   */
  readonly attribute DOMString lastRunCrashID;

  /**
   * True if this is RELEASE_OR_BETA.
   */
  readonly attribute boolean isReleaseOrBeta;

  /**
   * True if this build uses official branding (MOZ_OFFICIAL_BRANDING).
   */
  readonly attribute boolean isOfficialBranding;

  /**
   * The default update channel (MOZ_UPDATE_CHANNEL).
   */
  readonly attribute AUTF8String defaultUpdateChannel;

  /**
   * The distribution ID for this build (MOZ_DISTRIBUTION_ID).
   */
  readonly attribute AUTF8String distributionID;

  /**
   * True if this is an official build (MC_OFFICIAL).
   */
  readonly attribute boolean isOfficial;

  /**
   * True if Windows DLL blocklist initialized correctly. This is
   * primarily for automated testing purposes.
   */
  readonly attribute boolean windowsDLLBlocklistStatus;
};