@browserless.io/browserless 2.0.0-beta-5 → 2.0.0-beta-7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -0
- package/README.md +11 -11
- package/bin/browserless.js +169 -11
- package/bin/scaffold/README.md +415 -0
- package/bin/scaffold/package.json +21 -0
- package/bin/scaffold/src/hello-world.http.ts +27 -0
- package/bin/scaffold/tsconfig.json +4 -0
- package/build/browserless.js +18 -15
- package/build/browsers/index.d.ts +2 -18
- package/build/browsers/index.js +43 -14
- package/build/file-system.d.ts +5 -0
- package/build/file-system.js +20 -5
- package/build/file-system.spec.d.ts +1 -0
- package/build/file-system.spec.js +44 -0
- package/build/http.d.ts +3 -3
- package/build/http.js +3 -3
- package/build/router.js +2 -4
- package/build/routes/chromium/http/content-post.body.json +8 -8
- package/build/routes/chromium/http/content-post.d.ts +15 -3
- package/build/routes/chromium/http/content-post.js +14 -15
- package/build/routes/chromium/http/download-post.d.ts +16 -3
- package/build/routes/chromium/http/download-post.js +17 -22
- package/build/routes/chromium/http/function-post.d.ts +16 -3
- package/build/routes/chromium/http/function-post.js +17 -22
- package/build/routes/chromium/http/pdf-post.body.json +8 -8
- package/build/routes/chromium/http/pdf-post.d.ts +15 -3
- package/build/routes/chromium/http/pdf-post.js +19 -15
- package/build/routes/chromium/http/performance.d.ts +15 -3
- package/build/routes/chromium/http/performance.js +15 -23
- package/build/routes/chromium/http/scrape-post.body.json +8 -8
- package/build/routes/chromium/http/scrape-post.d.ts +15 -3
- package/build/routes/chromium/http/scrape-post.js +15 -16
- package/build/routes/chromium/http/screenshot-post.body.json +8 -8
- package/build/routes/chromium/http/screenshot-post.d.ts +15 -3
- package/build/routes/chromium/http/screenshot-post.js +18 -15
- package/build/routes/chromium/tests/websocket.spec.js +20 -1
- package/build/routes/chromium/utils/function/handler.js +2 -2
- package/build/routes/chromium/ws/browser.d.ts +13 -3
- package/build/routes/chromium/ws/browser.js +10 -11
- package/build/routes/chromium/ws/cdp-chromium.d.ts +13 -3
- package/build/routes/chromium/ws/cdp-chromium.js +10 -11
- package/build/routes/chromium/ws/page.d.ts +13 -3
- package/build/routes/chromium/ws/page.js +10 -11
- package/build/routes/chromium/ws/playwright-chromium.d.ts +13 -3
- package/build/routes/chromium/ws/playwright-chromium.js +11 -12
- package/build/routes/firefox/ws/playwright-firefox.d.ts +13 -3
- package/build/routes/firefox/ws/playwright-firefox.js +11 -12
- package/build/routes/management/http/config-get.d.ts +15 -3
- package/build/routes/management/http/config-get.js +15 -20
- package/build/routes/management/http/metrics-get.d.ts +15 -3
- package/build/routes/management/http/metrics-get.js +16 -21
- package/build/routes/management/http/metrics-total-get.d.ts +15 -3
- package/build/routes/management/http/metrics-total-get.js +16 -21
- package/build/routes/management/http/sessions-get.d.ts +15 -3
- package/build/routes/management/http/sessions-get.js +16 -20
- package/build/routes/management/http/static-get.d.ts +15 -3
- package/build/routes/management/http/static-get.js +15 -20
- package/build/routes/webkit/ws/playwright-webkit.d.ts +13 -3
- package/build/routes/webkit/ws/playwright-webkit.js +11 -12
- package/build/server.js +0 -1
- package/build/types.d.ts +48 -38
- package/build/types.js +135 -0
- package/extensions/ublock/1p-filters.html +0 -1
- package/extensions/ublock/3p-filters.html +0 -2
- package/extensions/ublock/_locales/bg/messages.json +6 -6
- package/extensions/ublock/_locales/br_FR/messages.json +14 -14
- package/extensions/ublock/_locales/bs/messages.json +8 -8
- package/extensions/ublock/_locales/ca/messages.json +1 -1
- package/extensions/ublock/_locales/da/messages.json +5 -5
- package/extensions/ublock/_locales/fa/messages.json +1 -1
- package/extensions/ublock/_locales/fi/messages.json +6 -6
- package/extensions/ublock/_locales/hr/messages.json +4 -4
- package/extensions/ublock/_locales/nb/messages.json +1 -1
- package/extensions/ublock/_locales/no/messages.json +1 -1
- package/extensions/ublock/_locales/ro/messages.json +2 -2
- package/extensions/ublock/_locales/ru/messages.json +1 -1
- package/extensions/ublock/_locales/sk/messages.json +1 -1
- package/extensions/ublock/_locales/sv/messages.json +2 -2
- package/extensions/ublock/_locales/te/messages.json +17 -17
- package/extensions/ublock/_locales/vi/messages.json +12 -12
- package/extensions/ublock/_locales/zh_TW/messages.json +13 -13
- package/extensions/ublock/assets/assets.json +3 -3
- package/extensions/ublock/assets/resources/scriptlets.js +218 -97
- package/extensions/ublock/assets/thirdparties/easylist/easylist.txt +3010 -2056
- package/extensions/ublock/assets/thirdparties/easylist/easyprivacy.txt +624 -433
- package/extensions/ublock/assets/thirdparties/pgl.yoyo.org/as/serverlist +93 -24
- package/extensions/ublock/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +7 -15
- package/extensions/ublock/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +795 -777
- package/extensions/ublock/assets/ublock/badware.min.txt +138 -72
- package/extensions/ublock/assets/ublock/filters.min.txt +1929 -2735
- package/extensions/ublock/assets/ublock/privacy.min.txt +57 -26
- package/extensions/ublock/assets/ublock/quick-fixes.min.txt +125 -74
- package/extensions/ublock/assets/ublock/unbreak.min.txt +46 -53
- package/extensions/ublock/css/codemirror.css +8 -7
- package/extensions/ublock/css/dom-inspector.css +40 -0
- package/extensions/ublock/css/logger-ui-inspector.css +7 -1
- package/extensions/ublock/css/logger-ui.css +12 -5
- package/extensions/ublock/css/popup-fenix.css +1 -1
- package/extensions/ublock/devtools.html +1 -0
- package/extensions/ublock/js/1p-filters.js +4 -3
- package/extensions/ublock/js/3p-filters.js +25 -31
- package/extensions/ublock/js/about.js +1 -1
- package/extensions/ublock/js/advanced-settings.js +1 -1
- package/extensions/ublock/js/asset-viewer.js +1 -1
- package/extensions/ublock/js/assets.js +74 -44
- package/extensions/ublock/js/background.js +9 -3
- package/extensions/ublock/js/base64-custom.js +1 -1
- package/extensions/ublock/js/benchmarks.js +1 -1
- package/extensions/ublock/js/biditrie.js +1 -1
- package/extensions/ublock/js/broadcast.js +75 -0
- package/extensions/ublock/js/cachestorage.js +68 -45
- package/extensions/ublock/js/click2load.js +1 -1
- package/extensions/ublock/js/cloud-ui.js +1 -1
- package/extensions/ublock/js/code-viewer.js +1 -1
- package/extensions/ublock/js/codemirror/search-thread.js +1 -1
- package/extensions/ublock/js/codemirror/search.js +1 -1
- package/extensions/ublock/js/codemirror/ubo-dynamic-filtering.js +1 -1
- package/extensions/ublock/js/codemirror/ubo-static-filtering.js +98 -24
- package/extensions/ublock/js/commands.js +1 -1
- package/extensions/ublock/js/console.js +1 -1
- package/extensions/ublock/js/contentscript-extra.js +1 -1
- package/extensions/ublock/js/contentscript.js +1 -3
- package/extensions/ublock/js/contextmenu.js +1 -1
- package/extensions/ublock/js/cosmetic-filtering.js +4 -4
- package/extensions/ublock/js/dashboard-common.js +1 -1
- package/extensions/ublock/js/dashboard.js +1 -1
- package/extensions/ublock/js/devtools.js +23 -15
- package/extensions/ublock/js/diff-updater.js +3 -3
- package/extensions/ublock/js/document-blocked.js +1 -1
- package/extensions/ublock/js/dom-inspector.js +68 -0
- package/extensions/ublock/js/dom.js +1 -1
- package/extensions/ublock/js/dyna-rules.js +1 -1
- package/extensions/ublock/js/dynamic-net-filtering.js +1 -1
- package/extensions/ublock/js/epicker-ui.js +35 -59
- package/extensions/ublock/js/fa-icons.js +1 -1
- package/extensions/ublock/js/filtering-context.js +1 -1
- package/extensions/ublock/js/filtering-engines.js +1 -1
- package/extensions/ublock/js/hnswitches.js +1 -1
- package/extensions/ublock/js/hntrie.js +1 -1
- package/extensions/ublock/js/html-filtering.js +1 -1
- package/extensions/ublock/js/httpheader-filtering.js +1 -1
- package/extensions/ublock/js/i18n.js +1 -1
- package/extensions/ublock/js/is-webrtc-supported.js +1 -1
- package/extensions/ublock/js/logger-ui-inspector.js +203 -145
- package/extensions/ublock/js/logger-ui.js +21 -5
- package/extensions/ublock/js/logger.js +6 -2
- package/extensions/ublock/js/lz4.js +2 -2
- package/extensions/ublock/js/messaging.js +266 -166
- package/extensions/ublock/js/mrucache.js +58 -0
- package/extensions/ublock/js/pagestore.js +1 -1
- package/extensions/ublock/js/popup-fenix.js +2 -1
- package/extensions/ublock/js/redirect-engine.js +1 -1
- package/extensions/ublock/js/redirect-resources.js +1 -12
- package/extensions/ublock/js/reverselookup-worker.js +1 -1
- package/extensions/ublock/js/reverselookup.js +1 -1
- package/extensions/ublock/js/scriptlet-filtering-core.js +300 -0
- package/extensions/ublock/js/scriptlet-filtering.js +122 -350
- package/extensions/ublock/js/scriptlets/cosmetic-logger.js +36 -47
- package/extensions/ublock/js/scriptlets/cosmetic-off.js +1 -1
- package/extensions/ublock/js/scriptlets/cosmetic-on.js +1 -1
- package/extensions/ublock/js/scriptlets/cosmetic-report.js +1 -1
- package/extensions/ublock/js/scriptlets/dom-inspector.js +341 -323
- package/extensions/ublock/js/scriptlets/dom-survey-elements.js +1 -1
- package/extensions/ublock/js/scriptlets/dom-survey-scripts.js +1 -1
- package/extensions/ublock/js/scriptlets/epicker.js +80 -89
- package/extensions/ublock/js/scriptlets/load-3p-css.js +1 -1
- package/extensions/ublock/js/scriptlets/load-large-media-all.js +1 -1
- package/extensions/ublock/js/scriptlets/load-large-media-interactive.js +1 -1
- package/extensions/ublock/js/scriptlets/noscript-spoof.js +1 -1
- package/extensions/ublock/js/scriptlets/should-inject-contentscript.js +1 -1
- package/extensions/ublock/js/scriptlets/subscriber.js +1 -1
- package/extensions/ublock/js/scriptlets/updater.js +20 -3
- package/extensions/ublock/js/settings.js +1 -1
- package/extensions/ublock/js/start.js +19 -20
- package/extensions/ublock/js/static-dnr-filtering.js +1 -1
- package/extensions/ublock/js/static-ext-filtering-db.js +1 -1
- package/extensions/ublock/js/static-ext-filtering.js +1 -1
- package/extensions/ublock/js/static-filtering-io.js +1 -1
- package/extensions/ublock/js/static-filtering-parser.js +5 -3
- package/extensions/ublock/js/static-net-filtering.js +57 -37
- package/extensions/ublock/js/storage.js +49 -29
- package/extensions/ublock/js/support.js +4 -4
- package/extensions/ublock/js/tab.js +1 -1
- package/extensions/ublock/js/tasks.js +1 -1
- package/extensions/ublock/js/text-encode.js +1 -1
- package/extensions/ublock/js/text-utils.js +1 -1
- package/extensions/ublock/js/theme.js +1 -1
- package/extensions/ublock/js/traffic.js +2 -1
- package/extensions/ublock/js/ublock.js +15 -11
- package/extensions/ublock/js/uri-utils.js +1 -1
- package/extensions/ublock/js/url-net-filtering.js +1 -1
- package/extensions/ublock/js/utils.js +1 -73
- package/extensions/ublock/js/vapi-background-ext.js +1 -1
- package/extensions/ublock/js/vapi-background.js +92 -83
- package/extensions/ublock/js/vapi-client.js +4 -33
- package/extensions/ublock/js/vapi-common.js +16 -30
- package/extensions/ublock/js/vapi.js +1 -1
- package/extensions/ublock/js/wasm/biditrie.wat +1 -1
- package/extensions/ublock/js/wasm/hntrie.wat +1 -1
- package/extensions/ublock/js/webext.js +1 -1
- package/extensions/ublock/js/whitelist.js +1 -1
- package/extensions/ublock/logger-ui.html +2 -2
- package/extensions/ublock/manifest.json +1 -1
- package/extensions/ublock/support.html +0 -1
- package/extensions/ublock/web_accessible_resources/dom-inspector.html +25 -0
- package/extensions/ublock/web_accessible_resources/epicker-ui.html +0 -1
- package/extensions/ublock/web_accessible_resources/googletagservices_gpt.js +1 -0
- package/package.json +7 -19
- package/scripts/build-open-api.js +7 -4
- package/src/browserless.ts +42 -18
- package/src/browsers/index.ts +48 -20
- package/src/file-system.spec.ts +58 -0
- package/src/file-system.ts +36 -8
- package/src/http.ts +3 -3
- package/src/router.ts +2 -6
- package/src/routes/chromium/http/content-post.ts +13 -16
- package/src/routes/chromium/http/download-post.ts +16 -27
- package/src/routes/chromium/http/function-post.ts +16 -25
- package/src/routes/chromium/http/pdf-post.ts +19 -15
- package/src/routes/chromium/http/performance.ts +14 -26
- package/src/routes/chromium/http/scrape-post.ts +14 -16
- package/src/routes/chromium/http/screenshot-post.ts +18 -15
- package/src/routes/chromium/tests/websocket.spec.ts +28 -1
- package/src/routes/chromium/utils/function/handler.ts +2 -1
- package/src/routes/chromium/ws/browser.ts +10 -12
- package/src/routes/chromium/ws/cdp-chromium.ts +10 -12
- package/src/routes/chromium/ws/page.ts +10 -12
- package/src/routes/chromium/ws/playwright-chromium.ts +10 -12
- package/src/routes/firefox/ws/playwright-firefox.ts +10 -12
- package/src/routes/management/http/config-get.ts +14 -23
- package/src/routes/management/http/metrics-get.ts +15 -24
- package/src/routes/management/http/metrics-total-get.ts +15 -26
- package/src/routes/management/http/sessions-get.ts +15 -23
- package/src/routes/management/http/static-get.ts +14 -22
- package/src/routes/webkit/ws/playwright-webkit.ts +10 -12
- package/src/server.ts +0 -1
- package/src/types.ts +59 -45
- package/static/docs/browserless-logo-inline.svg +1 -0
- package/static/docs/index.html +27 -0
- package/static/docs/swagger.json +33 -33
- package/static/function/client.js +626 -78
- package/extensions/ublock/js/vapi-client-extra.js +0 -312
- package/extensions/ublock/web_accessible_resources/addthis_widget.js +0 -39
- package/extensions/ublock/web_accessible_resources/ligatus_angular-tag.js +0 -29
- package/extensions/ublock/web_accessible_resources/monkeybroker.js +0 -43
- package/extensions/ublock/web_accessible_resources/mxpnl_mixpanel.js +0 -51
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -71,7 +71,7 @@ const keyvalStore = typeof vAPI !== 'undefined'
|
|
|
71
71
|
// ||||+---------------- bit 12: removeparam filters
|
|
72
72
|
// |||+----------------- bit 13: csp filters
|
|
73
73
|
// ||+------------------ bit 14: permissions filters
|
|
74
|
-
// |+------------------- bit 15:
|
|
74
|
+
// |+------------------- bit 15: uritransform filters
|
|
75
75
|
// +-------------------- bit 16: replace filters
|
|
76
76
|
// TODO: bit 11-16 can be converted into 3-bit value, as these options are not
|
|
77
77
|
// meant to be combined.
|
|
@@ -217,7 +217,7 @@ const modifierTypeFromName = new Map([
|
|
|
217
217
|
[ 'removeparam', MODIFIER_TYPE_REMOVEPARAM ],
|
|
218
218
|
[ 'csp', MODIFIER_TYPE_CSP ],
|
|
219
219
|
[ 'permissions', MODIFIER_TYPE_PERMISSIONS ],
|
|
220
|
-
[ '
|
|
220
|
+
[ 'uritransform', MODIFIER_TYPE_URLTRANSFORM ],
|
|
221
221
|
[ 'replace', MODIFIER_TYPE_REPLACE ],
|
|
222
222
|
]);
|
|
223
223
|
|
|
@@ -227,7 +227,7 @@ const modifierNameFromType = new Map([
|
|
|
227
227
|
[ MODIFIER_TYPE_REMOVEPARAM, 'removeparam' ],
|
|
228
228
|
[ MODIFIER_TYPE_CSP, 'csp' ],
|
|
229
229
|
[ MODIFIER_TYPE_PERMISSIONS, 'permissions' ],
|
|
230
|
-
[ MODIFIER_TYPE_URLTRANSFORM, '
|
|
230
|
+
[ MODIFIER_TYPE_URLTRANSFORM, 'uritransform' ],
|
|
231
231
|
[ MODIFIER_TYPE_REPLACE, 'replace' ],
|
|
232
232
|
]);
|
|
233
233
|
|
|
@@ -1925,13 +1925,13 @@ class FilterFromDomainMissSet extends FilterFromDomainHitSet {
|
|
|
1925
1925
|
return super.match(idata) === false;
|
|
1926
1926
|
}
|
|
1927
1927
|
|
|
1928
|
-
static logData(idata, details) {
|
|
1929
|
-
details.fromDomains.push('~' + this.getDomainOpt(idata).replace(/\|/g, '|~'));
|
|
1930
|
-
}
|
|
1931
|
-
|
|
1932
1928
|
static get dnrConditionName() {
|
|
1933
1929
|
return 'excludedInitiatorDomains';
|
|
1934
1930
|
}
|
|
1931
|
+
|
|
1932
|
+
static logData(idata, details) {
|
|
1933
|
+
details.fromDomains.push('~' + this.getDomainOpt(idata).replace(/\|/g, '|~'));
|
|
1934
|
+
}
|
|
1935
1935
|
}
|
|
1936
1936
|
|
|
1937
1937
|
class FilterFromRegexHit extends FilterDomainRegexHit {
|
|
@@ -1939,6 +1939,10 @@ class FilterFromRegexHit extends FilterDomainRegexHit {
|
|
|
1939
1939
|
return $docHostname;
|
|
1940
1940
|
}
|
|
1941
1941
|
|
|
1942
|
+
static get dnrConditionName() {
|
|
1943
|
+
return 'initiatorDomains';
|
|
1944
|
+
}
|
|
1945
|
+
|
|
1942
1946
|
static logData(idata, details) {
|
|
1943
1947
|
details.fromDomains.push(`${this.getDomainOpt(idata)}`);
|
|
1944
1948
|
}
|
|
@@ -1949,6 +1953,10 @@ class FilterFromRegexMiss extends FilterFromRegexHit {
|
|
|
1949
1953
|
return super.match(idata) === false;
|
|
1950
1954
|
}
|
|
1951
1955
|
|
|
1956
|
+
static get dnrConditionName() {
|
|
1957
|
+
return 'excludedInitiatorDomains';
|
|
1958
|
+
}
|
|
1959
|
+
|
|
1952
1960
|
static logData(idata, details) {
|
|
1953
1961
|
details.fromDomains.push(`~${this.getDomainOpt(idata)}`);
|
|
1954
1962
|
}
|
|
@@ -2064,6 +2072,10 @@ class FilterToRegexHit extends FilterDomainRegexHit {
|
|
|
2064
2072
|
return $requestHostname;
|
|
2065
2073
|
}
|
|
2066
2074
|
|
|
2075
|
+
static get dnrConditionName() {
|
|
2076
|
+
return 'requestDomains';
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2067
2079
|
static logData(idata, details) {
|
|
2068
2080
|
details.toDomains.push(`${this.getDomainOpt(idata)}`);
|
|
2069
2081
|
}
|
|
@@ -2074,6 +2086,10 @@ class FilterToRegexMiss extends FilterToRegexHit {
|
|
|
2074
2086
|
return super.match(idata) === false;
|
|
2075
2087
|
}
|
|
2076
2088
|
|
|
2089
|
+
static get dnrConditionName() {
|
|
2090
|
+
return 'excludedRequestDomains';
|
|
2091
|
+
}
|
|
2092
|
+
|
|
2077
2093
|
static logData(idata, details) {
|
|
2078
2094
|
details.toDomains.push(`~${this.getDomainOpt(idata)}`);
|
|
2079
2095
|
}
|
|
@@ -4362,7 +4378,7 @@ FilterContainer.prototype.dnrFromCompiled = function(op, context, ...args) {
|
|
|
4362
4378
|
[ REMOVEPARAM_REALM, 'removeparam' ],
|
|
4363
4379
|
[ CSP_REALM, 'csp' ],
|
|
4364
4380
|
[ PERMISSIONS_REALM, 'permissions' ],
|
|
4365
|
-
[ URLTRANSFORM_REALM, '
|
|
4381
|
+
[ URLTRANSFORM_REALM, 'uritransform' ],
|
|
4366
4382
|
]);
|
|
4367
4383
|
const partyness = new Map([
|
|
4368
4384
|
[ ANYPARTY_REALM, '' ],
|
|
@@ -4430,34 +4446,38 @@ FilterContainer.prototype.dnrFromCompiled = function(op, context, ...args) {
|
|
|
4430
4446
|
}
|
|
4431
4447
|
}
|
|
4432
4448
|
|
|
4433
|
-
// Detect and attempt salvage of rules with entity-based hostnames
|
|
4449
|
+
// Detect and attempt salvage of rules with entity-based hostnames and/or
|
|
4450
|
+
// regex-based domains.
|
|
4451
|
+
const isUnsupportedDomain = hn => hn.endsWith('.*') || hn.startsWith('/');
|
|
4434
4452
|
for ( const rule of ruleset ) {
|
|
4435
4453
|
if ( rule.condition === undefined ) { continue; }
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4454
|
+
for ( const prop of [ 'Initiator', 'Request' ] ) {
|
|
4455
|
+
const hitProp = `${prop.toLowerCase()}Domains`;
|
|
4456
|
+
if ( Array.isArray(rule.condition[hitProp]) ) {
|
|
4457
|
+
if ( rule.condition[hitProp].some(hn => isUnsupportedDomain(hn)) ) {
|
|
4458
|
+
const domains = rule.condition[hitProp].filter(
|
|
4459
|
+
hn => isUnsupportedDomain(hn) === false
|
|
4460
|
+
);
|
|
4461
|
+
if ( domains.length === 0 ) {
|
|
4462
|
+
dnrAddRuleError(rule, `Can't salvage rule with unsupported domain= option: ${rule.condition[hitProp].join('|')}`);
|
|
4463
|
+
} else {
|
|
4464
|
+
dnrAddRuleWarning(rule, `Salvaged rule by ignoring ${rule.condition[hitProp].length - domains.length} unsupported domain= option: ${rule.condition[hitProp].join('|')}`);
|
|
4465
|
+
rule.condition[hitProp] = domains;
|
|
4466
|
+
}
|
|
4467
|
+
}
|
|
4468
|
+
}
|
|
4469
|
+
const missProp = `excluded${prop}Domains`;
|
|
4470
|
+
if ( Array.isArray(rule.condition[missProp]) ) {
|
|
4471
|
+
if ( rule.condition[missProp].some(hn => isUnsupportedDomain(hn)) ) {
|
|
4472
|
+
const domains = rule.condition[missProp].filter(
|
|
4473
|
+
hn => isUnsupportedDomain(hn) === false
|
|
4474
|
+
);
|
|
4475
|
+
rule.condition[missProp] =
|
|
4476
|
+
domains.length !== 0
|
|
4477
|
+
? domains
|
|
4478
|
+
: undefined;
|
|
4479
|
+
}
|
|
4448
4480
|
}
|
|
4449
|
-
}
|
|
4450
|
-
if (
|
|
4451
|
-
Array.isArray(rule.condition.excludedInitiatorDomains) &&
|
|
4452
|
-
rule.condition.excludedInitiatorDomains.some(hn => hn.endsWith('.*'))
|
|
4453
|
-
) {
|
|
4454
|
-
const domains = rule.condition.excludedInitiatorDomains.filter(
|
|
4455
|
-
hn => hn.endsWith('.*') === false
|
|
4456
|
-
);
|
|
4457
|
-
rule.condition.excludedInitiatorDomains =
|
|
4458
|
-
domains.length !== 0
|
|
4459
|
-
? domains
|
|
4460
|
-
: undefined;
|
|
4461
4481
|
}
|
|
4462
4482
|
}
|
|
4463
4483
|
|
|
@@ -4550,7 +4570,7 @@ FilterContainer.prototype.dnrFromCompiled = function(op, context, ...args) {
|
|
|
4550
4570
|
dnrAddRuleError(rule, `Unsupported removeparam exception: ${rule.__modifierValue}`);
|
|
4551
4571
|
}
|
|
4552
4572
|
break;
|
|
4553
|
-
case '
|
|
4573
|
+
case 'uritransform': {
|
|
4554
4574
|
const path = rule.__modifierValue;
|
|
4555
4575
|
let priority = rule.priority || 1;
|
|
4556
4576
|
if ( rule.__modifierAction !== ALLOW_REALM ) {
|
|
@@ -5277,7 +5297,7 @@ FilterContainer.prototype.redirectRequest = function(redirectEngine, fctxt) {
|
|
|
5277
5297
|
};
|
|
5278
5298
|
|
|
5279
5299
|
FilterContainer.prototype.transformRequest = function(fctxt) {
|
|
5280
|
-
const directives = this.matchAndFetchModifiers(fctxt, '
|
|
5300
|
+
const directives = this.matchAndFetchModifiers(fctxt, 'uritransform');
|
|
5281
5301
|
if ( directives === undefined ) { return; }
|
|
5282
5302
|
const directive = directives[directives.length-1];
|
|
5283
5303
|
if ( (directive.bits & ALLOW_REALM) !== 0 ) { return directives; }
|
|
@@ -5564,7 +5584,7 @@ FilterContainer.prototype.dump = function() {
|
|
|
5564
5584
|
[ REMOVEPARAM_REALM, 'removeparam' ],
|
|
5565
5585
|
[ CSP_REALM, 'csp' ],
|
|
5566
5586
|
[ PERMISSIONS_REALM, 'permissions' ],
|
|
5567
|
-
[ URLTRANSFORM_REALM, '
|
|
5587
|
+
[ URLTRANSFORM_REALM, 'uritransform' ],
|
|
5568
5588
|
[ REPLACE_REALM, 'replace' ],
|
|
5569
5589
|
]);
|
|
5570
5590
|
const partyness = new Map([
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -19,8 +19,6 @@
|
|
|
19
19
|
Home: https://github.com/gorhill/uBlock
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
/* globals WebAssembly */
|
|
23
|
-
|
|
24
22
|
'use strict';
|
|
25
23
|
|
|
26
24
|
/******************************************************************************/
|
|
@@ -28,8 +26,9 @@
|
|
|
28
26
|
import publicSuffixList from '../lib/publicsuffixlist/publicsuffixlist.js';
|
|
29
27
|
import punycode from '../lib/punycode.js';
|
|
30
28
|
|
|
31
|
-
import cosmeticFilteringEngine from './cosmetic-filtering.js';
|
|
32
29
|
import io from './assets.js';
|
|
30
|
+
import { broadcast, filteringBehaviorChanged, onBroadcast } from './broadcast.js';
|
|
31
|
+
import cosmeticFilteringEngine from './cosmetic-filtering.js';
|
|
33
32
|
import logger from './logger.js';
|
|
34
33
|
import lz4Codec from './lz4.js';
|
|
35
34
|
import staticExtFilteringEngine from './static-ext-filtering.js';
|
|
@@ -109,9 +108,9 @@ import {
|
|
|
109
108
|
};
|
|
110
109
|
|
|
111
110
|
const saveTimer = vAPI.defer.create(shouldSave);
|
|
112
|
-
const saveDelay = {
|
|
111
|
+
const saveDelay = { sec: 23 };
|
|
113
112
|
|
|
114
|
-
saveTimer.
|
|
113
|
+
saveTimer.onidle(saveDelay);
|
|
115
114
|
|
|
116
115
|
µb.saveLocalSettings = function() {
|
|
117
116
|
localSettingsLastSaved = Date.now();
|
|
@@ -243,7 +242,7 @@ import {
|
|
|
243
242
|
if ( typeof hs[key] !== typeof hsDefault[key] ) { continue; }
|
|
244
243
|
this.hiddenSettings[key] = hs[key];
|
|
245
244
|
}
|
|
246
|
-
|
|
245
|
+
broadcast({ what: 'hiddenSettingsChanged' });
|
|
247
246
|
};
|
|
248
247
|
|
|
249
248
|
// Note: Save only the settings which values differ from the default ones.
|
|
@@ -259,7 +258,8 @@ import {
|
|
|
259
258
|
});
|
|
260
259
|
};
|
|
261
260
|
|
|
262
|
-
|
|
261
|
+
onBroadcast(msg => {
|
|
262
|
+
if ( msg.what !== 'hiddenSettingsChanged' ) { return; }
|
|
263
263
|
const µbhs = µb.hiddenSettings;
|
|
264
264
|
ubologSet(µbhs.consoleLogLevel === 'info');
|
|
265
265
|
vAPI.net.setOptions({
|
|
@@ -391,7 +391,8 @@ import {
|
|
|
391
391
|
return false;
|
|
392
392
|
};
|
|
393
393
|
|
|
394
|
-
|
|
394
|
+
onBroadcast(msg => {
|
|
395
|
+
if ( msg.what !== 'hiddenSettingsChanged' ) { return; }
|
|
395
396
|
µb.parsedTrustedListPrefixes = [];
|
|
396
397
|
});
|
|
397
398
|
|
|
@@ -614,9 +615,8 @@ import {
|
|
|
614
615
|
|
|
615
616
|
// https://www.reddit.com/r/uBlockOrigin/comments/cj7g7m/
|
|
616
617
|
// https://www.reddit.com/r/uBlockOrigin/comments/cnq0bi/
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
vAPI.messaging.broadcast({ what: 'userFiltersUpdated' });
|
|
618
|
+
filteringBehaviorChanged();
|
|
619
|
+
broadcast({ what: 'userFiltersUpdated' });
|
|
620
620
|
};
|
|
621
621
|
|
|
622
622
|
µb.createUserFilters = function(details) {
|
|
@@ -635,6 +635,7 @@ import {
|
|
|
635
635
|
for ( const key in lists ) {
|
|
636
636
|
if ( lists.hasOwnProperty(key) === false ) { continue; }
|
|
637
637
|
const list = lists[key];
|
|
638
|
+
if ( list.content !== 'filters' ) { continue; }
|
|
638
639
|
if ( list.off !== true ) {
|
|
639
640
|
selectedListKeys.push(key);
|
|
640
641
|
continue;
|
|
@@ -851,7 +852,7 @@ import {
|
|
|
851
852
|
staticExtFilteringEngine.freeze();
|
|
852
853
|
redirectEngine.freeze();
|
|
853
854
|
vAPI.net.unsuspend();
|
|
854
|
-
|
|
855
|
+
filteringBehaviorChanged();
|
|
855
856
|
|
|
856
857
|
vAPI.storage.set({ 'availableFilterLists': µb.availableFilterLists });
|
|
857
858
|
|
|
@@ -861,7 +862,7 @@ import {
|
|
|
861
862
|
text: 'Reloading all filter lists: done'
|
|
862
863
|
});
|
|
863
864
|
|
|
864
|
-
|
|
865
|
+
broadcast({
|
|
865
866
|
what: 'staticFilteringDataChanged',
|
|
866
867
|
parseCosmeticFilters: µb.userSettings.parseAllABPHideFilters,
|
|
867
868
|
ignoreGenericCosmeticFilters: µb.userSettings.ignoreGenericCosmeticFilters,
|
|
@@ -1240,6 +1241,8 @@ import {
|
|
|
1240
1241
|
// memory usage at selfie-load time. For some reasons.
|
|
1241
1242
|
|
|
1242
1243
|
const create = async function() {
|
|
1244
|
+
vAPI.alarms.clear('createSelfie');
|
|
1245
|
+
createTimer.off();
|
|
1243
1246
|
if ( µb.inMemoryFilters.length !== 0 ) { return; }
|
|
1244
1247
|
if ( Object.keys(µb.availableFilterLists).length === 0 ) { return; }
|
|
1245
1248
|
await Promise.all([
|
|
@@ -1313,11 +1316,23 @@ import {
|
|
|
1313
1316
|
io.remove(/^selfie\//);
|
|
1314
1317
|
µb.selfieIsInvalid = true;
|
|
1315
1318
|
}
|
|
1319
|
+
if ( µb.wakeupReason === 'createSelfie' ) {
|
|
1320
|
+
µb.wakeupReason = '';
|
|
1321
|
+
return createTimer.offon({ sec: 27 });
|
|
1322
|
+
}
|
|
1323
|
+
vAPI.alarms.create('createSelfie', {
|
|
1324
|
+
delayInMinutes: µb.hiddenSettings.selfieAfter
|
|
1325
|
+
});
|
|
1316
1326
|
createTimer.offon({ min: µb.hiddenSettings.selfieAfter });
|
|
1317
1327
|
};
|
|
1318
1328
|
|
|
1319
1329
|
const createTimer = vAPI.defer.create(create);
|
|
1320
1330
|
|
|
1331
|
+
vAPI.alarms.onAlarm.addListener(alarm => {
|
|
1332
|
+
if ( alarm.name !== 'createSelfie') { return; }
|
|
1333
|
+
µb.wakeupReason = 'createSelfie';
|
|
1334
|
+
});
|
|
1335
|
+
|
|
1321
1336
|
µb.selfieManager = { load, destroy };
|
|
1322
1337
|
}
|
|
1323
1338
|
|
|
@@ -1482,17 +1497,28 @@ import {
|
|
|
1482
1497
|
|
|
1483
1498
|
const launchTimer = vAPI.defer.create(fetchDelay => {
|
|
1484
1499
|
next = 0;
|
|
1485
|
-
io.updateStart({
|
|
1500
|
+
io.updateStart({ fetchDelay, auto: true });
|
|
1486
1501
|
});
|
|
1487
1502
|
|
|
1488
|
-
µb.scheduleAssetUpdater = async function(
|
|
1503
|
+
µb.scheduleAssetUpdater = async function(details = {}) {
|
|
1489
1504
|
launchTimer.off();
|
|
1490
1505
|
|
|
1491
|
-
if (
|
|
1506
|
+
if ( details.now ) {
|
|
1492
1507
|
next = 0;
|
|
1508
|
+
io.updateStart(details);
|
|
1493
1509
|
return;
|
|
1494
1510
|
}
|
|
1495
1511
|
|
|
1512
|
+
if ( µb.userSettings.autoUpdate === false ) {
|
|
1513
|
+
if ( Boolean(details.updateDelay) === false ) {
|
|
1514
|
+
next = 0;
|
|
1515
|
+
return;
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1519
|
+
let updateDelay = details.updateDelay ||
|
|
1520
|
+
this.hiddenSettings.autoUpdatePeriod * 3600000;
|
|
1521
|
+
|
|
1496
1522
|
const now = Date.now();
|
|
1497
1523
|
let needEmergencyUpdate = false;
|
|
1498
1524
|
|
|
@@ -1583,10 +1609,10 @@ import {
|
|
|
1583
1609
|
} else if ( details.assetKey === 'ublock-badlists' ) {
|
|
1584
1610
|
this.badLists = new Map();
|
|
1585
1611
|
}
|
|
1586
|
-
|
|
1612
|
+
broadcast({
|
|
1587
1613
|
what: 'assetUpdated',
|
|
1588
1614
|
key: details.assetKey,
|
|
1589
|
-
cached
|
|
1615
|
+
cached,
|
|
1590
1616
|
});
|
|
1591
1617
|
// https://github.com/gorhill/uBlock/issues/2585
|
|
1592
1618
|
// Whenever an asset is overwritten, the current selfie is quite
|
|
@@ -1597,10 +1623,10 @@ import {
|
|
|
1597
1623
|
|
|
1598
1624
|
// Update failed.
|
|
1599
1625
|
if ( topic === 'asset-update-failed' ) {
|
|
1600
|
-
|
|
1626
|
+
broadcast({
|
|
1601
1627
|
what: 'assetUpdated',
|
|
1602
1628
|
key: details.assetKey,
|
|
1603
|
-
failed: true
|
|
1629
|
+
failed: true,
|
|
1604
1630
|
});
|
|
1605
1631
|
return;
|
|
1606
1632
|
}
|
|
@@ -1617,14 +1643,8 @@ import {
|
|
|
1617
1643
|
}
|
|
1618
1644
|
this.loadFilterLists();
|
|
1619
1645
|
}
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
this.hiddenSettings.autoUpdatePeriod * 3600000 || 25200000
|
|
1623
|
-
);
|
|
1624
|
-
} else {
|
|
1625
|
-
this.scheduleAssetUpdater(0);
|
|
1626
|
-
}
|
|
1627
|
-
vAPI.messaging.broadcast({
|
|
1646
|
+
this.scheduleAssetUpdater();
|
|
1647
|
+
broadcast({
|
|
1628
1648
|
what: 'assetsUpdated',
|
|
1629
1649
|
assetKeys: details.assetKeys
|
|
1630
1650
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
'use strict';
|
|
25
25
|
|
|
26
|
+
import { onBroadcast } from './broadcast.js';
|
|
26
27
|
import { dom, qs$ } from './dom.js';
|
|
27
28
|
|
|
28
29
|
/******************************************************************************/
|
|
@@ -254,8 +255,7 @@ async function updateFilterLists() {
|
|
|
254
255
|
if ( dom.body.dataset.shouldUpdateLists === undefined ) { return false; }
|
|
255
256
|
dom.cl.add(dom.body, 'updating');
|
|
256
257
|
const assetKeys = JSON.parse(dom.body.dataset.shouldUpdateLists);
|
|
257
|
-
vAPI.messaging.send('dashboard', { what: '
|
|
258
|
-
vAPI.messaging.send('dashboard', { what: 'forceUpdateAssets' });
|
|
258
|
+
vAPI.messaging.send('dashboard', { what: 'supportUpdateNow', assetKeys });
|
|
259
259
|
return true;
|
|
260
260
|
}
|
|
261
261
|
|
|
@@ -316,7 +316,7 @@ uBlockDashboard.patchCodeMirrorEditor(cmEditor);
|
|
|
316
316
|
});
|
|
317
317
|
}
|
|
318
318
|
|
|
319
|
-
|
|
319
|
+
onBroadcast(msg => {
|
|
320
320
|
if ( msg.what === 'assetsUpdated' ) {
|
|
321
321
|
dom.cl.remove(dom.body, 'updating');
|
|
322
322
|
dom.cl.add(dom.body, 'updated');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2018 Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -687,6 +687,7 @@ const bodyFilterer = (( ) => {
|
|
|
687
687
|
'application/vnd.api+json',
|
|
688
688
|
'application/vnd.apple.mpegurl',
|
|
689
689
|
'application/vnd.apple.mpegurl.audio',
|
|
690
|
+
'application/x-javascript',
|
|
690
691
|
'application/x-mpegurl',
|
|
691
692
|
'application/xhtml+xml',
|
|
692
693
|
'application/xml',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -23,12 +23,13 @@
|
|
|
23
23
|
|
|
24
24
|
/******************************************************************************/
|
|
25
25
|
|
|
26
|
-
import contextMenu from './contextmenu.js';
|
|
27
|
-
import cosmeticFilteringEngine from './cosmetic-filtering.js';
|
|
28
26
|
import io from './assets.js';
|
|
29
27
|
import µb from './background.js';
|
|
30
|
-
import {
|
|
28
|
+
import { broadcast, filteringBehaviorChanged, onBroadcast } from './broadcast.js';
|
|
29
|
+
import contextMenu from './contextmenu.js';
|
|
30
|
+
import cosmeticFilteringEngine from './cosmetic-filtering.js';
|
|
31
31
|
import { redirectEngine } from './redirect-engine.js';
|
|
32
|
+
import { hostnameFromURI } from './uri-utils.js';
|
|
32
33
|
|
|
33
34
|
import {
|
|
34
35
|
permanentFirewall,
|
|
@@ -147,7 +148,7 @@ const matchBucket = function(url, hostname, bucket, start) {
|
|
|
147
148
|
}
|
|
148
149
|
bucket.push(directive);
|
|
149
150
|
this.saveWhitelist();
|
|
150
|
-
|
|
151
|
+
filteringBehaviorChanged({ hostname: targetHostname });
|
|
151
152
|
return true;
|
|
152
153
|
}
|
|
153
154
|
|
|
@@ -188,7 +189,7 @@ const matchBucket = function(url, hostname, bucket, start) {
|
|
|
188
189
|
}
|
|
189
190
|
}
|
|
190
191
|
this.saveWhitelist();
|
|
191
|
-
|
|
192
|
+
filteringBehaviorChanged({ direction: 1 });
|
|
192
193
|
return true;
|
|
193
194
|
};
|
|
194
195
|
|
|
@@ -344,7 +345,7 @@ const matchBucket = function(url, hostname, bucket, start) {
|
|
|
344
345
|
}
|
|
345
346
|
break;
|
|
346
347
|
case 'autoUpdate':
|
|
347
|
-
this.scheduleAssetUpdater(value ?
|
|
348
|
+
this.scheduleAssetUpdater({ updateDelay: value ? 2000 : 0 });
|
|
348
349
|
break;
|
|
349
350
|
case 'cnameUncloakEnabled':
|
|
350
351
|
if ( vAPI.net.canUncloakCnames === true ) {
|
|
@@ -423,7 +424,7 @@ const matchBucket = function(url, hostname, bucket, start) {
|
|
|
423
424
|
redirectEngine.invalidateResourcesSelfie(io);
|
|
424
425
|
this.loadRedirectResources();
|
|
425
426
|
}
|
|
426
|
-
|
|
427
|
+
broadcast({ what: 'hiddenSettingsChanged' });
|
|
427
428
|
};
|
|
428
429
|
|
|
429
430
|
/******************************************************************************/
|
|
@@ -524,7 +525,7 @@ const matchBucket = function(url, hostname, bucket, start) {
|
|
|
524
525
|
cosmeticFilteringEngine.removeFromSelectorCache(srcHostname, 'net');
|
|
525
526
|
|
|
526
527
|
// Flush caches
|
|
527
|
-
|
|
528
|
+
filteringBehaviorChanged({
|
|
528
529
|
direction: action === 1 ? 1 : 0,
|
|
529
530
|
hostname: srcHostname,
|
|
530
531
|
});
|
|
@@ -613,7 +614,7 @@ const matchBucket = function(url, hostname, bucket, start) {
|
|
|
613
614
|
switch ( details.name ) {
|
|
614
615
|
case 'no-scripting':
|
|
615
616
|
case 'no-remote-fonts':
|
|
616
|
-
|
|
617
|
+
filteringBehaviorChanged({
|
|
617
618
|
direction: details.state ? 1 : 0,
|
|
618
619
|
hostname: details.hostname,
|
|
619
620
|
});
|
|
@@ -677,7 +678,10 @@ const matchBucket = function(url, hostname, bucket, start) {
|
|
|
677
678
|
|
|
678
679
|
parse();
|
|
679
680
|
|
|
680
|
-
|
|
681
|
+
onBroadcast(msg => {
|
|
682
|
+
if ( msg.what !== 'hiddenSettingsChanged' ) { return; }
|
|
683
|
+
parse();
|
|
684
|
+
});
|
|
681
685
|
}
|
|
682
686
|
|
|
683
687
|
/******************************************************************************/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2014-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*******************************************************************************
|
|
2
2
|
|
|
3
|
-
uBlock Origin - a
|
|
3
|
+
uBlock Origin - a comprehensive, efficient content blocker
|
|
4
4
|
Copyright (C) 2015-present Raymond Hill
|
|
5
5
|
|
|
6
6
|
This program is free software: you can redistribute it and/or modify
|