use js_sys::Function; use ruffle_core::backend::log::LogBackend; use std::cell::RefCell; use std::sync::Arc; use wasm_bindgen::{JsCast, JsValue}; pub struct WebLogBackend { trace_observer: Arc>, } impl WebLogBackend { pub fn new(trace_observer: Arc>) -> Self { Self { trace_observer } } } impl LogBackend for WebLogBackend { fn avm_trace(&self, message: &str) { log::info!(target: "avm_trace", "{}", message); if let Some(function) = self.trace_observer.borrow().dyn_ref::() { let _ = function.call1(&function, &JsValue::from_str(message)); } } }