use std::sync::Arc;
use crate::{
browser::transport::{SessionId, Transport},
protocol::cdp::Page::HandleJavaScriptDialog,
};
use anyhow::Result;
pub struct Dialog {
session_id: SessionId,
transport: Arc<Transport>,
}
impl Dialog {
pub(crate) fn new(session_id: SessionId, transport: Arc<Transport>) -> Self {
Self {
session_id,
transport,
}
}
fn handle(&self, accept: bool, prompt_text: Option<String>) -> Result<()> {
self.transport.call_method_on_target(
self.session_id.clone(),
HandleJavaScriptDialog {
accept,
prompt_text,
},
)?;
Ok(())
}
pub fn accept(&self, prompt_text: Option<String>) -> Result<()> {
self.handle(true, prompt_text)
}
pub fn dismiss(&self) -> Result<()> {
self.handle(false, None)
}
}