Skip to content

Commit

Permalink
feat: add powerMonitor.onBatteryPower (#26494)
Browse files Browse the repository at this point in the history
  • Loading branch information
nornagon committed Nov 17, 2020
1 parent 8594b55 commit a9924e1
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
15 changes: 15 additions & 0 deletions docs/api/power-monitor.md
Expand Up @@ -65,3 +65,18 @@ before considered idle. `locked` is available on supported systems only.
Returns `Integer` - Idle time in seconds

Calculate system idle time in seconds.

### `powerMonitor.isOnBatteryPower()`

Returns `Boolean` - Whether the system is on battery power.

To monitor for changes in this property, use the `on-battery` and `on-ac`
events.

## Properties

### `powerMonitor.onBatteryPower`

A `Boolean` property. True if the system is on battery power.

See [`powerMonitor.isOnBatteryPower()`](#powermonitorisonbatterypower).
11 changes: 10 additions & 1 deletion lib/browser/api/power-monitor.ts
Expand Up @@ -4,7 +4,8 @@ import { app } from 'electron/main';
const {
createPowerMonitor,
getSystemIdleState,
getSystemIdleTime
getSystemIdleTime,
isOnBatteryPower
} = process._linkedBinding('electron_browser_power_monitor');

class PowerMonitor extends EventEmitter {
Expand Down Expand Up @@ -45,6 +46,14 @@ class PowerMonitor extends EventEmitter {
getSystemIdleTime () {
return getSystemIdleTime();
}

isOnBatteryPower () {
return isOnBatteryPower();
}

get onBatteryPower () {
return this.isOnBatteryPower();
}
}

module.exports = new PowerMonitor();
5 changes: 5 additions & 0 deletions shell/browser/api/electron_api_power_monitor.cc
Expand Up @@ -136,6 +136,10 @@ int GetSystemIdleTime() {
return ui::CalculateIdleTime();
}

bool IsOnBatteryPower() {
return base::PowerMonitor::IsOnBatteryPower();
}

void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
Expand All @@ -147,6 +151,7 @@ void Initialize(v8::Local<v8::Object> exports,
dict.SetMethod("getSystemIdleState",
base::BindRepeating(&GetSystemIdleState));
dict.SetMethod("getSystemIdleTime", base::BindRepeating(&GetSystemIdleTime));
dict.SetMethod("isOnBatteryPower", base::BindRepeating(&IsOnBatteryPower));
}

} // namespace
Expand Down
9 changes: 8 additions & 1 deletion spec-main/api-power-monitor-spec.ts
Expand Up @@ -167,10 +167,17 @@ describe('powerMonitor', () => {
});

describe('powerMonitor.getSystemIdleTime', () => {
it('notify current system idle time', () => {
it('returns current system idle time', () => {
const idleTime = powerMonitor.getSystemIdleTime();
expect(idleTime).to.be.at.least(0);
});
});

describe('powerMonitor.onBatteryPower', () => {
it('returns a boolean', () => {
expect(powerMonitor.onBatteryPower).to.be.a('boolean');
expect(powerMonitor.isOnBatteryPower()).to.be.a('boolean');
});
});
});
});

0 comments on commit a9924e1

Please sign in to comment.