chrome_types/
runtime.rs

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