| <!doctype html> | |
| <meta charset=utf-8> | |
| <title>Test PermissionStatus's name attribute.</title> | |
| <script src=/resources/testharness.js></script> | |
| <script src=/resources/testharnessreport.js></script> | |
| <script src="/resources/testdriver.js"></script> | |
| <script src="/resources/testdriver-vendor.js"></script> | |
| <script src="/common/gc.js"></script> | |
| <script> | |
| promise_test(async () => { | |
| const { state: initialState } = await navigator.permissions.query({ | |
| name: "geolocation", | |
| }); | |
| const pass = new Promise(async (resolve) => { | |
| let status = await navigator.permissions.query({ | |
| name: "geolocation", | |
| }); | |
| status.addEventListener("change", resolve, { once: true }); | |
| status = null; | |
| await garbageCollect(); | |
| // Will cause change event to be dispatched. | |
| await test_driver.set_permission({ name: "geolocation" }, "granted"); | |
| }); | |
| // Wait for the change event to be dispatched. | |
| await pass; | |
| // Reset the permission to its default value. | |
| await test_driver.set_permission({ name: "geolocation" }, initialState); | |
| }, "status is not garbage collected when it goes out of scope"); | |
| </script> |