Commit graph

2357 commits

Author SHA1 Message Date
Raymond Hill
5733439f62
Leverage whotracks.me's huge dataset of URLs for benchmark purpose
As seen at:
  https://whotracks.me/blog/adblockers_performance_study.html

The requests.json.gz file can be downloaded from:
  https://cdn.cliqz.com/adblocking/requests_top500.json.gz

Copy the file into ./tmp/requests.json.gz

If the file is present when you build uBO using `make-[target].sh` from
the shell, the resulting package will contain `./assets/requests.json`,
which will be looked-up by the method below to launch a benchmark
session.

From uBO's dev console, launch the benchmark:
  µBlock.staticNetFilteringEngine.benchmark();

The usual browser dev tools can be used to obtain useful profiling
data, i.e. start the profiler, call the benchmark method from the
console, then stop the profiler when it completes.

Keep in mind that the measurements at the blog post above where obtained
with ONLY EasyList. The CPU reportedly used was:
  https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-6600U+%40+2.60GHz&id=2608

Rename ./tmp/requests.json.gz to something else if you no longer want
./assets/requests.json in the build.
2019-02-15 16:18:03 -05:00
Raymond Hill
b1f7739cba
Import translation work from https://crowdin.com/project/ublock 2019-02-15 07:50:28 -05:00
Raymond Hill
515b7cdcfc
Use proper embedding context when evluating inline-script
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/422
2019-02-15 07:37:43 -05:00
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
2fb4dc8358
Update PSL library to latest official version 2019-02-12 12:00:20 -05:00
Raymond Hill
1e2969c3b0
Update PSL library to last version 2019-02-12 07:59:38 -05:00
Raymond Hill
0c976992ba
Import translation work from https://crowdin.com/project/ublock 2019-02-10 12:26:48 -05:00
Raymond Hill
4da340384a
Update publicSuffixLibrary to latest (WASM-able) version
See https://github.com/gorhill/publicsuffixlist.js
2019-02-10 12:19:05 -05:00
Raymond Hill
29b10d2151
Tone down logger visual for tab-less network requests 2019-02-05 12:05:00 -05:00
Raymond Hill
d432f78b66
Import translation work from https://crowdin.com/project/ublock 2019-02-05 07:04:52 -05:00
Raymond Hill
4c428edeef
Import translation work from https://crowdin.com/project/ublock 2019-02-02 08:14:47 -05:00
Raymond Hill
656203adc7
Minor generic code review of changes since 1.18.2 2019-02-02 08:09:34 -05:00
Raymond Hill
fc03782985
Ensure that WASM module was actually loaded 2019-02-01 09:09:51 -05:00
Raymond Hill
ff269d793d
Use indexedDB instead of for cacheStorageAPI value 2019-02-01 08:27:28 -05:00
Raymond Hill
69c87c5117
Fix Promise chain of WASM module load operations
The Promise chain was not properly designed for WASM module
loading. This became apparent when removing WASM modules
from Opera build[1].

The problem was that errors thrown by fetch() -- used to
load WASM modules -- were not properly handled.

[1] Opera refuses updating uBO if there are unrecognized file
types in the package, and `.wasm`/`.wat` files are not
recognized by Opera uploader.
2019-02-01 08:20:43 -05:00
Raymond Hill
923c5ce5bd
Compute URL of sublists as relative to URL of parent list
Related issue:
- https://github.com/NanoAdblocker/NanoCore/issues/239

The erroneous behavior was to compute the URL of a sublist as
relative to the URL of the root list, which may differ from the
URL of a parent list.
2019-01-29 11:52:16 -05:00
Raymond Hill
3195f554f7
Fix partyness evaluation for cases of base domain-less hostnames
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/402
2019-01-29 10:34:58 -05:00
Raymond Hill
98307e07cb
Import translation work from https://crowdin.com/project/ublock 2019-01-28 16:22:41 -05:00
Raymond Hill
d7c169c587
Import translation work from https://crowdin.com/project/ublock 2019-01-27 17:24:26 -05:00
Raymond Hill
15100459b3
Harden content script's message Port against spurious disconnections
Those spurious disconnections have been observed to occur at
uBO's launch time.

Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/403

I have observed that this fixes an issue observed on Firefox 64
(current stable).

The reported Waterfox issue *may* be fixed as a result. If not,
the issue he still considered fixed as Waterfox is not
officially supported.
2019-01-27 17:07:40 -05:00
Raymond Hill
85d6339b07
Code review for a026e9ae54: no need to be so flexible 2019-01-25 18:58:49 -05:00
Raymond Hill
a026e9ae54
Fix reverting use of IndexedDB as default cache storage on Chromium
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/399

The advanced setting `cacheStorageAPI` has been added to allow
a user to force the use of IndexedDB as cache storage. Set to
`IndexedDB` to force use of IndexedDB. Default to `unset`.
2019-01-25 18:49:30 -05:00
Raymond Hill
185ebf0d7d
Import translation work from https://crowdin.com/project/ublock 2019-01-25 08:47:39 -05:00
Raymond Hill
ba7baec1f4
Import translation work from https://crowdin.com/project/ublock 2019-01-24 07:06:43 -05:00
Raymond Hill
b214ec1bae
Ensure pointer-events style is set to auto at element picker launch
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/393
2019-01-23 17:11:07 -05:00
Raymond Hill
be76714cfc
Import translation work from https://crowdin.com/project/ublock 2019-01-22 06:53:09 -05:00
Raymond Hill
9e89dd4f26
Fix missing partyness in logger when empty domain in resource URL 2019-01-22 06:13:30 -05:00
Raymond Hill
a668893427
Import translation work from https://crowdin.com/project/ublock 2019-01-21 12:18:10 -05:00
Raymond Hill
64e0498084
Import translation work from https://crowdin.com/project/ublock 2019-01-20 12:35:25 -05:00
Raymond Hill
16a0ebbfb0
Import translation work from https://crowdin.com/project/ublock 2019-01-19 09:09:37 -05:00
Raymond Hill
1de821d99b
Apply stricter rejection of usage of url() in :style rules 2019-01-18 19:07:31 -05:00
Raymond Hill
6d19c4be88
Import translation work from https://crowdin.com/project/ublock 2019-01-18 06:57:47 -05:00
Raymond Hill
ff6991c292
Import translation work from https://crowdin.com/project/ublock 2019-01-17 15:54:43 -05:00
Raymond Hill
52526b74d9
Minor visual change to logger 2019-01-17 15:49:18 -05:00
Raymond Hill
299afacd99
Import translation work from https://crowdin.com/project/ublock 2019-01-17 08:07:24 -05:00
Raymond Hill
4df8e9be41
Add logger "Export"-related strings for i18n 2019-01-17 08:03:50 -05:00
Raymond Hill
801eb43572
Prevent info entries from polluting logger output
These entries are meant to be shown only when using "All"
mode, not when the output is narrowed to a specific tab.
2019-01-16 13:29:34 -05:00
Raymond Hill
0c80994124
Fine tune visuals in logger's export-to-clipboard dialog 2019-01-16 12:02:16 -05:00
Raymond Hill
5f341e02ed
Import translation work from https://crowdin.com/project/ublock 2019-01-16 07:32:18 -05:00
Raymond Hill
e8ff6a2abf
Prevent sites from disabling mouse events for element picker
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/380

Previous fix was incorrect:
84818fcd84

Additionally, I fixed the "Network filters" or "Cosmetic filters"
sections not being properly hidden when there was not valid
filters found.
2019-01-15 16:34:57 -05:00
Raymond Hill
86e5d0384c
Fix minor logger quirks as per feedback 2019-01-15 15:12:47 -05:00
Raymond Hill
84818fcd84
Prevent sites from disabling mouse events for the element picker
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/380
2019-01-15 14:41:23 -05:00
Raymond Hill
0b73808bf7
Import translation work from https://crowdin.com/project/ublock 2019-01-15 08:42:28 -05:00
Raymond Hill
3b206fd224
Put back 'Static filter' instead of just 'Filter' 2019-01-15 08:32:39 -05:00
Raymond Hill
b0fb6d678d
Fix regression from 0edf53f508 (diff-a51c8c4aedf62ea9aec5e71f3b1427c3R624) 2019-01-15 08:18:45 -05:00
Raymond Hill
5d5b05b387
Fix an issue in new logger export feature
Specifically, if selecting table+markdown, the export dialog
would no longer be accessible once closed.
2019-01-14 16:52:13 -05:00
Raymond Hill
ac5bae6a65
Import translation work from https://crowdin.com/project/ublock 2019-01-14 15:10:28 -05:00
Raymond Hill
0edf53f508
Add export-to-clipboard feature to logger
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/334

Additionally, a number of smallish issues following
refactoring of the logger code were addressed.
2019-01-14 14:57:31 -05:00
Raymond Hill
88a54d442d
Import translation work from https://crowdin.com/project/ublock 2019-01-14 08:08:09 -05:00
Raymond Hill
3be59f172d
Use blocked/allowed colors in logger's "Details" pane
Additionally, another attempt at making the logger render
better on small-screen devices.
2019-01-13 08:34:17 -05:00