mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
94 lines
2.5 KiB
JavaScript
94 lines
2.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
MARIONETTE_TIMEOUT = 10000;
|
|
|
|
let battery = window.navigator.battery;
|
|
let fromStatus = "unknown";
|
|
let fromCharging = false;
|
|
|
|
function verifyInitialState() {
|
|
ok(battery, "battery");
|
|
ok(battery.charging, "battery.charging");
|
|
runEmulatorCmd("power display", function (result) {
|
|
is(result.pop(), "OK", "power display successful");
|
|
ok(result.indexOf("status: Charging") !== -1, "power status charging");
|
|
setUp();
|
|
});
|
|
}
|
|
|
|
function unexpectedEvent(event) {
|
|
ok(false, "Unexpected " + event.type + " event");
|
|
}
|
|
|
|
function setUp() {
|
|
battery.onchargingchange = function () {
|
|
battery.onchargingchange = unexpectedEvent;
|
|
toCharging();
|
|
};
|
|
battery.onlevelchange = unexpectedEvent;
|
|
log("Changing power status to " + fromStatus);
|
|
runEmulatorCmd("power status " + fromStatus);
|
|
}
|
|
|
|
function resetStatus(charging, nextFunction) {
|
|
log("Resetting power status to " + fromStatus);
|
|
if (charging !== fromCharging) {
|
|
battery.onchargingchange = function () {
|
|
battery.onchargingchange = unexpectedEvent;
|
|
nextFunction();
|
|
};
|
|
runEmulatorCmd("power status " + fromStatus);
|
|
}
|
|
else {
|
|
runEmulatorCmd("power status " + fromStatus, nextFunction);
|
|
}
|
|
}
|
|
|
|
function changeStatus(toStatus, toCharging, nextFunction) {
|
|
log("Changing power status to " + toStatus);
|
|
if (fromCharging !== toCharging) {
|
|
battery.onchargingchange = function (event) {
|
|
battery.onchargingchange = unexpectedEvent;
|
|
is(event.type, "chargingchange", "event type");
|
|
is(battery.charging, toCharging, "battery.charging");
|
|
resetStatus(toCharging, nextFunction);
|
|
};
|
|
runEmulatorCmd("power status " + toStatus);
|
|
}
|
|
else {
|
|
runEmulatorCmd("power status " + toStatus, function () {
|
|
is(battery.charging, toCharging, "battery.charging");
|
|
resetStatus(toCharging, nextFunction);
|
|
});
|
|
}
|
|
}
|
|
|
|
function toCharging() {
|
|
changeStatus("charging", true, toDischarging);
|
|
}
|
|
|
|
function toDischarging() {
|
|
changeStatus("discharging", false, toFull);
|
|
}
|
|
|
|
function toFull() {
|
|
changeStatus("full", true, toNotCharging);
|
|
}
|
|
|
|
function toNotCharging() {
|
|
changeStatus("not-charging", false, cleanUp);
|
|
}
|
|
|
|
function cleanUp() {
|
|
battery.onchargingchange = function () {
|
|
battery.onchargingchange = null;
|
|
finish();
|
|
};
|
|
battery.onlevelchange = null;
|
|
log("Resetting power status to charging");
|
|
runEmulatorCmd("power status charging");
|
|
}
|
|
|
|
verifyInitialState();
|