"use strict"; promise_test(async (t) => { await promise_rejects_js( t, TypeError, navigator.setAppBadge(-1), "Reject with TypeError if the value is negative", ); await promise_rejects_js( t, TypeError, navigator.setAppBadge(Number.MAX_SAFE_INTEGER + 1), "Reject with TypeError if the value is larger than the maximum safe integer (2^53 - 1)", ); await promise_rejects_js( t, TypeError, navigator.setAppBadge(Infinity), "Reject with TypeError if the value is positive infinity", ); await promise_rejects_js( t, TypeError, navigator.setAppBadge(-Infinity), "Reject with TypeError if the value is negative infinity", ); await promise_rejects_js( t, TypeError, navigator.setAppBadge(NaN), "Reject with TypeError if the value is NaN", ); await promise_rejects_js( t, TypeError, navigator.setAppBadge("Foo"), "Reject with TypeError if the value cannot be converted to a long: string", ); await promise_rejects_js( t, TypeError, navigator.setAppBadge({}), "Reject with TypeError if the value cannot be converted to a long: object", ); await promise_rejects_js( t, TypeError, navigator.setAppBadge([]), "Reject with TypeError if the value cannot be converted to a long: array", ); }, "Test various invalid input cases for setAppBadge()"); promise_test(async () => { // Test sequential operations don't interfere await navigator.setAppBadge(1); await navigator.setAppBadge(5); await navigator.setAppBadge(0); await navigator.clearAppBadge(); await navigator.setAppBadge(); await navigator.clearAppBadge(); }, "Sequential badge operations work correctly");