This commit is contained in:
velzie 2024-10-13 14:44:12 -04:00
commit fd420cfda7
No known key found for this signature in database
GPG key ID: AA51AEFB0A1F3820

View file

@ -13,6 +13,10 @@ export const enabled = (client: ScramjetClient) =>
export function disabled(_client: ScramjetClient, _self: Self) { export function disabled(_client: ScramjetClient, _self: Self) {
Reflect.deleteProperty(Navigator.prototype, "serviceWorker"); Reflect.deleteProperty(Navigator.prototype, "serviceWorker");
} }
let realPostMessage;
if (self.ServiceWorker) {
realPostMessage = ServiceWorker.prototype.postMessage;
}
export default function (client: ScramjetClient, _self: Self) { export default function (client: ScramjetClient, _self: Self) {
let registration; let registration;
@ -55,12 +59,6 @@ export default function (client: ScramjetClient, _self: Self) {
}, },
}); });
client.Trap("navigator.serviceWorker.controller", {
get(_ctx) {
return registration?.active;
},
});
client.Proxy("navigator.serviceWorker.register", { client.Proxy("navigator.serviceWorker.register", {
apply(ctx) { apply(ctx) {
if (ctx.args[0] instanceof URL) ctx.args[0] = ctx.args[0].href; if (ctx.args[0] instanceof URL) ctx.args[0] = ctx.args[0].href;
@ -69,11 +67,13 @@ export default function (client: ScramjetClient, _self: Self) {
url += "&type=module"; url += "&type=module";
} }
const worker = new SharedWorker(url); const nativeSharedWorker = client.natives["SharedWorker"];
const worker = new nativeSharedWorker(url);
const handle = worker.port; const handle = worker.port;
client.serviceWorker.controller.postMessage( realPostMessage.call(
client.serviceWorker.controller,
{ {
scramjet$type: "registerServiceWorker", scramjet$type: "registerServiceWorker",
port: handle, port: handle,