wakelock-onrelease.https.html (1835B)
1 <!DOCTYPE html> 2 <link rel="help" href="https://w3c.github.io/screen-wake-lock/#the-onrelease-attribute"> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="/resources/testdriver.js"></script> 6 <script src="/resources/testdriver-vendor.js"></script> 7 <script> 8 promise_test(async t => { 9 await test_driver.set_permission({name: 'screen-wake-lock'}, 'granted'); 10 11 const lock = await navigator.wakeLock.request("screen"); 12 return new Promise(resolve => { 13 lock.onrelease = resolve; 14 lock.release(); 15 }).then(ev => { 16 assert_class_string(ev, "Event", "release() must fire an Event object"); 17 assert_equals(ev.target, lock, "The event's target must be the lock that was acquired"); 18 assert_true(ev.isTrusted); 19 assert_false(ev.bubbles); 20 assert_false(ev.cancelable); 21 }); 22 }, "Test onreleased event's basic properties"); 23 24 promise_test(async t => { 25 await test_driver.set_permission({ name: 'screen-wake-lock' }, 'granted'); 26 27 const lock = await navigator.wakeLock.request("screen"); 28 29 let releaseFired = false; 30 lock.onrelease = t.step_func(() => { 31 releaseFired = true; 32 }); 33 34 const releasePromise = lock.release(); 35 assert_true(releaseFired, "The 'release' event fires immediately after release() is called"); 36 37 return releasePromise; 38 }, "Ensure onrelease is called before WakeLockSentinel.release() resolves"); 39 40 promise_test(async t => { 41 await test_driver.set_permission({ name: 'screen-wake-lock' }, 'granted'); 42 43 const lock = await navigator.wakeLock.request("screen"); 44 45 let eventCount = 0; 46 lock.onrelease = t.step_func(() => { 47 eventCount++; 48 }); 49 50 await lock.release(); 51 await lock.release(); 52 assert_equals(eventCount, 1, "The 'release' event was fired once"); 53 }, "Ensure onrelease is fired exactly once"); 54 </script>