chrome_types/
runtime.rs

1use crate::sys::{CHROME, Chrome};
2use js_sys::{Function, Object};
3use wasm_bindgen::prelude::*;
4
5pub fn get_manifest() -> Object {
6  CHROME.with(Chrome::runtime).get_manifest()
7}
8
9pub async fn send_message(message: &JsValue) -> Result<JsValue, JsValue> {
10  CHROME
11    .with(Chrome::runtime)
12    .send_message(None, message, None)
13    .await
14}
15
16pub fn on_message<F>(callback: F)
17where
18  F: Fn(JsValue, Object, Function) -> bool + 'static,
19{
20  type OnMessageCallback = Closure<dyn Fn(JsValue, Object, Function) -> bool>;
21  let closure = OnMessageCallback::new(callback);
22  let closure_ref = closure.as_ref().unchecked_ref::<Function>();
23
24  CHROME
25    .with(Chrome::runtime)
26    .on_message()
27    .add_listener(closure_ref);
28
29  closure.forget();
30}
31
32pub fn on_startup(callback: &Function) {
33  CHROME
34    .with(Chrome::runtime)
35    .on_startup()
36    .add_listener(callback);
37}
38
39pub fn on_suspend(callback: &Function) {
40  CHROME
41    .with(Chrome::runtime)
42    .on_suspend()
43    .add_listener(callback);
44}
45
46pub fn on_suspend_canceled(callback: &Function) {
47  CHROME
48    .with(Chrome::runtime)
49    .on_suspend_canceled()
50    .add_listener(callback);
51}