michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: MARIONETTE_TIMEOUT = 10000; michael@0: michael@0: let battery = window.navigator.battery; michael@0: michael@0: function verifyInitialState() { michael@0: ok(battery, "battery"); michael@0: is(battery.level, 0.5, "battery.level"); michael@0: runEmulatorCmd("power display", function (result) { michael@0: is(result.pop(), "OK", "power display successful"); michael@0: ok(result.indexOf("capacity: 50") !== -1, "power capacity"); michael@0: setUp(); michael@0: }); michael@0: } michael@0: michael@0: function unexpectedEvent(event) { michael@0: ok(false, "Unexpected " + event.type + " event"); michael@0: } michael@0: michael@0: function setUp() { michael@0: battery.onchargingchange = unexpectedEvent; michael@0: battery.onlevelchange = unexpectedEvent; michael@0: levelUp(); michael@0: } michael@0: michael@0: function changeCapacity(capacity, changeExpected, nextFunction) { michael@0: log("Changing power capacity to " + capacity); michael@0: if (changeExpected) { michael@0: battery.onlevelchange = function (event) { michael@0: battery.onlevelchange = unexpectedEvent; michael@0: is(event.type, "levelchange", "event.type"); michael@0: is(battery.level, capacity / 100, "battery.level"); michael@0: nextFunction(); michael@0: }; michael@0: runEmulatorCmd("power capacity " + capacity); michael@0: } michael@0: else { michael@0: runEmulatorCmd("power capacity " + capacity, function () { michael@0: is(battery.level, capacity / 100, "battery.level"); michael@0: nextFunction(); michael@0: }); michael@0: } michael@0: } michael@0: michael@0: function levelUp() { michael@0: changeCapacity("90", true, levelDown); michael@0: } michael@0: michael@0: function levelDown() { michael@0: changeCapacity("10", true, levelSame); michael@0: } michael@0: michael@0: function levelSame() { michael@0: changeCapacity("10", false, cleanUp); michael@0: } michael@0: michael@0: function cleanUp() { michael@0: battery.onchargingchange = null; michael@0: battery.onlevelchange = function () { michael@0: battery.onlevelchange = null; michael@0: finish(); michael@0: }; michael@0: runEmulatorCmd("power capacity 50"); michael@0: } michael@0: michael@0: verifyInitialState();