fix some serviceworker methods

This commit is contained in:
velzie 2024-08-09 22:48:13 -04:00
parent 243028483e
commit a8d2784e80
No known key found for this signature in database
GPG key ID: 048413F95F0DDE1F
2 changed files with 23 additions and 0 deletions

View file

@ -11,6 +11,8 @@ export default function (client: ScramjetClient) {
const realwin = ctx.fn.apply(ctx.this, ctx.args); const realwin = ctx.fn.apply(ctx.this, ctx.args);
if (!realwin) return ctx.return(realwin);
if (ScramjetClient.SCRAMJET in realwin.self) { if (ScramjetClient.SCRAMJET in realwin.self) {
return ctx.return(realwin.self[ScramjetClient.SCRAMJET].windowProxy); return ctx.return(realwin.self[ScramjetClient.SCRAMJET].windowProxy);
} else { } else {

View file

@ -38,6 +38,24 @@ export default function (client: ScramjetClient, self: Self) {
}, },
}); });
client.Proxy("navigator.serviceWorker.getRegistrations", {
apply(ctx) {
ctx.return(new Promise((resolve) => resolve([registration])));
},
});
client.Trap("navigator.serviceWorker.ready", {
get(ctx) {
return new Promise((resolve) => resolve(registration));
},
});
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;
@ -77,6 +95,9 @@ export default function (client: ScramjetClient, self: Self) {
if (prop === "scope") { if (prop === "scope") {
return ctx.args[0]; return ctx.args[0];
} }
if (prop === "unregister") {
return () => {};
}
if (prop === "addEventListener") { if (prop === "addEventListener") {
return () => {}; return () => {};