summaryrefslogtreecommitdiffstats
path: root/hal/sandbox/PHal.ipdl
blob: 1af550aff408a09bde1583154a49b613b9f0fc41 (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
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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 protocol PContent;
include protocol PBrowser;

include "mozilla/GfxMessageUtils.h";

using mozilla::dom::ScreenOrientationInternal from "mozilla/dom/ScreenOrientation.h";
using mozilla::hal::SensorType from "mozilla/HalSensor.h";
using mozilla::hal::SensorAccuracyType from "mozilla/HalSensor.h";
using mozilla::hal::WakeLockControl from "mozilla/HalTypes.h";
using mozilla::hal::ProcessPriority from "mozilla/HalTypes.h";
using nsIntRect from "nsRect.h";
using PRTime from "prtime.h";

namespace mozilla {

namespace hal {
struct BatteryInformation {
  double level;
  bool   charging;
  double remainingTime;
};

struct SensorData {
  SensorType sensor;
  PRTime timestamp;
  float[] values;
  SensorAccuracyType accuracy;
};

struct NetworkInformation {
  uint32_t type;
  bool   isWifi;
  uint32_t dhcpGateway;
};

struct WakeLockInformation {
  nsString topic;
  uint32_t numLocks;
  uint32_t numHidden;
  uint64_t[] lockingProcesses;
};

struct ScreenConfiguration {
  nsIntRect rect;
  ScreenOrientationInternal orientation;
  uint16_t angle;
  uint32_t colorDepth;
  uint32_t pixelDepth;
};

struct SystemTimezoneChangeInformation {
  // These timezone offsets are relative to UTC in minutes and
  // have already taken daylight saving time (DST) into account.
  int32_t oldTimezoneOffsetMinutes;
  int32_t newTimezoneOffsetMinutes;
};

} // namespace hal

namespace hal_sandbox {

nested(upto inside_cpow) sync protocol PHal {
    manager PContent;

child:
    async NotifyBatteryChange(BatteryInformation aBatteryInfo);
    async NotifyNetworkChange(NetworkInformation aNetworkInfo);
    async NotifyWakeLockChange(WakeLockInformation aWakeLockInfo);
    async NotifyScreenConfigurationChange(ScreenConfiguration aScreenOrientation);
    async NotifySystemClockChange(int64_t aClockDeltaMS); 
    async NotifySystemTimezoneChange(SystemTimezoneChangeInformation aSystemTimezoneChangeInfo); 

parent:
    async Vibrate(uint32_t[] pattern, uint64_t[] id, PBrowser browser);
    async CancelVibrate(uint64_t[] id, PBrowser browser);

    async EnableBatteryNotifications();
    async DisableBatteryNotifications();
    sync GetCurrentBatteryInformation()
      returns (BatteryInformation aBatteryInfo);

    async EnableNetworkNotifications();
    async DisableNetworkNotifications();
    sync GetCurrentNetworkInformation()
      returns (NetworkInformation aNetworkInfo);

    sync GetScreenEnabled() returns (bool enabled);
    async SetScreenEnabled(bool aEnabled);

    sync GetKeyLightEnabled() returns (bool enabled);
    async SetKeyLightEnabled(bool aEnabled);

    sync GetCpuSleepAllowed() returns (bool allowed);
    async SetCpuSleepAllowed(bool aAllowed);

    sync GetScreenBrightness() returns (double brightness);
    async SetScreenBrightness(double aBrightness);

    async AdjustSystemClock(int64_t aDeltaMilliseconds);
    async SetTimezone(nsCString aTimezoneSpec);
    sync GetTimezone()
      returns (nsCString aTimezoneSpec);
    sync GetTimezoneOffset()
      returns (int32_t aTimezoneOffset);
    async EnableSystemClockChangeNotifications();
    async DisableSystemClockChangeNotifications();
    async EnableSystemTimezoneChangeNotifications();
    async DisableSystemTimezoneChangeNotifications();

    async ModifyWakeLock(nsString aTopic,
                         WakeLockControl aLockAdjust,
                         WakeLockControl aHiddenAdjust,
                         uint64_t aProcessID);
    async EnableWakeLockNotifications();
    async DisableWakeLockNotifications();
    sync GetWakeLockInfo(nsString aTopic)
      returns (WakeLockInformation aWakeLockInfo);

    async EnableScreenConfigurationNotifications();
    async DisableScreenConfigurationNotifications();
    nested(inside_cpow) sync GetCurrentScreenConfiguration()
      returns (ScreenConfiguration aScreenConfiguration);
    sync LockScreenOrientation(ScreenOrientationInternal aOrientation)
      returns (bool allowed);
    async UnlockScreenOrientation();
 
    async FactoryReset(nsString aReason);

child:
    async NotifySensorChange(SensorData aSensorData);

parent:
    async EnableSensorNotifications(SensorType aSensor);
    async DisableSensorNotifications(SensorType aSensor);

    async __delete__();
};

} // namespace hal
} // namespace mozilla