use crate::{
error::{PdfiumError, PdfiumResult},
lib,
pdfium_types::{FPDF_JAVASCRIPT_ACTION, Handle, JavascriptActionHandle},
};
#[derive(Debug, Clone)]
pub struct PdfiumJavascriptAction {
handle: JavascriptActionHandle,
}
impl PdfiumJavascriptAction {
pub(crate) fn new_from_handle(handle: FPDF_JAVASCRIPT_ACTION) -> PdfiumResult<Self> {
if handle.is_null() {
Err(PdfiumError::NullHandle)
} else {
Ok(Self {
handle: Handle::new(handle, Some(close_javascript_action)),
})
}
}
}
impl From<&PdfiumJavascriptAction> for FPDF_JAVASCRIPT_ACTION {
fn from(javascript_action: &PdfiumJavascriptAction) -> Self {
javascript_action.handle.handle()
}
}
fn close_javascript_action(javascript_action: FPDF_JAVASCRIPT_ACTION) {
lib().FPDFDoc_CloseJavaScriptAction(javascript_action);
}