summaryrefslogtreecommitdiff
path: root/runtime/ops/worker_host.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-09-16 21:39:37 +0100
committerGitHub <noreply@github.com>2024-09-16 21:39:37 +0100
commit62e952559f600e72d7498c9b12f906cb0b1ba150 (patch)
tree6dbcce6592973358ef4bf6341888b0bbbdb98cc5 /runtime/ops/worker_host.rs
parente0b9c745c15720914f14996bf357d5b375e2dbd8 (diff)
refactor(permissions): split up Descriptor into Allow, Deny, and Query (#25508)
This makes the permission system more versatile.
Diffstat (limited to 'runtime/ops/worker_host.rs')
-rw-r--r--runtime/ops/worker_host.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/runtime/ops/worker_host.rs b/runtime/ops/worker_host.rs
index 19475fedf..3c0035645 100644
--- a/runtime/ops/worker_host.rs
+++ b/runtime/ops/worker_host.rs
@@ -19,6 +19,7 @@ use deno_core::ModuleSpecifier;
use deno_core::OpState;
use deno_permissions::create_child_permissions;
use deno_permissions::ChildPermissionsArg;
+use deno_permissions::PermissionDescriptorParser;
use deno_permissions::PermissionsContainer;
use deno_web::deserialize_js_transferables;
use deno_web::JsMessageData;
@@ -153,13 +154,19 @@ fn op_create_worker(
"Worker.deno.permissions",
);
}
+ let permission_desc_parser = state
+ .borrow::<Arc<dyn PermissionDescriptorParser>>()
+ .clone();
let parent_permissions = state.borrow_mut::<PermissionsContainer>();
let worker_permissions = if let Some(child_permissions_arg) = args.permissions
{
- let mut parent_permissions = parent_permissions.0.lock();
- let perms =
- create_child_permissions(&mut parent_permissions, child_permissions_arg)?;
- PermissionsContainer::new(perms)
+ let mut parent_permissions = parent_permissions.inner.lock();
+ let perms = create_child_permissions(
+ permission_desc_parser.as_ref(),
+ &mut parent_permissions,
+ child_permissions_arg,
+ )?;
+ PermissionsContainer::new(permission_desc_parser, perms)
} else {
parent_permissions.clone()
};