web_extensions/tabs/
tab.rs1use super::{prelude::*, Status};
2
3#[derive(Debug, PartialEq, Eq, Deserialize)]
5#[serde(rename_all = "camelCase")]
6pub struct Tab {
7 pub active: bool,
8 pub audible: Option<bool>,
9 pub auto_discardable: bool,
10 pub discarded: bool,
11 pub fav_icon_url: Option<String>,
12 pub group_id: i32,
13 pub height: Option<u32>,
14 pub highlighted: bool,
15 pub id: Option<TabId>,
16 pub incognito: bool,
17 pub index: u32,
18 pub opener_tab_id: Option<TabId>,
20 pub pending_url: Option<String>,
21 pub pinned: bool,
22 pub session_id: Option<String>,
23 pub status: Option<Status>,
24 pub title: Option<String>,
25 pub url: Option<String>,
26 pub width: Option<u32>,
27 pub window_id: i32,
28}
29
30impl From<sys::Tab> for Tab {
31 fn from(info: sys::Tab) -> Self {
32 let status = info.status().map(|s| Status::try_from(s).expect("status"));
33 let id = info.id().map(TabId::from);
34 let opener_tab_id = info.opener_tab_id().map(TabId::from);
35 Self {
36 id,
37 opener_tab_id,
38 status,
39 active: info.active(),
40 audible: info.audible(),
41 auto_discardable: info.auto_discardable(),
42 discarded: info.discarded(),
43 fav_icon_url: info.fav_icon_url(),
44 group_id: info.group_id(),
45 height: info.height(),
46 highlighted: info.highlighted(),
47 incognito: info.incognito(),
48 index: info.index(),
49 pending_url: info.pending_url(),
50 pinned: info.pinned(),
51 session_id: info.session_id(),
52 title: info.title(),
53 url: info.url(),
54 width: info.width(),
55 window_id: info.window_id(),
56 }
57 }
58}