From 212b7dd6da487c070229b6348ec7907b4fecbcf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 27 Sep 2022 22:36:33 +0200 Subject: feat: Add requesting API name to permission prompt (#15936) Co-authored-by: Leo Kettmeir --- ext/websocket/01_websocket.js | 2 ++ ext/websocket/02_websocketstream.js | 2 ++ ext/websocket/lib.rs | 12 +++++++++--- 3 files changed, 13 insertions(+), 3 deletions(-) (limited to 'ext/websocket') diff --git a/ext/websocket/01_websocket.js b/ext/websocket/01_websocket.js index bdb29526e..f7bd820c0 100644 --- a/ext/websocket/01_websocket.js +++ b/ext/websocket/01_websocket.js @@ -191,6 +191,7 @@ this[_url] = wsURL.href; ops.op_ws_check_permission_and_cancel_handle( + "WebSocket.abort()", this[_url], false, ); @@ -227,6 +228,7 @@ PromisePrototypeThen( core.opAsync( "op_ws_create", + "new WebSocket()", wsURL.href, ArrayPrototypeJoin(protocols, ", "), ), diff --git a/ext/websocket/02_websocketstream.js b/ext/websocket/02_websocketstream.js index cf83fe4c7..598816d05 100644 --- a/ext/websocket/02_websocketstream.js +++ b/ext/websocket/02_websocketstream.js @@ -133,6 +133,7 @@ } const cancelRid = ops.op_ws_check_permission_and_cancel_handle( + "WebSocketStream.abort()", this[_url], true, ); @@ -150,6 +151,7 @@ PromisePrototypeThen( core.opAsync( "op_ws_create", + "new WebSocketStream()", this[_url], options.protocols ? ArrayPrototypeJoin(options.protocols, ", ") diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs index fad217585..e8ada74a2 100644 --- a/ext/websocket/lib.rs +++ b/ext/websocket/lib.rs @@ -61,7 +61,11 @@ pub struct WsRootStore(pub Option); pub struct WsUserAgent(pub String); pub trait WebSocketPermissions { - fn check_net_url(&mut self, _url: &url::Url) -> Result<(), AnyError>; + fn check_net_url( + &mut self, + _url: &url::Url, + _api_name: &str, + ) -> Result<(), AnyError>; } /// `UnsafelyIgnoreCertificateErrors` is a wrapper struct so it can be placed inside `GothamState`; @@ -211,6 +215,7 @@ impl Resource for WsCancelResource { #[op] pub fn op_ws_check_permission_and_cancel_handle( state: &mut OpState, + api_name: String, url: String, cancel_handle: bool, ) -> Result, AnyError> @@ -219,7 +224,7 @@ where { state .borrow_mut::() - .check_net_url(&url::Url::parse(&url)?)?; + .check_net_url(&url::Url::parse(&url)?, &api_name)?; if cancel_handle { let rid = state @@ -242,6 +247,7 @@ pub struct CreateResponse { #[op] pub async fn op_ws_create( state: Rc>, + api_name: String, url: String, protocols: String, cancel_handle: Option, @@ -253,7 +259,7 @@ where { let mut s = state.borrow_mut(); s.borrow_mut::() - .check_net_url(&url::Url::parse(&url)?) + .check_net_url(&url::Url::parse(&url)?, &api_name) .expect( "Permission check should have been done in op_ws_check_permission", ); -- cgit v1.2.3