hal/HalTypes.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

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

mercurial