-
Notifications
You must be signed in to change notification settings - Fork 40
/
background.js
66 lines (63 loc) · 1.72 KB
/
background.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import {
handleBeforeRequest,
handleCustomProxiedDomainsChange,
handleIgnoredHostsChange,
handleInstalled,
handleOnAlarm,
handleOnUpdateAvailable,
handleProxyError,
handleStartup,
handleStorageChanged,
handleTabCreate,
handleTabState,
} from 'Background/handlers'
import browser from './browser-api'
// Handle alarms for async tasks
browser.alarms.onAlarm.addListener(handleOnAlarm)
// Handle extension lifecycle events
browser.runtime.onStartup.addListener(handleStartup)
browser.runtime.onInstalled.addListener(handleInstalled)
browser.runtime.onUpdateAvailable.addListener(handleOnUpdateAvailable)
// Handle tab changes (e.g. new tab, tab closed)
browser.tabs.onUpdated.addListener(handleTabState)
browser.tabs.onCreated.addListener(handleTabCreate)
// Handle storage changes (e.g. settings)
browser.storage.onChanged.addListener(handleStorageChanged)
browser.storage.onChanged.addListener(handleIgnoredHostsChange)
browser.storage.onChanged.addListener(handleCustomProxiedDomainsChange)
if (browser.isFirefox) {
// Firefox-specific handlers
browser.proxy.onError.addListener(handleProxyError)
browser.webRequest.onBeforeRequest.addListener(
handleBeforeRequest, {
urls: [
'http://*/*',
'https://*/*',
],
types: [
'main_frame',
],
},
)
browser.webRequest.onErrorOccurred.addListener(
handleProxyError, {
urls: [
'<all_urls>',
],
},
)
} else {
// Chrome-specific handlers
browser.webNavigation.onBeforeNavigate.addListener(
handleBeforeRequest, {
urls: [
'http://*/*',
'https://*/*',
],
types: [
'main_frame',
],
},
)
browser.proxy.onProxyError.addListener(handleProxyError)
}