Skip to main content

codetether_agent/browser/
service.rs

1use super::BrowserSession;
2use once_cell::sync::Lazy;
3use parking_lot::Mutex;
4
5static BROWSER_SERVICE: Lazy<BrowserService> = Lazy::new(BrowserService::default);
6
7pub fn browser_service() -> &'static BrowserService {
8    &BROWSER_SERVICE
9}
10
11pub struct BrowserService {
12    session: Mutex<Option<BrowserSession>>,
13}
14
15impl Default for BrowserService {
16    fn default() -> Self {
17        Self {
18            session: Mutex::new(None),
19        }
20    }
21}
22
23impl BrowserService {
24    pub fn clear(&self) {
25        self.session.lock().take();
26    }
27
28    pub fn session(&self) -> BrowserSession {
29        self.session
30            .lock()
31            .get_or_insert_with(BrowserSession::new)
32            .clone()
33    }
34}