import {BatteryMonitor, BatteryMonitorReceiver} from '/gen/services/device/public/mojom/battery_monitor.mojom.m.js';
class MockBatteryMonitor {
constructor() {
this.receiver_ = new BatteryMonitorReceiver(this);
this.interceptor_ =
new MojoInterfaceInterceptor(BatteryMonitor.$interfaceName);
this.interceptor_.oninterfacerequest = e =>
this.receiver_.$.bindHandle(e.handle);
this.reset();
}
start() {
this.interceptor_.start();
}
stop() {
this.interceptor_.stop();
}
reset() {
this.pendingRequests_ = [];
this.status_ = null;
this.lastKnownStatus_ = null;
}
queryNextStatus() {
const result = new Promise(resolve => this.pendingRequests_.push(resolve));
this.runCallbacks_();
return result;
}
setBatteryStatus(charging, chargingTime, dischargingTime, level) {
this.status_ = {charging, chargingTime, dischargingTime, level};
this.lastKnownStatus_ = this.status_;
this.runCallbacks_();
}
verifyBatteryStatus(manager) {
assert_not_equals(manager, undefined);
assert_not_equals(this.lastKnownStatus_, null);
assert_equals(manager.charging, this.lastKnownStatus_.charging);
assert_equals(manager.chargingTime, this.lastKnownStatus_.chargingTime);
assert_equals(
manager.dischargingTime, this.lastKnownStatus_.dischargingTime);
assert_equals(manager.level, this.lastKnownStatus_.level);
}
runCallbacks_() {
if (!this.status_ || !this.pendingRequests_.length)
return;
let result = {status: this.status_};
while (this.pendingRequests_.length) {
this.pendingRequests_.pop()(result);
}
this.status_ = null;
}
}
export const mockBatteryMonitor = new MockBatteryMonitor();