diff options
author | Martin Robinson <mrobinson@igalia.com> | 2025-02-10 16:50:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-10 15:50:33 +0000 |
commit | f51a5661f823d8441bc851b66a36d576146e1916 (patch) | |
tree | 01c41a2f42a041dd14b4037728aaf4cffc3bbd95 /components/servo/lib.rs | |
parent | b72932bc88e65507156ae2d1664b717c10629b25 (diff) | |
download | servo-f51a5661f823d8441bc851b66a36d576146e1916.tar.gz servo-f51a5661f823d8441bc851b66a36d576146e1916.zip |
libservo: Flesh out permissions API (#35396)
- Update the script crate to better reflect the modern Permission
specifcation -- removing the necessity for an `Insecure` variant of
the permissions prompt.
- Have all allow/deny type requests in the internal API use an
`AllowOrDeny` enum for clarity.
- Expose `PermissionsRequest` and `PermissionFeature` data types to the
API and use them in the delegate method.
- Update both servoshell implementations to use the API.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Diffstat (limited to 'components/servo/lib.rs')
-rw-r--r-- | components/servo/lib.rs | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/components/servo/lib.rs b/components/servo/lib.rs index bb55854b519..6902c8d6b6a 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -118,7 +118,9 @@ pub use { use crate::proxies::ConstellationProxy; pub use crate::servo_delegate::{ServoDelegate, ServoError}; pub use crate::webview::WebView; -pub use crate::webview_delegate::{AllowOrDenyRequest, NavigationRequest, WebViewDelegate}; +pub use crate::webview_delegate::{ + AllowOrDenyRequest, NavigationRequest, PermissionRequest, WebViewDelegate, +}; #[cfg(feature = "webdriver")] fn webdriver(port: u16, constellation: Sender<ConstellationMsg>) { @@ -801,7 +803,7 @@ impl Servo { let request = AllowOrDenyRequest { response_sender, response_sent: false, - default_response: true, + default_response: AllowOrDeny::Allow, }; webview.delegate().request_unload(webview, request); } @@ -914,13 +916,19 @@ impl Servo { ); } }, - EmbedderMsg::PromptPermission(webview_id, permission_prompt, result_sender) => { + EmbedderMsg::PromptPermission(webview_id, requested_feature, response_sender) => { if let Some(webview) = self.get_webview_handle(webview_id) { - webview.delegate().request_permission( - webview, - permission_prompt, - result_sender, - ); + let permission_request = PermissionRequest { + requested_feature, + allow_deny_request: AllowOrDenyRequest { + response_sender, + response_sent: false, + default_response: AllowOrDeny::Deny, + }, + }; + webview + .delegate() + .request_permission(webview, permission_request); } }, EmbedderMsg::ShowIME(webview_id, input_method_type, text, multiline, position) => { @@ -961,7 +969,7 @@ impl Servo { AllowOrDenyRequest { response_sender, response_sent: false, - default_response: false, + default_response: AllowOrDeny::Deny, }, ); }, |