Skip to content

Commit a9924e1

Browse files
authored
feat: add powerMonitor.onBatteryPower (electron#26494)
1 parent 8594b55 commit a9924e1

File tree

4 files changed

+38
-2
lines changed

4 files changed

+38
-2
lines changed

docs/api/power-monitor.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,18 @@ before considered idle. `locked` is available on supported systems only.
6565
Returns `Integer` - Idle time in seconds
6666

6767
Calculate system idle time in seconds.
68+
69+
### `powerMonitor.isOnBatteryPower()`
70+
71+
Returns `Boolean` - Whether the system is on battery power.
72+
73+
To monitor for changes in this property, use the `on-battery` and `on-ac`
74+
events.
75+
76+
## Properties
77+
78+
### `powerMonitor.onBatteryPower`
79+
80+
A `Boolean` property. True if the system is on battery power.
81+
82+
See [`powerMonitor.isOnBatteryPower()`](#powermonitorisonbatterypower).

lib/browser/api/power-monitor.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { app } from 'electron/main';
44
const {
55
createPowerMonitor,
66
getSystemIdleState,
7-
getSystemIdleTime
7+
getSystemIdleTime,
8+
isOnBatteryPower
89
} = process._linkedBinding('electron_browser_power_monitor');
910

1011
class PowerMonitor extends EventEmitter {
@@ -45,6 +46,14 @@ class PowerMonitor extends EventEmitter {
4546
getSystemIdleTime () {
4647
return getSystemIdleTime();
4748
}
49+
50+
isOnBatteryPower () {
51+
return isOnBatteryPower();
52+
}
53+
54+
get onBatteryPower () {
55+
return this.isOnBatteryPower();
56+
}
4857
}
4958

5059
module.exports = new PowerMonitor();

shell/browser/api/electron_api_power_monitor.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ int GetSystemIdleTime() {
136136
return ui::CalculateIdleTime();
137137
}
138138

139+
bool IsOnBatteryPower() {
140+
return base::PowerMonitor::IsOnBatteryPower();
141+
}
142+
139143
void Initialize(v8::Local<v8::Object> exports,
140144
v8::Local<v8::Value> unused,
141145
v8::Local<v8::Context> context,
@@ -147,6 +151,7 @@ void Initialize(v8::Local<v8::Object> exports,
147151
dict.SetMethod("getSystemIdleState",
148152
base::BindRepeating(&GetSystemIdleState));
149153
dict.SetMethod("getSystemIdleTime", base::BindRepeating(&GetSystemIdleTime));
154+
dict.SetMethod("isOnBatteryPower", base::BindRepeating(&IsOnBatteryPower));
150155
}
151156

152157
} // namespace

spec-main/api-power-monitor-spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,17 @@ describe('powerMonitor', () => {
167167
});
168168

169169
describe('powerMonitor.getSystemIdleTime', () => {
170-
it('notify current system idle time', () => {
170+
it('returns current system idle time', () => {
171171
const idleTime = powerMonitor.getSystemIdleTime();
172172
expect(idleTime).to.be.at.least(0);
173173
});
174174
});
175+
176+
describe('powerMonitor.onBatteryPower', () => {
177+
it('returns a boolean', () => {
178+
expect(powerMonitor.onBatteryPower).to.be.a('boolean');
179+
expect(powerMonitor.isOnBatteryPower()).to.be.a('boolean');
180+
});
181+
});
175182
});
176183
});

0 commit comments

Comments
 (0)