web_extensions/tabs/
on_replaced.rs1use super::prelude::*;
2
3pub fn on_replaced() -> OnReplaced {
5 OnReplaced(tabs().on_replaced())
6}
7
8pub struct OnReplaced(sys::EventTarget);
10
11pub struct OnReplacedEventListener<'a>(EventListener<'a, dyn FnMut(i32, i32)>);
12
13impl OnReplacedEventListener<'_> {
14 pub fn forget(self) {
15 self.0.forget()
16 }
17}
18
19impl OnReplaced {
20 pub fn add_listener<L>(&self, mut listener: L) -> OnReplacedEventListener
21 where
22 L: FnMut(ReplaceInfo) + 'static,
23 {
24 let listener = Closure::new(move |added_tab_id: i32, removed_tab_id: i32| {
25 let replace_info = ReplaceInfo {
26 added: TabId::from(added_tab_id),
27 removed: TabId::from(removed_tab_id),
28 };
29 listener(replace_info)
30 });
31 OnReplacedEventListener(EventListener::raw_new(&self.0, listener))
32 }
33}
34
35#[derive(Debug)]
36pub struct ReplaceInfo {
37 pub added: TabId,
38 pub removed: TabId,
39}