| <!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> |