@@ -5,6 +5,7 @@ import { SessionManager, type ActiveSessionData } from "@/utils/SessionManager";
55import { debugTools } from "@/utils/debugTools" ;
66
77const IDLE_DETECTION_INTERVAL = 30 ;
8+
89const SESSION_TICK_ALARM_NAME = "session-update" ;
910const SESSION_PER_MINUTE = 1 ;
1011
@@ -18,6 +19,17 @@ const sessionStorage = storage.defineItem<ActiveSessionData>("session:activeSess
1819 } ,
1920} ) ;
2021
22+ const isExpectedBrowserError = ( error : unknown ) : boolean => {
23+ if ( ! ( error instanceof Error ) ) return false ;
24+ const msg = error . message ;
25+ return (
26+ msg . includes ( "No tab with id" ) ||
27+ msg . includes ( "No window with id" ) ||
28+ msg . includes ( "No last-focused window" ) ||
29+ msg . includes ( "Tabs cannot be edited" )
30+ ) ;
31+ } ;
32+
2133const getActiveTabUrl = async ( ) => {
2234 const tabs = await browser . tabs . query ( { active : true , currentWindow : true } ) ;
2335 if ( tabs . length === 0 ) {
@@ -70,6 +82,10 @@ export default defineBackground(() => {
7082 eventSource : "tab_activated" ,
7183 } ) ;
7284 } catch ( error ) {
85+ if ( isExpectedBrowserError ( error ) ) {
86+ console . debug ( "[TabActivated] Tab unavailable:" , error ) ;
87+ return ;
88+ }
7389 console . error ( "Failed to handle tab activation:" , error ) ;
7490 }
7591 } ) ( ) ;
@@ -95,6 +111,10 @@ export default defineBackground(() => {
95111 eventSource : "navigation" ,
96112 } ) ;
97113 } catch ( error ) {
114+ if ( isExpectedBrowserError ( error ) ) {
115+ console . debug ( "[Navigation] Tab/window unavailable:" , error ) ;
116+ return ;
117+ }
98118 console . error ( `Failed to process navigation to ${ details . url } :` , error ) ;
99119 }
100120 } ) ( ) ;
@@ -116,6 +136,10 @@ export default defineBackground(() => {
116136 } ) ;
117137 }
118138 } catch ( error ) {
139+ if ( isExpectedBrowserError ( error ) ) {
140+ console . debug ( "[WindowFocus] Window unavailable:" , error ) ;
141+ return ;
142+ }
119143 console . error ( "Failed to process window focus change:" , error ) ;
120144 }
121145 } ) ( ) ;
@@ -148,6 +172,10 @@ export default defineBackground(() => {
148172 sessionManager . handleEvent ( "idle" , { url : null } ) ;
149173 }
150174 } catch ( error ) {
175+ if ( isExpectedBrowserError ( error ) ) {
176+ console . debug ( "[IdleState] Browser state unavailable:" , error ) ;
177+ return ;
178+ }
151179 console . error ( "Failed to handle idle state change:" , error ) ;
152180 }
153181 } ) ( ) ;
0 commit comments