| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <link rel="help" href="https://github.com/w3c/web-share/pull/113" /> | |
| <title>WebShare Test: only one share at a time</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> | |
| </head> | |
| <body> | |
| <button> | |
| <script> | |
| setup({ allow_uncaught_exception:true }); | |
| promise_test(async t => { | |
| const button = document.querySelector("button"); | |
| const p = new Promise(r => { | |
| button.onclick = () => { | |
| const promises = []; | |
| promises.push( | |
| navigator.share({ title: "should be pending" }), | |
| navigator.share({ title: "should reject" }), | |
| navigator.share({ title: "should also reject" }) | |
| ); | |
| r(promises); | |
| }; | |
| }); | |
| test_driver.click(button); | |
| const [, promise2, promise3] = await p; | |
| await Promise.all([ | |
| promise_rejects_dom(t, "InvalidStateError", promise2), | |
| promise_rejects_dom(t, "InvalidStateError", promise3) | |
| ]); | |
| }, "Only allow one share call at a time, which is controlled by the [[sharePromise]] internal slot."); | |
| </script> | |
| </body> | |
| </html> |