From 1b001d1b180535ce247b5ebd9d38435384ddf787 Mon Sep 17 00:00:00 2001 From: Asher Gomez Date: Wed, 4 Jan 2023 07:50:14 +1100 Subject: fix(permissions): process `URL` in `Deno.FfiPermissionDescriptor.path` for `revoke()` and `request()` (#17094) Previously, `Deno.permissions.[revoke|request]()` wouldn't correctly process the `path: URL` when `name` was `ffi`. This change fixes that behaviour and adds a new function, `formDescriptor()`, to ensure `URL` arguments are consistently handled across `Deno.permissions.[query|revoke|request]()`. --- runtime/js/10_permissions.js | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'runtime/js') diff --git a/runtime/js/10_permissions.js b/runtime/js/10_permissions.js index d6ab33dcf..c2ce6cef0 100644 --- a/runtime/js/10_permissions.js +++ b/runtime/js/10_permissions.js @@ -161,6 +161,20 @@ ArrayPrototypeIncludes(permissionNames, desc.name); } + /** + * @param {Deno.PermissionDescriptor} desc + * @returns {desc is Deno.PermissionDescriptor} + */ + function formDescriptor(desc) { + if ( + desc.name === "read" || desc.name === "write" || desc.name === "ffi" + ) { + desc.path = pathFromURL(desc.path); + } else if (desc.name === "run") { + desc.command = pathFromURL(desc.command); + } + } + class Permissions { constructor(key = null) { if (key != illegalConstructorKey) { @@ -177,13 +191,7 @@ ); } - if ( - desc.name === "read" || desc.name === "write" || desc.name === "ffi" - ) { - desc.path = pathFromURL(desc.path); - } else if (desc.name === "run") { - desc.command = pathFromURL(desc.command); - } + formDescriptor(desc); const state = opQuery(desc); return PromiseResolve(cache(desc, state)); @@ -198,11 +206,7 @@ ); } - if (desc.name === "read" || desc.name === "write") { - desc.path = pathFromURL(desc.path); - } else if (desc.name === "run") { - desc.command = pathFromURL(desc.command); - } + formDescriptor(desc); const state = opRevoke(desc); return PromiseResolve(cache(desc, state)); @@ -217,11 +221,7 @@ ); } - if (desc.name === "read" || desc.name === "write") { - desc.path = pathFromURL(desc.path); - } else if (desc.name === "run") { - desc.command = pathFromURL(desc.command); - } + formDescriptor(desc); const state = opRequest(desc); return PromiseResolve(cache(desc, state)); -- cgit v1.2.3