<!DOCTYPE html>
<html>
<body>
<script src="../resources/js-test.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/services/device/public/interfaces/battery_monitor.mojom.js"></script>
<script src="resources/mock-battery-monitor.js"></script>
<script>
description("Test battery status API with multiple promises after resolve.");

if (!window.testRunner)
    debug('This test cannot be run without the TestRunner');

// Clean-up any unused battery manager objects from previous tests.
gc();
jsTestIsAsync = true;
testRunner.waitUntilDone();

var promise1;

function batteryStatusSuccess(battery) {
    debug('resolution number 1');
    testIfBatteryStatusIsUpToDate(battery);

    promise2 = navigator.getBattery();
    promise2.then(
        function(battery) {
            debug('resolution number 2');
            testIfBatteryStatusIsUpToDate(battery);
            setTimeout(finishJSTest, 0);
        }, batteryStatusFailure);
    shouldBeTrue('promise1 === promise2');
}

promise1 = navigator.getBattery();
promise1.then(batteryStatusSuccess, batteryStatusFailure);
setAndFireMockBatteryInfo(false, 10, 20, 0.5);
</script>
</body>
</html>
