diff options
author | Iulian Gabriel Radu <iulian.radu67@gmail.com> | 2020-02-28 22:02:52 +0200 |
---|---|---|
committer | Iulian Gabriel Radu <iulian.radu67@gmail.com> | 2020-02-28 22:02:52 +0200 |
commit | ffba9d0ea762e5614b28a835cbb8ec2f1b44134b (patch) | |
tree | 649c4f621282ebc0b6718d66aa9ac061e0392535 | |
parent | f75d547c614e7e610c50315a75e5d8a145fdc3e8 (diff) | |
download | servo-ffba9d0ea762e5614b28a835cbb8ec2f1b44134b.tar.gz servo-ffba9d0ea762e5614b28a835cbb8ec2f1b44134b.zip |
Handle PromptPermission in libsimpleservo
-rw-r--r-- | ports/libsimpleservo/api/src/lib.rs | 27 |
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); }, |