Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
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 file,
4 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef mozilla_hal_Types_h
7 #define mozilla_hal_Types_h
9 #include "ipc/IPCMessageUtils.h"
10 #include "mozilla/Observer.h"
12 namespace mozilla {
13 namespace hal {
15 /**
16 * These constants specify special values for content process IDs. You can get
17 * a content process ID by calling ContentChild::GetID() or
18 * ContentParent::GetChildID().
19 */
20 const uint64_t CONTENT_PROCESS_ID_UNKNOWN = uint64_t(-1);
21 const uint64_t CONTENT_PROCESS_ID_MAIN = 0;
23 /**
24 * These are defined by libhardware, specifically, hardware/libhardware/include/hardware/lights.h
25 * in the gonk subsystem.
26 * If these change and are exposed to JS, make sure nsIHal.idl is updated as well.
27 */
28 enum LightType {
29 eHalLightID_Backlight = 0,
30 eHalLightID_Keyboard = 1,
31 eHalLightID_Buttons = 2,
32 eHalLightID_Battery = 3,
33 eHalLightID_Notifications = 4,
34 eHalLightID_Attention = 5,
35 eHalLightID_Bluetooth = 6,
36 eHalLightID_Wifi = 7,
37 eHalLightID_Count = 8 // This should stay at the end
38 };
39 enum LightMode {
40 eHalLightMode_User = 0, // brightness is managed by user setting
41 eHalLightMode_Sensor = 1, // brightness is managed by a light sensor
42 eHalLightMode_Count
43 };
44 enum FlashMode {
45 eHalLightFlash_None = 0,
46 eHalLightFlash_Timed = 1, // timed flashing. Use flashOnMS and flashOffMS for timing
47 eHalLightFlash_Hardware = 2, // hardware assisted flashing
48 eHalLightFlash_Count
49 };
51 enum ShutdownMode {
52 eHalShutdownMode_Unknown = -1,
53 eHalShutdownMode_PowerOff = 0,
54 eHalShutdownMode_Reboot = 1,
55 eHalShutdownMode_Restart = 2,
56 eHalShutdownMode_Count = 3
57 };
59 class SwitchEvent;
61 enum SwitchDevice {
62 SWITCH_DEVICE_UNKNOWN = -1,
63 SWITCH_HEADPHONES,
64 SWITCH_USB,
65 NUM_SWITCH_DEVICE
66 };
68 enum SwitchState {
69 SWITCH_STATE_UNKNOWN = -1,
70 SWITCH_STATE_ON,
71 SWITCH_STATE_OFF,
72 SWITCH_STATE_HEADSET, // Headphone with microphone
73 SWITCH_STATE_HEADPHONE, // without microphone
74 NUM_SWITCH_STATE
75 };
77 typedef Observer<SwitchEvent> SwitchObserver;
79 // Note that we rely on the order of this enum's entries. Higher priorities
80 // should have larger int values.
81 enum ProcessPriority {
82 PROCESS_PRIORITY_UNKNOWN = -1,
83 PROCESS_PRIORITY_BACKGROUND,
84 PROCESS_PRIORITY_BACKGROUND_HOMESCREEN,
85 PROCESS_PRIORITY_BACKGROUND_PERCEIVABLE,
86 PROCESS_PRIORITY_FOREGROUND_KEYBOARD,
87 // The special class for the preallocated process, high memory priority but
88 // low CPU priority.
89 PROCESS_PRIORITY_PREALLOC,
90 // Any priority greater than or equal to FOREGROUND is considered
91 // "foreground" for the purposes of priority testing, for example
92 // CurrentProcessIsForeground().
93 PROCESS_PRIORITY_FOREGROUND,
94 PROCESS_PRIORITY_FOREGROUND_HIGH,
95 PROCESS_PRIORITY_MASTER,
96 NUM_PROCESS_PRIORITY
97 };
99 enum ProcessCPUPriority {
100 PROCESS_CPU_PRIORITY_LOW,
101 PROCESS_CPU_PRIORITY_NORMAL,
102 NUM_PROCESS_CPU_PRIORITY
103 };
105 // Convert a ProcessPriority enum value (with an optional ProcessCPUPriority)
106 // to a string. The strings returned by this function are statically
107 // allocated; do not attempt to free one!
108 //
109 // If you pass an unknown process priority (or NUM_PROCESS_PRIORITY), we
110 // fatally assert in debug builds and otherwise return "???".
111 const char*
112 ProcessPriorityToString(ProcessPriority aPriority);
114 const char*
115 ProcessPriorityToString(ProcessPriority aPriority,
116 ProcessCPUPriority aCPUPriority);
118 /**
119 * Used by ModifyWakeLock
120 */
121 enum WakeLockControl {
122 WAKE_LOCK_REMOVE_ONE = -1,
123 WAKE_LOCK_NO_CHANGE = 0,
124 WAKE_LOCK_ADD_ONE = 1,
125 NUM_WAKE_LOCK
126 };
128 class FMRadioOperationInformation;
130 enum FMRadioOperation {
131 FM_RADIO_OPERATION_UNKNOWN = -1,
132 FM_RADIO_OPERATION_ENABLE,
133 FM_RADIO_OPERATION_DISABLE,
134 FM_RADIO_OPERATION_SEEK,
135 FM_RADIO_OPERATION_TUNE,
136 NUM_FM_RADIO_OPERATION
137 };
139 enum FMRadioOperationStatus {
140 FM_RADIO_OPERATION_STATUS_UNKNOWN = -1,
141 FM_RADIO_OPERATION_STATUS_SUCCESS,
142 FM_RADIO_OPERATION_STATUS_FAIL,
143 NUM_FM_RADIO_OPERATION_STATUS
144 };
146 enum FMRadioSeekDirection {
147 FM_RADIO_SEEK_DIRECTION_UNKNOWN = -1,
148 FM_RADIO_SEEK_DIRECTION_UP,
149 FM_RADIO_SEEK_DIRECTION_DOWN,
150 NUM_FM_RADIO_SEEK_DIRECTION
151 };
153 enum FMRadioCountry {
154 FM_RADIO_COUNTRY_UNKNOWN = -1,
155 FM_RADIO_COUNTRY_US, //USA
156 FM_RADIO_COUNTRY_EU,
157 FM_RADIO_COUNTRY_JP_STANDARD,
158 FM_RADIO_COUNTRY_JP_WIDE,
159 FM_RADIO_COUNTRY_DE, //Germany
160 FM_RADIO_COUNTRY_AW, //Aruba
161 FM_RADIO_COUNTRY_AU, //Australlia
162 FM_RADIO_COUNTRY_BS, //Bahamas
163 FM_RADIO_COUNTRY_BD, //Bangladesh
164 FM_RADIO_COUNTRY_CY, //Cyprus
165 FM_RADIO_COUNTRY_VA, //Vatican
166 FM_RADIO_COUNTRY_CO, //Colombia
167 FM_RADIO_COUNTRY_KR, //Korea
168 FM_RADIO_COUNTRY_DK, //Denmark
169 FM_RADIO_COUNTRY_EC, //Ecuador
170 FM_RADIO_COUNTRY_ES, //Spain
171 FM_RADIO_COUNTRY_FI, //Finland
172 FM_RADIO_COUNTRY_FR, //France
173 FM_RADIO_COUNTRY_GM, //Gambia
174 FM_RADIO_COUNTRY_HU, //Hungary
175 FM_RADIO_COUNTRY_IN, //India
176 FM_RADIO_COUNTRY_IR, //Iran
177 FM_RADIO_COUNTRY_IT, //Italy
178 FM_RADIO_COUNTRY_KW, //Kuwait
179 FM_RADIO_COUNTRY_LT, //Lithuania
180 FM_RADIO_COUNTRY_ML, //Mali
181 FM_RADIO_COUNTRY_MA, //Morocco
182 FM_RADIO_COUNTRY_NO, //Norway
183 FM_RADIO_COUNTRY_NZ, //New Zealand
184 FM_RADIO_COUNTRY_OM, //Oman
185 FM_RADIO_COUNTRY_PG, //Papua New Guinea
186 FM_RADIO_COUNTRY_NL, //Netherlands
187 FM_RADIO_COUNTRY_QA, //Qatar
188 FM_RADIO_COUNTRY_CZ, //Czech Republic
189 FM_RADIO_COUNTRY_UK, //United Kingdom of Great Britain and Northern Ireland
190 FM_RADIO_COUNTRY_RW, //Rwandese Republic
191 FM_RADIO_COUNTRY_SN, //Senegal
192 FM_RADIO_COUNTRY_SG, //Singapore
193 FM_RADIO_COUNTRY_SI, //Slovenia
194 FM_RADIO_COUNTRY_ZA, //South Africa
195 FM_RADIO_COUNTRY_SE, //Sweden
196 FM_RADIO_COUNTRY_CH, //Switzerland
197 FM_RADIO_COUNTRY_TW, //Taiwan
198 FM_RADIO_COUNTRY_TR, //Turkey
199 FM_RADIO_COUNTRY_UA, //Ukraine
200 FM_RADIO_COUNTRY_USER_DEFINED,
201 NUM_FM_RADIO_COUNTRY
202 };
204 typedef Observer<FMRadioOperationInformation> FMRadioObserver;
205 } // namespace hal
206 } // namespace mozilla
208 namespace IPC {
210 /**
211 * Light type serializer.
212 */
213 template <>
214 struct ParamTraits<mozilla::hal::LightType>
215 : public ContiguousEnumSerializer<
216 mozilla::hal::LightType,
217 mozilla::hal::eHalLightID_Backlight,
218 mozilla::hal::eHalLightID_Count>
219 {};
221 /**
222 * Light mode serializer.
223 */
224 template <>
225 struct ParamTraits<mozilla::hal::LightMode>
226 : public ContiguousEnumSerializer<
227 mozilla::hal::LightMode,
228 mozilla::hal::eHalLightMode_User,
229 mozilla::hal::eHalLightMode_Count>
230 {};
232 /**
233 * Flash mode serializer.
234 */
235 template <>
236 struct ParamTraits<mozilla::hal::FlashMode>
237 : public ContiguousEnumSerializer<
238 mozilla::hal::FlashMode,
239 mozilla::hal::eHalLightFlash_None,
240 mozilla::hal::eHalLightFlash_Count>
241 {};
243 /**
244 * Serializer for ShutdownMode.
245 */
246 template <>
247 struct ParamTraits<mozilla::hal::ShutdownMode>
248 : public ContiguousEnumSerializer<
249 mozilla::hal::ShutdownMode,
250 mozilla::hal::eHalShutdownMode_Unknown,
251 mozilla::hal::eHalShutdownMode_Count>
252 {};
254 /**
255 * WakeLockControl serializer.
256 */
257 template <>
258 struct ParamTraits<mozilla::hal::WakeLockControl>
259 : public ContiguousEnumSerializer<
260 mozilla::hal::WakeLockControl,
261 mozilla::hal::WAKE_LOCK_REMOVE_ONE,
262 mozilla::hal::NUM_WAKE_LOCK>
263 {};
265 /**
266 * Serializer for SwitchState
267 */
268 template <>
269 struct ParamTraits<mozilla::hal::SwitchState>:
270 public ContiguousEnumSerializer<
271 mozilla::hal::SwitchState,
272 mozilla::hal::SWITCH_STATE_UNKNOWN,
273 mozilla::hal::NUM_SWITCH_STATE> {
274 };
276 /**
277 * Serializer for SwitchDevice
278 */
279 template <>
280 struct ParamTraits<mozilla::hal::SwitchDevice>:
281 public ContiguousEnumSerializer<
282 mozilla::hal::SwitchDevice,
283 mozilla::hal::SWITCH_DEVICE_UNKNOWN,
284 mozilla::hal::NUM_SWITCH_DEVICE> {
285 };
287 template <>
288 struct ParamTraits<mozilla::hal::ProcessPriority>:
289 public ContiguousEnumSerializer<
290 mozilla::hal::ProcessPriority,
291 mozilla::hal::PROCESS_PRIORITY_UNKNOWN,
292 mozilla::hal::NUM_PROCESS_PRIORITY> {
293 };
295 /**
296 * Serializer for FMRadioOperation
297 */
298 template <>
299 struct ParamTraits<mozilla::hal::FMRadioOperation>:
300 public ContiguousEnumSerializer<
301 mozilla::hal::FMRadioOperation,
302 mozilla::hal::FM_RADIO_OPERATION_UNKNOWN,
303 mozilla::hal::NUM_FM_RADIO_OPERATION>
304 {};
306 /**
307 * Serializer for FMRadioOperationStatus
308 */
309 template <>
310 struct ParamTraits<mozilla::hal::FMRadioOperationStatus>:
311 public ContiguousEnumSerializer<
312 mozilla::hal::FMRadioOperationStatus,
313 mozilla::hal::FM_RADIO_OPERATION_STATUS_UNKNOWN,
314 mozilla::hal::NUM_FM_RADIO_OPERATION_STATUS>
315 {};
317 /**
318 * Serializer for FMRadioSeekDirection
319 */
320 template <>
321 struct ParamTraits<mozilla::hal::FMRadioSeekDirection>:
322 public ContiguousEnumSerializer<
323 mozilla::hal::FMRadioSeekDirection,
324 mozilla::hal::FM_RADIO_SEEK_DIRECTION_UNKNOWN,
325 mozilla::hal::NUM_FM_RADIO_SEEK_DIRECTION>
326 {};
328 /**
329 * Serializer for FMRadioCountry
330 **/
331 template <>
332 struct ParamTraits<mozilla::hal::FMRadioCountry>:
333 public ContiguousEnumSerializer<
334 mozilla::hal::FMRadioCountry,
335 mozilla::hal::FM_RADIO_COUNTRY_UNKNOWN,
336 mozilla::hal::NUM_FM_RADIO_COUNTRY>
337 {};
339 } // namespace IPC
341 #endif // mozilla_hal_Types_h