Source code
Revision control
Copy as Markdown
Other Tools
<!doctype html>
<meta charset="utf-8">
Testing browser.test.onMessage event from
a page hosted on web-platform.test.
<script>
"use strict";
function send(detail) {
dispatchEvent(new CustomEvent("testMsg", { detail }));
}
function listener(message, data) {
send({ message, data });
}
window.subscribe = () => {
if (!window.browser) {
send({ error: "Missing browser namespace." });
return;
}
if (!window.browser.test?.onMessage?.addListener) {
send({ error: "Missing browser.test.onMessage.addListener." });
return;
}
browser.test.onMessage.addListener(listener);
// If other things don't resolve collection of messages, explicit timeout.
setTimeout(() => send({ error: "timeout" }), 5_000);
}
window.unsubscribe = () => {
browser.test.onMessage.removeListener(listener);
send({ done: "unsubscribed" });
}
</script>