Commit Graph

9573 Commits

Author SHA1 Message Date
Raymond Hill 4d482f9133
Store regex filter pattern into bidi-trie buffer
As was done with generic pattern-based filters, the source
string of regex-based filters is now stored into the
bidi-trie (pattern) buffer.

Additionally, added a new "dev tools" page to more
conveniently peer into uBO's internals at run time, without
having to do so from the browser's dev console -- something
which has become more difficult with the use of JS modules.

The new page can be launched from the Support pane through
the "More" button in the troubleshooting section.

The benchmark button in the About pane has been moved to this
new "dev tools" page.

The new "dev tools" page is for development purpose only,
do not open issues about it.
2021-12-12 10:32:49 -05:00
Raymond Hill d6d80e60c0
Make Firefox dev build auto-update 2021-12-11 10:01:48 -05:00
Raymond Hill ef9ca57c35
Update submodules 2021-12-11 09:54:53 -05:00
Raymond Hill 25fc118337
New revision for dev build 2021-12-11 09:54:43 -05:00
Raymond Hill 3b7a265ee2
Ignore pointless trailling `*^` in network filters
There are currently over 160 patterns with such pointless
trailing `*^` in uBO's filter lists, which ended up being
compiled as generic pattern filters (i.e. regex-based
internally), while the trailing `*^` accomplishes nothing
since it will always match the end of a URL ( `^` can
also match the end of URL).

This commit discards pointless trailing `*^` in patterns,
thus allowing most of those filters to be compiled as
plain pattern filters.

The syntax highlighter will reflect that a trailing
`*^` is pointless.
2021-12-11 09:45:25 -05:00
Raymond Hill ca1ec1461b
Narrow usage of `webRTCIPHandlingPolicy` to only `firefox`
In addition of `mobile`, just in case -- some people are
using mobile version of chromium out there.
2021-12-11 07:37:18 -05:00
Raymond Hill 7a908d293f
Remove obsolete setting
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/discussions/1872
2021-12-11 05:56:34 -05:00
Raymond Hill 59db565796
Update CDN URLs for pup-filters
Related feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1766#issuecomment-991017061
2021-12-10 09:35:56 -05:00
Raymond Hill 461ff10ec4
Make Firefox dev build auto-update 2021-12-10 08:51:34 -05:00
Raymond Hill 1cfcb1623f
New revision for dev build 2021-12-10 08:29:33 -05:00
Raymond Hill f9e4a10933
Adjust compile/selfie format verison 2021-12-10 08:05:45 -05:00
Raymond Hill 54074af029
Avoid counting `important` filters as two filters
Rearrange logic to instantiate and add `important` filters
to the block realm when compiled lists are loaded instead
of when lists are compiled.

Additionally, removed now unused properties following
commit 68e14793cc.
2021-12-10 07:56:15 -05:00
Raymond Hill 6ebebbe23c
Adjust color of cloud storage widget for datk theme
Related feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1867
2021-12-10 07:52:52 -05:00
Raymond Hill 1490fd606b
Simplify often-executed regex 2021-12-10 07:47:21 -05:00
Raymond Hill c71b7c7a42
Merge `launchFromSelfie` into `launchToReadiness` 2021-12-08 13:43:02 -05:00
Raymond Hill 43d8f52083
Make Firefox dev build auto-update 2021-12-08 12:21:34 -05:00
Raymond Hill aad4e8dde4
New revision for dev build 2021-12-08 12:12:49 -05:00
Raymond Hill d17d634b7c
Define new nobab scriptlet
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1863

As per internal discussion with team, best to have a simpler
scriplet, and which is hard-coded to work only on a specific
set of domains -- only those seen used by BAB.
2021-12-08 12:10:18 -05:00
Raymond Hill 66ce8dcb78
Make Firefox dev build auto-update 2021-12-08 10:56:49 -05:00
Raymond Hill c552aa110e
Import translation work from https://crowdin.com/project/ublock 2021-12-08 10:44:57 -05:00
Raymond Hill a354f41f90
New revision for dev build 2021-12-08 10:38:01 -05:00
Raymond Hill 2b2af1f20d
Store generic pattern string into bidi-trie buffer 2021-12-08 10:26:52 -05:00
Raymond Hill 92ad101557
Update nobab.js scriptlet
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1863

As discussed internally with uBO filters team.
2021-12-08 10:24:03 -05:00
Raymond Hill 72bb89495b
Change compiled list format to a saner block id management
Just use self-described readable section identifiers instead
of difficult-to-manage arbitrary integers.
2021-12-07 11:15:14 -05:00
Raymond Hill 8309cc548e
Make Firefox dev build auto-update 2021-12-06 12:16:16 -05:00
Raymond Hill 62231b73e5
New revision for dev build 2021-12-06 12:08:58 -05:00
Raymond Hill 68e14793cc
Remove classes specialized in handling single-wildcarded patterns
Turns out the various benchmarks show no benefits when compiling
filters whose pattern contains a single wildcard character into
specialized classes which threat the pattern as two sub-patterns,
and actually there is a slight improvement in performance as per
benchamrks when treating these patterns as generic ones.

This also fixes the following related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1207
2021-12-06 12:03:52 -05:00
Raymond Hill 55fc4ba5e5
Use effective frame URL for `about:blank` frames
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1858
2021-12-06 11:59:48 -05:00
Raymond Hill 3004c8832a
Fix `dig-snfe modifiers` to properly detect changes in results 2021-12-06 08:01:05 -05:00
Raymond Hill 38a96603c1
Make Firefox dev build auto-update 2021-12-06 07:16:48 -05:00
Raymond Hill 190bbf627b
New revision for dev build 2021-12-06 07:07:22 -05:00
Raymond Hill d3fe0ccfe0
Fix regression with `csp=`, deprecate `queryprune`, etc
Fixed serious regression in previous dev build in applying
`csp=` filters. Reported internally by uBO team.

Promote usage of `removeparam` in code instead of `queryprune`,
which is to be deprecated.

Removed test against previously tested hostname in
FilterHostnameDict since as per various benchmark, the
test does not really help.

Remove serialization API in Node.js code as the API is now
present in SNFE itself.
2021-12-06 07:01:39 -05:00
Raymond Hill 7888e49c00
Fix race condition when loading from selfie
All the auxiliary data structures must be fully loaded before
the data structure used as entry point is populated. The race
condition could lead to a case of the entry point data structure
being populated while the auxiliary data structures are still
unpopulated, potentially causing exceptions to be thrown at
launch when the static network filtering engine is queried.

I haven't been able to reproduce such exceptions -- but it
could happen on browsers which do not support being suspended
at launch time (i.e. chromium-based browsers).

Additionally, added convenience methods to easily
serialize/unserialize when SNFE is used as a npm package.
2021-12-05 14:05:32 -05:00
Raymond Hill 5c66310c0a
Make Firefox dev build auto-update 2021-12-05 09:22:00 -05:00
Raymond Hill ae124065af
New revision for dev build 2021-12-05 09:12:55 -05:00
Raymond Hill 0948ad7d0a
Import translation work from https://crowdin.com/project/ublock 2021-12-05 09:11:28 -05:00
Raymond Hill 634ffc9d14
Fix throttling of optimization cycles
This should help lower time-to-readiness when uBO
is launched on less powerful devices.
2021-12-05 09:07:02 -05:00
Raymond Hill 71d2466eff
Make Firefox dev build auto-update 2021-12-04 17:16:36 -05:00
Raymond Hill 4b68f28e08
New revision for dev build 2021-12-04 17:10:51 -05:00
Raymond Hill b78b277907
Add missing code to properly grow buffer
Related feedback:
- https://github.com/orgs/uBlockOrigin/teams/ublock-issues-volunteers/discussions/293

Related commit:
- 725e6931f5

Through all the changes, forgot to pay attention to scenarios
where the `filterData` needs to grow -- the buffer's defautl
size is set to accomodate default filter lists, and subscribing
to more lists would cause the static network filtering engine
to fail because the buffer was not resized when needed.
2021-12-04 17:06:09 -05:00
Raymond Hill b98836ab8e
Fix NPM package documentation 2021-12-04 12:40:43 -05:00
Raymond Hill 82f31e7863
Bump npm package version number 2021-12-04 12:34:36 -05:00
Raymond Hill 7cf079cc0f
Make Firefox dev build auto-update 2021-12-04 12:07:02 -05:00
Raymond Hill 7c6d3241bb
Import translation work from https://crowdin.com/project/ublock 2021-12-04 11:57:45 -05:00
Raymond Hill 5c10b13ade
Fix text in Support pane, as per feedback
Related feedback:
- https://crowdin.com/translate/ublock/13/enca-nl?filter=basic&value=4#1153
2021-12-04 11:53:23 -05:00
Raymond Hill 0df8986b52
Fix `make lint` warning 2021-12-04 11:48:17 -05:00
Raymond Hill e8e7294431
New revision for dev build 2021-12-04 11:45:43 -05:00
Raymond Hill 725e6931f5
Refactoring work in static network filtering engine
The original motivation is to further speed up launch time
for either non-selfie-based and selfie-based initialization
of the static network filtering engine (SNFE).

As a result of the refactoring:

Filters are no longer instance-based, they are sequence-of-
integer-based. This eliminates the need to create instances
of filters at launch, and consequently eliminates all the
calls to class constructors, the resulting churning of memory,
and so forth.

All the properties defining filter instances are now as much
as possible 32-bit integer-based, and these are allocated in a
single module-scoped typed array -- this eliminates the need
to allocate memory for every filter being instantiated.

Not all filter properties can be represented as a 32-bit
integer, and in this case a filter class can allocate slots
into another module-scoped array of references.

As a result, this eliminates a lot of memory allocations when
the SNFE is populated with filters, and this makes the saving
and loading of selfie more straightforward, as the operation
is reduced to saving/loading two arrays, one of 32-bit
integers, and the other, much smaller, an array JSON-able
values.

All filter classes now only contain static methods, and all
of these methods are called with an index to the specific
filter data in the module-scoped array of 32-bit integers.

The filter sequences (used to avoid the use of JS arrays) are
also allocated in the single module-scoped array of 32-bit
integers -- they used to be stored in their own dedicated
array.

Additionally, some filters are now loaded more in a deferred
way, so as reduce uBO's time-to-readiness -- the outcome of
this still needs to be evaluated, time-to-readiness is
especially a concern in Firefox for Android or less powerful
computers.
2021-12-04 11:16:44 -05:00
Raymond Hill 64f427d0e5
Have `getAll()` returns at least one neutered Tracker object
Related discussion:
- https://github.com/uBlockOrigin/uAssets/issues/10731#issuecomment-986031354
2021-12-04 11:07:19 -05:00
Raymond Hill ccc4c7d41f
Log selfie-related events at launch time 2021-12-04 10:55:33 -05:00