Commit graph

73 commits

Author SHA1 Message Date
Raymond Hill
ed7e34fb07
Refactor selfie generation into a more flexible persistence mechanism
The motivation is to address the higher peak memory usage at launch
time with 3rd-gen HNTrie when a selfie was present.

The selfie generation prior to this change was to collect all
filtering data into a single data structure, and then to serialize
that whole structure at once into storage (using JSON.stringify).

However, HNTrie serialization requires that a large UintArray32 be
converted into a plain JS array, which itslef would be indirectly
converted into a JSON string. This was the main reason why peak
memory usage would be higher at launch from selfie, since the JSON
string would need to be wholly unserialized into JS objects, which
themselves would need to be converted into more specialized data
structures (like that Uint32Array one).

The solution to lower peak memory usage at launch is to refactor
selfie generation to allow a more piecemeal approach: each filtering
component is given the ability to serialize itself rather than to be
forced to be embedded in the master selfie. With this approach, the
HNTrie buffer can now serialize to its own storage by converting the
buffer data directly into a string which can be directly sent to
storage. This avoiding expensive intermediate steps such as
converting into a JS array and then to a JSON string.

As part of the refactoring, there was also opportunistic code
upgrade to ES6 and Promise (eventually all of uBO's code will be
proper ES6).

Additionally, the polyfill to bring getBytesInUse() to Firefox has
been revisited to replace the rather expensive previous
implementation with an implementation with virtually no overhead.
2019-02-14 13:33:55 -05:00
Raymond Hill
41548be6be
Move early blocking of requests out of experimental status on Firefox
Related issues:
- https://github.com/gorhill/uBlock/issues/2067
- https://github.com/uBlockOrigin/uBlock-issues/issues/128

Related mozbug issue:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1503721
2018-12-23 17:59:31 -05:00
Raymond Hill
e7d4aff2a2
fix https://github.com/uBlockOrigin/uBlock-issues/issues/328 2018-12-05 19:18:20 -05:00
Raymond Hill
d7d544cda0
Squashed commit of the following:
commit 7c6cacc59b27660fabacb55d668ef099b222a9e6
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Sat Nov 3 08:52:51 2018 -0300

    code review: finalize support for wasm-based hntrie

commit 8596ed80e3bdac2c36e3c860b51e7189f6bc8487
Merge: cbe1f2e 000eb82
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Sat Nov 3 08:41:40 2018 -0300

    Merge branch 'master' of github.com:gorhill/uBlock into trie-wasm

commit cbe1f2e2f38484d42af3204ec7f1b5decd30f99e
Merge: 270fc7f dbb7e80
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Fri Nov 2 17:43:20 2018 -0300

    Merge branch 'master' of github.com:gorhill/uBlock into trie-wasm

commit 270fc7f9b3b73d79e6355522c1a42ce782fe7e5c
Merge: d2a89cf d693d4f
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Fri Nov 2 16:21:08 2018 -0300

    Merge branch 'master' of github.com:gorhill/uBlock into trie-wasm

commit d2a89cf28f0816ffd4617c2c7b4ccfcdcc30e1b4
Merge: d7afc78 649f82f
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Fri Nov 2 14:54:58 2018 -0300

    Merge branch 'master' of github.com:gorhill/uBlock into trie-wasm

commit d7afc78b5f5675d7d34c5a1d0ec3099a77caef49
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Fri Nov 2 13:56:11 2018 -0300

    finalize wasm-based hntrie implementation

commit e7b9e043cf36ad055791713e34eb0322dec84627
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Fri Nov 2 08:14:02 2018 -0300

    add first-pass implementation of wasm version of hntrie

commit 1015cb34624f3ef73ace58b58fe4e03dfc59897f
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Wed Oct 31 17:16:47 2018 -0300

    back up draft work toward experimenting with wasm hntries
2018-11-03 08:58:46 -03:00
Raymond Hill
9039874fc9
refactor some webRequest-related code (now that firefox legacy is out of the way) 2018-10-28 10:58:25 -03:00
Raymond Hill
b5ef2d0105
code review for https://github.com/gorhill/uBlock/commit/0322d03303cd -- fix handling of rc versions 2018-09-11 08:42:02 -04:00
Raymond Hill
0322d03303
fix https://github.com/uBlockOrigin/uBlock-issues/issues/212 2018-09-11 08:37:32 -04:00
Raymond Hill
6d34a52179
fix #2859 2018-09-03 14:06:49 -04:00
Raymond Hill
c57c760b1e
code review for https://github.com/uBlockOrigin/uBlock-issues/issues/106 2018-07-20 13:52:14 -04:00
Raymond Hill
b5016a1f7a
fix https://github.com/uBlockOrigin/uBlock-issues/issues/136 2018-07-19 22:13:06 -04:00
Raymond Hill
ef455deb0a
fix https://github.com/uBlockOrigin/uBlock-issues/issues/106 2018-07-18 18:00:55 -04:00
Raymond Hill
efe68e0f9c
fix https://www.reddit.com/r/firefox/comments/8a5e0e/if_you_find_firefox_for_android_slow_disable/dy7q6w2/ 2018-04-30 13:00:12 -04:00
Raymond Hill
4d8974fe80
code review: avoid redundant PSL selfie 2018-04-06 16:02:35 -04:00
Raymond Hill
93f49a61d7
add pre-processor directives to filter list compiler (https://github.com/AdguardTeam/AdguardBrowserExtension/issues/917) 2018-04-05 07:29:15 -04:00
Raymond Hill
98df44c373
invalidate resources selfie when new version is detected [Firefox] 2018-04-02 11:03:12 -04:00
Raymond Hill
2632cf63b2
code review for 588a8acc 2018-03-31 12:12:31 -04:00
Raymond Hill
588a8accb1
add default noop rules for behind-the-scene scope 2018-03-31 10:21:11 -04:00
Raymond Hill
0451758163
mind rc when deriving an integer from version string 2018-03-30 09:58:30 -04:00
Raymond Hill
0a879a816b
treat behind-the-scene network requests like all others 2018-03-30 08:55:51 -04:00
Raymond Hill
23accd1c57
fix #3615 2018-03-17 10:25:03 -04:00
Raymond Hill
17930cc778
fix #3474, #2823 2018-02-15 17:25:38 -05:00
Raymond Hill
a9f68fe02f
Fix #3069, and consequently #3374, #3378.
A new filtering class has been created: "static extended filtering".
This new class is an umbrella class for more specialized filtering
engines:
- Cosmetic filtering
- Scriptlet filtering
- HTML filtering

HTML filtering is available only on platforms which support modifying
the response body on the fly, so only Firefox 57+ at the moment.

With the ability to modify the response body, HTML filtering has
been introduced: removing elements from the DOM before the source
data has been parsed by the browser.

A consequence of HTML filtering ability is to bring back script tag
filtering feature.
2017-12-28 13:49:02 -05:00
gorhill
f516cd3d26
remove unused source code 2017-10-23 13:33:35 -04:00
gorhill
beb7933016
fix #2925 2017-08-29 18:32:00 -04:00
gorhill
4d1ed37556 Firefox WebExt readiness (#622) + support more webRequest types when available (websocket, font, csp_report) 2017-03-05 08:25:55 -05:00
gorhill
aadf4a6427 fix #2340 2017-01-26 10:17:38 -05:00
Raymond Hill
3b9fd49c50 Assets management refactored (#2314)
* refactoring assets management code

* finalizing refactoring of assets management

* various code review of new assets management code

* fix #2281

* fix #1961

* fix #1293

* fix #1275

* fix update scheduler timing logic

* forward compatibility (to be removed once 1.11+ is widespread)

* more codereview; give admins ability to specify own assets.json

* "assetKey" is more accurate than "path"

* fix group count update when building dom incrementally

* reorganize content (order, added URLs, etc.)

* ability to customize updater through advanced settings

* better spinner icon
2017-01-18 13:17:47 -05:00
gorhill
4d0eaf3b3c code review: various minor changes 2016-11-07 14:53:04 -05:00
gorhill
ee4fc2aed6 code review re advanced settings + added popupFontSize 2016-11-06 16:27:21 -05:00
gorhill
c6793eff98 code review re. #2067 2016-11-03 23:42:03 -04:00
gorhill
8c3da95d65 fix #2067 (experimental) + support for hidden settings 2016-11-03 11:20:47 -04:00
gorhill
0abc257fee fix #2119 2016-11-02 00:27:16 -04:00
gorhill
50889da226 code review re. 3628de7a9d 2016-10-29 10:28:50 -04:00
gorhill
e01a130bc5 changes required to use chromium platform code for webext platform code 2016-10-19 10:20:26 -04:00
gorhill
2e953b45c9 make cloud storage support optional
(currently not supported on FF-webext and MS Edge)
2016-10-16 13:04:31 -04:00
gorhill
e9157bafb7 fix #1892, #1891 2016-08-13 16:42:58 -04:00
gorhill
2ea36d6a7f fix https://github.com/uBlockOrigin/uAssets/issues/50 2016-05-26 08:34:28 -04:00
gorhill
324c26b20c code review: cleanup cosmetic filtering engine on shutdown 2016-03-04 20:25:35 -05:00
gorhill
89148351e8 #1163: this implements "block elements by size" 2016-01-17 13:30:43 -05:00
gorhill
16a128dff0 this fixes #747 2016-01-03 13:58:25 -05:00
gorhill
043825285c this fixes an issue with the updating of redirection resources 2015-12-15 21:34:36 -05:00
gorhill
0c5ef268ad sensible default rules in case one un-whitelist behind-the-scene + use default deny 2015-12-04 18:05:20 -05:00
gorhill
72f5e44ec0 code review 2015-11-29 17:06:58 -05:00
gorhill
ba96a4ff4a redirect engine: selfie-able + update-able 2015-11-29 11:04:42 -05:00
gorhill
ba8b9ba008 redirection engine: code review 2015-11-23 23:34:03 -05:00
gorhill
2aadc2a969 new redirect engine: this fixes #949 (the video ad part) 2015-11-23 07:52:50 -05:00
gorhill
892913d185 this fixes #832 2015-10-21 11:53:03 -04:00
gorhill
690421aead sync feature (#80): draft 2015-08-11 15:29:14 -04:00
gorhill
2509bceaff this addresses #531 2015-07-27 10:10:34 -04:00
gorhill
1ba7894a29 ability to prevent local ip address leak thru webrtc 2015-06-24 20:01:27 -04:00