| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <script src="../resources/js-test.js"></script> | |
| <script> | |
| description("Passes a User Gesture through postMessage() to a worker context; press any key, click, or tap to continue."); | |
| window.jsTestIsAsync = true; | |
| function runTest() { | |
| const mc = new MessageChannel(); | |
| const w = new Worker("worker-user-gesture.js"); | |
| w.postMessage('hello worker'); | |
| w.onmessage = event => { | |
| if (window.internals) { | |
| if (internals.isProcessingUserGesture()) | |
| testPassed('User Gesture was propagated through postMessage and back.'); | |
| else | |
| testFailed('User Gesture was not propagated through postMessage and back.') | |
| finishJSTest(); | |
| return; | |
| } | |
| navigator.clipboard.writeText(event.data).then(() => { | |
| testPassed('User Gesture was propagated through postMessage and back.') | |
| }).catch(e => { | |
| testFailed('User Gesture was not propagated through postMessage and back.') | |
| }).finally(finishJSTest); | |
| }; | |
| } | |
| window.addEventListener('load', event => { | |
| if (window.internals) | |
| internals.withUserGesture(runTest); | |
| else | |
| ['keypress', 'click', 'touchend'].forEach(eventName => window.addEventListener(eventName, runTest, {once: true})); | |
| }); | |
| </script> | |
| </head> | |
| <body> | |
| </body> | |
| </html> |