aboutsummaryrefslogtreecommitdiffstats
path: root/components/servo/lib.rs
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2025-02-10 16:50:33 +0100
committerGitHub <noreply@github.com>2025-02-10 15:50:33 +0000
commitf51a5661f823d8441bc851b66a36d576146e1916 (patch)
tree01c41a2f42a041dd14b4037728aaf4cffc3bbd95 /components/servo/lib.rs
parentb72932bc88e65507156ae2d1664b717c10629b25 (diff)
downloadservo-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.rs26
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,
},
);
},