aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIulian Gabriel Radu <iulian.radu67@gmail.com>2020-02-28 22:02:52 +0200
committerIulian Gabriel Radu <iulian.radu67@gmail.com>2020-02-28 22:02:52 +0200
commitffba9d0ea762e5614b28a835cbb8ec2f1b44134b (patch)
tree649c4f621282ebc0b6718d66aa9ac061e0392535
parentf75d547c614e7e610c50315a75e5d8a145fdc3e8 (diff)
downloadservo-ffba9d0ea762e5614b28a835cbb8ec2f1b44134b.tar.gz
servo-ffba9d0ea762e5614b28a835cbb8ec2f1b44134b.zip
Handle PromptPermission in libsimpleservo
-rw-r--r--ports/libsimpleservo/api/src/lib.rs27
1 files changed, 26 insertions, 1 deletions
diff --git a/ports/libsimpleservo/api/src/lib.rs b/ports/libsimpleservo/api/src/lib.rs
index 1d62d642be1..fcbcf89cc6d 100644
--- a/ports/libsimpleservo/api/src/lib.rs
+++ b/ports/libsimpleservo/api/src/lib.rs
@@ -7,7 +7,9 @@ extern crate log;
pub mod gl_glue;
-pub use servo::embedder_traits::{MediaSessionPlaybackState, PromptResult};
+pub use servo::embedder_traits::{
+ MediaSessionPlaybackState, PermissionPrompt, PermissionRequest, PromptResult,
+};
pub use servo::script_traits::{MediaSessionActionType, MouseButton};
use getopts::Options;
@@ -615,6 +617,29 @@ impl ServoGlue {
EmbedderMsg::Shutdown => {
self.callbacks.host_callbacks.on_shutdown_complete();
},
+ EmbedderMsg::PromptPermission(prompt, sender) => {
+ let message = match prompt {
+ PermissionPrompt::Request(permission_name) => {
+ format!("Do you want to grant permission for {:?}?", permission_name)
+ },
+ PermissionPrompt::Insecure(permission_name) => {
+ format!(
+ "The {:?} feature is only safe to use in secure context, but servo can't guarantee\n\
+ that the current context is secure. Do you want to proceed and grant permission?",
+ permission_name
+ )
+ },
+ };
+
+ let result = match self.callbacks.host_callbacks.prompt_yes_no(message, true) {
+ PromptResult::Primary => PermissionRequest::Granted,
+ PromptResult::Secondary | PromptResult::Dismissed => {
+ PermissionRequest::Denied
+ },
+ };
+
+ let _ = sender.send(result);
+ },
EmbedderMsg::ShowIME(..) => {
self.callbacks.host_callbacks.on_ime_state_changed(true);
},