1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-11-05 18:32:30 +01:00
Commit Graph

2904 Commits

Author SHA1 Message Date
Raymond Hill
30393fdcf1
Exclude data type (i.e. csp=) from bidi-trie
We need a `matchAll()` method on the bidi-trie before
we can store filters of type `data` in it.

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

Related commit:
- 7971b22385
2019-10-22 18:14:49 -04:00
Raymond Hill
7971b22385
Expand bidi-trie usage in static network filtering engine
Related issues:
- https://github.com/uBlockOrigin/uBlock-issues/issues/761
- https://github.com/uBlockOrigin/uBlock-issues/issues/528

The previous bidi-trie code could only hold filters which
are plain pattern, i.e. no wildcard characters, and which
had no origin option (`domain=`), right and/or left anchor,
and no `csp=` option.

Example of filters that could be moved into a bidi-trie
data structure:

    &ad_box_
    /w/d/capu.php?z=$script,third-party
    ||liveonlinetv247.com/images/muvixx-150x50-watch-now-in-hd-play-btn.gif

Examples of filters that could NOT be moved to a bidi-trie:

    -adap.$domain=~l-adap.org
    /tsc.php?*&ses=
    ||ibsrv.net/*forumsponsor$domain=[...]
    @@||imgspice.com/jquery.cookie.js|$script
    ||view.atdmt.com^*/iview/$third-party
    ||postimg.cc/image/$csp=[...]

Ideally the filters above should be able to be moved to a
bidi-trie since they are basically plain patterns, or at
least partially moved to a bidi-trie when there is only a
single wildcard (i.e. made of two plain patterns).

Also, there were two distinct bidi-tries in which
plain-pattern filters can be moved to: one for patterns
without hostname anchoring and another one for patterns
with hostname-anchoring. This was required because the
hostname-anchored patterns have an extra condition which
is outside the bidi-trie knowledge.

This commit expands the number of filters which can be
stored in the bidi-trie, and also remove the need to
use two distinct bidi-tries.

- Added ability to associate a pattern with an integer
  in the bidi-trie [1].
    - The bidi-trie match code passes this externally
      provided integer when calling an externally
      provided method used for testing extra conditions
      that may be present for a plain pattern found to
      be matching in the bidi-trie.

- Decomposed existing filters into smaller logical units:
    - FilterPlainLeftAnchored =>
        FilterPatternPlain +
        FilterAnchorLeft
    - FilterPlainRightAnchored =>
        FilterPatternPlain +
        FilterAnchorRight
    - FilterExactMatch =>
        FilterPatternPlain +
        FilterAnchorLeft +
        FilterAnchorRight
    - FilterPlainHnAnchored =>
        FilterPatternPlain +
        FilterAnchorHn
    - FilterWildcard1 =>
        FilterPatternPlain + [
          FilterPatternLeft or
          FilterPatternRight
        ]
    - FilterWildcard1HnAnchored =>
        FilterPatternPlain + [
          FilterPatternLeft or
          FilterPatternRight
        ] +
        FilterAnchorHn
    - FilterGenericHnAnchored =>
        FilterPatternGeneric +
        FilterAnchorHn
    - FilterGenericHnAndRightAnchored =>
        FilterPatternGeneric +
        FilterAnchorRight +
        FilterAnchorHn
    - FilterOriginMixedSet =>
        FilterOriginMissSet +
        FilterOriginHitSet
    - Instances of FilterOrigin[...], FilterDataHolder
      can also be added to a composite filter to
      represent `domain=` and `csp=` options.

- Added a new filter class, FilterComposite, for
  filters which are a combination of two or more
  logical units. A FilterComposite instance is a
  match when *all* filters composing it are a
  match.

Since filters are now encoded into combination of
smaller units, it becomes possible to extract the
FilterPatternPlain component and store it in the
bidi-trie, and use the integer as a handle for the
remaining extra conditions, if any.

Since a single pattern in the bidi-trie may be a
component for different filters, the associated
integer points to a sequence of extra conditions,
and a match occurs as soon as one of the extra
conditions (which may itself be a sequence of
conditions) is fulfilled.

Decomposing filters which are currently single
instance into sequences of smaller logical filters
means increasing the storage and CPU overhead when
evaluating such filters. The CPU overhead is
compensated by the fact that more filters can now
moved into the bidi-trie, where the first match is
efficiently evaluated. The extra conditions have to
be evaluated if and only if there is a match in the
bidi-trie.

The storage overhead is compensated by the
bidi-trie's intrinsic nature of merging similar
patterns.

Furthermore, the storage overhead is reduced by no
longer using JavaScript array to store collection
of filters (which is what FilterComposite is):
the same technique used in [2] is imported to store
sequences of filters.

A sequence of filters is a sequence of integer pairs
where the first integer is an index to an actual
filter instance stored in a global array of filters
(`filterUnits`), while the second integer is an index
to the next pair in the sequence -- which means all
sequences of filters are encoded in one single array
of integers (`filterSequences` => Uint32Array). As
a result, a sequence of filters can be represented by
one single integer -- an index to the first pair --
regardless of the number of filters in the sequence.

This representation is further leveraged to replace
the use of JavaScript array in FilterBucket [3],
which used a JavaScript array to store collection
of filters. Doing so means there is no more need for
FilterPair [4], which purpose was to be a lightweight
representation when there was only two filters in a
collection.

As a result of the above changes, the map of `token`
(integer)  => filter instance (object) used to
associate tokens to filters or collections of filters
is replaced with a more efficient map of `token`
(integer) to filter unit index (integer) to lookup a
filter object from the global `filterUnits` array.

Another consequence of using one single global
array to store all filter instances means we can reuse
existing instances when a logical filter instance is
parameter-less, which is the case for FilterAnchorLeft,
FilterAnchorRight, FilterAnchorHn, the index to these
single instances is reused where needed.

`urlTokenizer` now stores the character codes of the
scanned URL into a bidi-trie buffer, for reuse when
string matching methods are called.

New method: `tokenHistogram()`, used to generate
histograms of occurrences of token extracted from URLs
in built-in benchmark. The top results of the "miss"
histogram are used as "bad tokens", i.e. tokens to
avoid if possible when compiling filter lists.

All plain pattern strings are now stored in the
bidi-trie memory buffer, regardless of whether they
will be used in the trie proper or not.

Three methods have been added to the bidi-trie to test
stored string against the URL which is also stored in
then bidi-trie.

FilterParser is now instanciated on demand and
released when no longer used.

***

[1] 135a45a878/src/js/strie.js (L120)
[2] e94024d350
[3] 135a45a878/src/js/static-net-filtering.js (L1630)
[4] 135a45a878/src/js/static-net-filtering.js (L1566)
2019-10-21 08:15:58 -04:00
Raymond Hill
f2340bef3c
Fix bad returned value in case of empty URL
Though I do no expect the empty URL case
to ever occur, having the tokenizer return
the wrong value if it ever occur could cause
uBO to malfunction.
2019-10-17 17:23:05 -04:00
Raymond Hill
0f19dfde38
Avoid or defer writing back to cache storage at launch
The readTime property is unused for compiled or selfie
assets, and thus writing back to storage to persist
this property is useless for those assets, and an undue
overhead when reading such assets, especially at launch
time.

Assets are always loaded from their compiled or selfie
counterparts at launch.

This commit will prevent those unnecessary storage
write operations.
2019-10-15 11:42:43 -04:00
Raymond Hill
f117c280d0
Fix minor bugs spotted during code review 2019-10-14 09:03:51 -04:00
Raymond Hill
bf697f344a
Log procedural cosmetic exception filters
Related issue:
- https://github.com/gorhill/uBlock/issues/127

Procedural cosmetic exception filters were the
last class of cosmetic exception filters not
being reported in the logger; this commit fixes
this.

Additionally, ensure that a single DOM listener
can't prevent other listeners from being
processed by throwing an exception. Such approach
would have prevented regression leading to
emergency release 1.22.4:
- https://github.com/gorhill/uBlock/releases/tag/1.22.4
2019-09-30 18:21:24 -04:00
Raymond Hill
7ac908a3f8
Fix regression in logger's reverse-lookup of filters
Related commit:
- e1d75ee602
2019-09-30 11:41:43 -04:00
Raymond Hill
e1d75ee602
Prevent reverse-lookup from finding badfilter-ed filters
This could occur when clicking old entries in the logger
which no longer matched the internal state of uBO.

Related feedback:
- https://github.com/MajkiIT/polish-ads-filter/issues/14768#issuecomment-536006312
2019-09-30 08:53:02 -04:00
Raymond Hill
3f074d7908
Use self when testing for vAPI presence 2019-09-30 07:50:35 -04:00
Raymond Hill
a8df19fee4
Rename register-like variables
Use leading `$` instead of trailing `$` to denote
register-like variables, this conveniently allows
to group them together in the debugger.
2019-09-29 13:21:09 -04:00
Raymond Hill
bf99623a54
Add sanity checks
In rare circumstances, it's possible the content
script lose access to the background page, best
to check against this to avoid spurious console
errors.
2019-09-29 12:26:58 -04:00
Raymond Hill
e94024d350
Reduce memory usage in staticExtFilteringEngine.HostnameBasedDB
Using pairs of integers allows the use of a
single integer-only array to store lists of
string indices associated to a specific
hostname.

Memory usage of instances of HostnameBasedDB
as per Chromium's heap snaphshot (bytes):

Before:
    2,459,256 => specific cosmetic filters
      944,152 => scriptlet filtering
          736
    ---------
    3,404,144

After:
    1,947,448 => "
      757,936 => "
          632
    ---------
    2,706,016

Ultimately, using 2 integers for each entry
instead of a single one is still worth it
because this allows the use of one single
integer-only array instead of having to use
an array of arrays for hostnames which have
multiple entries.
2019-09-28 13:36:07 -04:00
Raymond Hill
4bf6503f0a
Store csp= filters into main data structure
This commits make it so that `csp=` filters
are now stored in the same data structures as
all other static network filters rather than
being stored in a separate one.

This internal change is motivated by the wish
to bring session filters to the static network
filtering engine, as has already been done for
the static extended filtering engine in the
following commit:

59c9a34d34
2019-09-28 11:30:26 -04:00
Raymond Hill
efa4ff3bcf
Code review re. dynamically loaded vapi-client-extra.js
Related commit:
- 87d0e456f1

Ensure that the code which depends on extending
`vapi-client.js` is ready to deal with
`vapi-client-extra.js` failing to load.
2019-09-26 15:57:55 -04:00
Raymond Hill
7912e919b6
Code review of session filters commit
Related commits:
- 46d36cb0b0
- 59c9a34d34
2019-09-26 12:40:56 -04:00
Raymond Hill
16261aa6b5
Minor code review for d6ccc9857d
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/736
2019-09-26 09:25:33 -04:00
Raymond Hill
d6ccc9857d
Fix missing newline in merging of sublists
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/736

Regression from:
- e27328f931
2019-09-26 09:13:50 -04:00
Raymond Hill
46d36cb0b0
Code review of session filters commit
Related commit:
- 59c9a34d34
2019-09-25 11:21:34 -04:00
Raymond Hill
28aee88a7b
Fix regression in logger's summary pane
Related feedback:
- 59c9a34d34 (commitcomment-35226346)
2019-09-25 06:14:43 -04:00
Raymond Hill
59c9a34d34
Add ability to quickly create exceptions in logger
This is a feature under development, hidden behind
a new advanced setting, `filterAuthorMode` which
default to `false`.

Ability to point-and-click to create temporary
exception filters for static extended filters (i.e.
cosmetic, scriptlet & html filters) from within
the summary pane in the logger. The button to
toggle on/off temporary exception filter is
labeled `#@#`.

The created exceptions are temporary and will be
lost when restarting uBO, or manually toggling off
the exception filters.

Creating temporary exception filters does not
cause the filter lists to reloaded, and thus there
is no overhead in creating/removing these temporary
exception filters.
2019-09-24 17:05:03 -04:00
Raymond Hill
f204d24bf4
Match static popup filter against local context
Related feedback:
- https://www.reddit.com/r/uBlockOrigin/comments/d6zbqv/

For static filter `popup` filter purpose, the URL of the
embedded frame from which the popup was launched will
be used in the matching algorithm.
2019-09-23 08:25:23 -04:00
Raymond Hill
1d2b24c79a
Fix erroneous reports of blocked popups in logger
Reported internally by:
- https://github.com/gwarser

This was reproducible at the following link when
`ping`requests were blocked:
- https://testpages.adblockplus.org/en/filters/ping
2019-09-22 09:19:57 -04:00
Raymond Hill
010635acd6
Add support for ping static filter option
Related issue:
- https://github.com/gorhill/uBlock/issues/1493

Documentation:
- https://help.eyeo.com/adblockplus/how-to-write-filters#type-options

Test page:
- https://testpages.adblockplus.org/en/filters/ping

Additionally, network requests of type `beacon` will
be mapped to `ping` by the static filtering engine.
2019-09-22 09:11:55 -04:00
Raymond Hill
22b390eb00
Fix case of unreported :style filters in logger
As reported by https://github.com/uBlock-user,
adding the two following filters:

example.com##div:style(width: 1016px !important)
example.com##div:style(display: block !important)

The logger would report only one of the filter when
navigating to https://example.com/
2019-09-22 07:51:20 -04:00
Raymond Hill
8c47fa1a3e
Use async/await instead of chained thens 2019-09-21 19:48:02 -04:00
Raymond Hill
eb871ae558
Fix regression in selfie destruction code
Related commit:
- 915687fddb (diff-73ef8c4664f2ec8c02320d50b2908efdR1100-R1113)

Since selfie destruction is now deferred so as to
coallesce burst of call to destroy(), the selfie
load code must mind whether there is a pending
destruction in order to decide whether the
selfie can be safely loaded.

Related feedback:
- 23c4c80136 (commitcomment-35179834)
2019-09-21 19:24:47 -04:00
Raymond Hill
9f825c3059
Do not flush blocked-elements cache at webNavigation time
While testing for the new `elemhide` option using ABP's
test page[1], I found out that the placeholder of the
blocked image on that page was not properly collapsed
by uBO.

The reason was because the page is very simple and
flushing the blocked-elements cache at
webNavigation.onCommitted time was causing the loss
of information collected between
webRequest.onBeforeRequest and
webNavigation.onCommitted, preventing uBO from
properly collapsing the placeholders.

The blocked-elements cache is now flushed
ONLY at webRequest.onBeforeRequest time.

[1] https://testpages.adblockplus.org/en/exceptions/elemhide
2019-09-21 16:42:15 -04:00
Raymond Hill
350e436c08
Remove remnants of chrome references...
... from platform-independent code.

This should complete the de-chromiumification of
uBO. Next step will be to swap the content of the
`platform/chromium` and `platform/firefox`
folders so as to reflect that Firefox is the
natural platform for uBO.
2019-09-21 12:06:57 -04:00
Raymond Hill
23c4c80136
Add support for elemhide (through specifichide)
Related documentation:
- https://help.eyeo.com/en/adblockplus/how-to-write-filters#element-hiding

Related feedback/discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/d6vxzj/

The `elemhide` filter option as per ABP semantic is
now supported. Previously uBO would consider `elemhide`
to be an alias of `generichide`.

The support of `elemhide` is through the convenient
conversion of `elemhide` option into existing
`generichide` option and new `specifichide` option.

The purpose of the new `specifichide` filter option
is to disable all specific cosmetic filters, i.e.
those who target a specific site.

Additionally, for convenience purpose, the filter
options `generichide`, `specifichide` and `elemhide`
can be aliased using the shorter forms `ghide`,
`shide` and `ehide` respectively.
2019-09-21 11:30:38 -04:00
Raymond Hill
4f89a6f89d
Fix missing "Block element" in Firefox's menu
Regression from:
- 58620fb051
2019-09-20 07:51:47 -04:00
Raymond Hill
87d0e456f1
Simplify client messaging code
Little-used code from vapi-client.js has been moved
to vapi-client-extra.js. Given that vapi-client.js
is injected in all web pages, this means less dead
code being injected in all pages.

Swathes of code in vapi-client.js was used only in
a few very specific cases, such as when the logger's
DOM inspector is opened or when the "Filter lists"
pane in the dashboard is opened -- and thus to avoid
that little used code to be loaded in every web page
unconditionally, it has been moved to its own
separate file, vapi-client.extra.js.

vapi-client-extra.js is loaded declaratively or
programmatically only where needed.
2019-09-19 08:31:38 -04:00
Raymond Hill
917f3620e0
Revisit element picker arguments code
No need to store mouse coordinates in background
page, thus no need to post mouse coordinates
information for every click.

Rename/group element picker arguments and popup
arguments separately.
2019-09-18 12:17:45 -04:00
Raymond Hill
022951547c
Work toward modernizing code base: promisification
Swathes of code have been converted to use
Promises/async/await.

Related commits:
- 3224d9b5cc
- 26235d80d0
- 0051f3b5c7
- eec53c0154
- 915687fddb
- 55cc0c6997
- e27328f931
2019-09-18 08:34:55 -04:00
Raymond Hill
78f430678a
Fix needless visual toggling of update/apply buttons 2019-09-18 06:52:10 -04:00
Raymond Hill
3224d9b5cc
Work toward modernizing code base: promisification
Swathes of code have been converted to use
Promises/async/await.

Related commits:
- 26235d80d0
- 0051f3b5c7
- eec53c0154
- 915687fddb
- 55cc0c6997
- e27328f931
2019-09-17 15:15:01 -04:00
Raymond Hill
26235d80d0
Fix regression in importation of custom lists
Reported by:
- https://github.com/uBlock-user:

Imported custom list were incorrectly seen as out of
date immediately after import operation.

Regression from:
- e27328f931

A few lines of code were improperly removed during
refactoring.
2019-09-17 07:44:19 -04:00
Raymond Hill
0051f3b5c7
Work toward modernizing code base: promisification
Swathes of code have been converted to use
Promises/async/await. More left to do.

Related commits:
- eec53c0154
- 915687fddb
- 55cc0c6997
- e27328f931
2019-09-16 16:17:48 -04:00
Raymond Hill
eec53c0154
Work toward modernizing code base: promisification
Swathes of code have been converted to use
Promises/async/await. More left to do.

Related commits:
- 915687fddb
- 55cc0c6997
- e27328f931
2019-09-16 09:45:17 -04:00
Raymond Hill
915687fddb
Work toward modernizing code base: promisification
Also, coallesce calls to selfieManager.destroy() so as
to avoid undue repeated calls to storage deletion of
selfie assets.

Related commit:
- e27328f931
2019-09-15 09:36:50 -04:00
Raymond Hill
55cc0c6997
Fix regression from promisification work
Related commit:
- e27328f931

The regression was preventing the compiled filter
lists from being properly loaded by uBO, thus
always causing a full parsing/compiling at
launch time.
2019-09-15 09:35:04 -04:00
Raymond Hill
e27328f931
Work toward modernizing code base: promisification
Swathes of code have been converted to use
Promises/async/await. More left to do.

In the process, a regression affecting the fix to
<https://github.com/uBlockOrigin/uBlock-issues/issues/682>
has been fixed.
2019-09-15 07:58:28 -04:00
Raymond Hill
97d6d5028b
Fix mishandling of procedural cosmetic exceptions in logger
Issue reported by @uBlock-user in team channel.

Creating cosmetic procedural exception filters was
causing `cosmetic-logger.js` scriptlet to throw at
and thus further breaking the logging of cosmetic
filters overall.
2019-09-12 13:05:41 -04:00
Raymond Hill
e393a52442
Fix icon title always showing (0) when badge is disabled
Related feedback:
- https://www.reddit.com/r/uBlockOrigin/comments/d33d37/
2019-09-12 12:26:09 -04:00
Raymond Hill
b5c1efc7f5
Informal code review toward ES6 2019-09-11 08:08:30 -04:00
Raymond Hill
93f438f55e
Add advanced setting for extension reload on update
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/717

Related feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/717#issuecomment-530275655

New advanced setting: `extensionUpdateForceReload`

Default value: `false`

If set to `true`, the extension will unconditionally reload
when an update is available; otherwise the extension will
reload only when being explicitly disabled then enabled, or
when the browser is restarted.
2019-09-11 08:00:55 -04:00
Raymond Hill
1e7e6f86a6
Reuse existing Set/Map when calling scriptletFilteringEngine.retrieve
Reuse permanent instances instead. The trailing `$` is
used to denote these variables are register-like
instances, i.e. their content is valid only for the
duration of the call. (From now on I will use this
convention throughout the code base.)
2019-09-10 13:59:28 -04:00
Raymond Hill
a73dd0a9f2
Fix entity-based lookup in html & scriptlet filtering
Entity-based filters where not properly looked-up if
they used subdomains. Example:

- `example.*##^script` => ok

- `www.example.*##^script` => failed on `https://www.example.com/`
2019-09-10 10:51:34 -04:00
Raymond Hill
4792e0e291
Coalesce tab reloads in burst "relax blocking mode" ops
Quickly firing "Relax blocking mode" commands will
cause the tab to reload only once.
2019-09-08 12:52:28 -04:00
Raymond Hill
3eeaba45d9
Cherry-picked ac7825c789 2019-09-07 08:31:32 -04:00
Raymond Hill
c8c2e11d09
Prevent reload if updated version is higher than current
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/717

Related feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/717#issuecomment-528921730
2019-09-06 13:03:06 -04:00
Raymond Hill
bcf5ac1fee
Add advanced setting to control logger popup type
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/663

The advanced setting `loggerPopupType` has been added, to
control the type of window to be used when the logger is
launched as a separate window.

The default value is `popup`, it can be changed to any of
the values documented at:

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/windows/CreateType
2019-09-06 11:41:07 -04:00
Raymond Hill
aee6b2d1cb
Fix regression in filter compilation in element picker
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/715

Regression from fix to issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/710
2019-09-02 08:43:49 -04:00
Raymond Hill
ca9b29c7ec
Distinguish between priviledge and unprivileged messages
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/710

Messages from unprivileged ports (i.e. from content scripts)
are no longer relayed to message handlers which are to be
strictly used to execute privileged code.

The last remaining case of unprivileged messages which
should be converted into a privileged ones will be taken
care of when the following issue is fixed:
- https://github.com/gorhill/uBlock/issues/3497
2019-09-01 12:43:12 -04:00
Raymond Hill
1d805fb9da
Add support for !#if false in list directive processor
To more easily comment out blocks of filters.
2019-08-25 09:08:41 -04:00
Raymond Hill
e0b8cf24d1
Clear internal cache when loading redirect rules
Related commit:
- 3e5c9e00ab

This fix a regression: newly added redirect rules
could end up not being taken into account unless
uBO was restarted.
2019-08-24 13:48:50 -04:00
Raymond Hill
9f7e385a5c
Code review fix re. max string length in bidi-trie
Related commit:
- fb4e94f92c

A bidi-trie can't store strings longer than 255 characters
because the string segment lengths are encoded into a single
byte. This commit ensures only strings smaller than
256 characters are stored in the bidi-tries.
2019-08-23 11:30:10 -04:00
Raymond Hill
fb4e94f92c
Fix spurious 256-char limit for filters stored in bidi-trie
Plain filters can be any length, while the bidi-trie was
assuming max length of 256. The origin of this error
is from when the bidi-trie code was originally imported
from the hntrie code as start to develop bidi-trie.

The erroneous code could cause issue when the following
conditions were met:
- Plain filter longer than 256 characters
- Free space in bidi-trie's character buffer was less
  than 256 bytes

Likely a rare occurrence, but some filter lists do contains
long plain filters, for example:

    https://gitlab.com/curben/urlhaus-filter/raw/master/urlhaus-filter.txt

Related feedback:
- https://www.reddit.com/r/uBlockOrigin/comments/cs1y26/
2019-08-22 17:11:49 -04:00
Raymond Hill
708e5004e8
Fix badly computed output size in µBlock.base64.encode()
This bug could cause losing 1 to 3 bytes of information
dropped from various internal buffers at encoding time.

Possibly related feedback:
- https://www.reddit.com/r/uBlockOrigin/comments/cs1y26/
2019-08-22 09:17:19 -04:00
Raymond Hill
5ad809c07d
Code review color badge code
Related commit:
- 07c950f1e5

Cache [blocking mode, color] pair for fast
lookup in subsequent calls.
2019-08-19 09:00:53 -04:00
Raymond Hill
bf3c92574e
Add support for special exception filter #@#+js()
The purpose is to wholly disable scriptlet injection
for a given site without having to create exceptions
for all matching scriptlet injection filters.

The following exception filter will cause scriptlet
injection to be wholly disable for `example.com`:

    `example.com#@#+js()`

Or to disable scriptlet injection everywhere:

    `#@#+js()`

The following form is meaningless and will be
ignored:

    `example.com##+js()`
2019-08-17 08:38:48 -04:00
Raymond Hill
6c73bd78f4
Fix regression when generating data URI in redirect engine
Related feedback:
- https://www.reddit.com/r/uBlockOrigin/comments/cpxm1v/

Put back erroneously removed code which enable to
generate a `data` URI from already encoded resources.
2019-08-16 13:45:07 -04:00
Raymond Hill
d67340f14d
Add ability to escape comma in a scriptlet's list of arguments
An instance of `\,` will not be interpreted as an arguments
separator -- thus allowing the use of commas inside
argument values.
2019-08-14 11:02:01 -04:00
Raymond Hill
68ae847ba3
Add support for AdGuard's mp4 filter option
Related discussion:
- https://github.com/uBlockOrigin/uBlock-issues/issues/701#issuecomment-520884196

The `mp4` filter option will be converted to `redirect=noopmp4-1s`
internally, and `media` type will be assumed.
2019-08-13 12:30:11 -04:00
Raymond Hill
52925ba2f9
Support disabling advanced setting cacheControlForFirefox1376932
Related feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/229#issuecomment-520810161

Setting `cacheControlForFirefox1376932` to `unset` will
prevent modification of the `Cache-Control` header.
2019-08-13 08:49:37 -04:00
Raymond Hill
3e5c9e00ab
Add support for AdGuard's empty option
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/701

The filter option `empty` is converted to `redirect=empty`
by uBO internally; however unlike when the `redirect=`
option is used expressly, the `empty` option does not
require a resource type.

When `empty` is used, only network requests which are meant
to return a text response will be redirected to an empty
response body by uBO -- so `empty` will not work for
resources such as images, media, or other binary resources.
2019-08-13 08:16:21 -04:00
Raymond Hill
2c39a1af02
Extend pseudo-elements support byond ::before/::after
Related feedback:
- https://github.com/uBlockOrigin/uAssets/issues/6069#issuecomment-520254292
2019-08-11 16:32:49 -04:00
Raymond Hill
07c950f1e5
Review icon badge color management
Related commit & feedback:
- 7ff750eaf6

The color value for the icon badge is now
"attached" to the blocking profile value.
Additionally, as per feedback, `3p` rules
will be relaxing before master JavaScript
switch rules.
2019-08-11 13:55:39 -04:00
Raymond Hill
7ff750eaf6
Reflect blocking mode in badge color of toolbar icon
Related feedback:
- https://www.reddit.com/r/uBlockOrigin/comments/cmh910/

Additionally, the `3p` rule has been made distinct from
`3p-script`/`3p-frame` for the purpose of
"Relax blocking mode" command.

The badge color will hint at the current blocking mode.
There are four colors for the four following blocking
modes:
- JavaScript wholly disabled
- All 3rd parties blocked
- 3rd-party scripts and frames blocked
- None of the above

The default badge color will be used when JavaScript is not
wholly disabled and when there are no rules for `3p`,
`3p-script` or `3p-frame`.

A new advanced setting has been added to let the user choose
the badge colors for the various blocking modes,
`blockingProfileColors`. The value *must* be a sequence of
4 valid CSS color values that match 6 hexadecimal digits
prefixed with`#` -- anything else will be ignored.
2019-08-10 10:57:24 -04:00
Raymond Hill
5e1f4d7906
Invalidate browser's memory cache after using element picker
Related reports:
- https://www.reddit.com/r/uBlockOrigin/comments/cj7g7m/
- https://www.reddit.com/r/uBlockOrigin/comments/cnq0bi/

The browser cache will be invalidated only when creating
static network filter through the element picker.

As per @gwarser's arguments in favor of implementing
usage of webRequest.handlerBehaviorChanged():
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/handlerBehaviorChanged
2019-08-09 09:31:20 -04:00
Raymond Hill
7ac7b027f4
Restore ability to redirect xhr to image resources
The ability to redirect xmlhttprequest to binary
resources was lost when redirectable/injectable
resources became immutable in commit
152cea2dfe.

This commit restores the ability to redirect a
xmlhttprequest to a binary resource by making
it possible to derive a data: URI from the
content of binary resources such as images.

Addtionally a redirect to a data: URI can be
forced by prefixing the resource token with `%`.
This is a non-official feature at this point,
i.e. it could be removed at any time.
2019-08-06 10:51:24 -04:00
Raymond Hill
aa73f292ec
Add new static network filter option: redirect-rule=
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/310

The purpose of this new option is to add the ability
to create standalone redirect rule without being forced
to create a block filter (a corresponding block filter
is always created when using the `redirect=`).

Additionally:

The syntax `*$redirect=token,...` is now supported, there
is no need to "trick" the filter parser with
`*/*$redirect=token,...` in order to create redirect rules
which are meant to match all paths.

Filters of the form `|http*://` will be normalized into
two corresponding filters `|https://` and `|http://` so as
to reduce the number of filters in the buckets of
untokenizable filters.
2019-08-03 10:18:47 -04:00
Raymond Hill
104b222275
Revisit fix to https://github.com/uBlockOrigin/uBlock-issues/issues/627
The previous fix led to a regression. Related ffedback:
- 8d136ec2d5 (commitcomment-34460854)
2019-07-30 12:27:09 -04:00
Raymond Hill
048bfd251c
Add ability to bypass browser cache when fetching a resource
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/682#issuecomment-515197130

The following advanced setting has been added:

    updateAssetBypassBrowserCache

Default to `false`. If set to `true`, uBO will ensure the
browser cache is bypassed when fetching a remote resource.

This is for the convenience of filter list maintainers who
may want to test the latest version of their lists when
fetched from their remote location.
2019-07-26 09:52:11 -04:00
Raymond Hill
8d136ec2d5
Ignore pseudo-elements when querying selectors in element picker
Related issue:
- https://github.com/gorhill/uBlock/issues/2515
2019-07-26 09:24:34 -04:00
Raymond Hill
08c3f06160
Log :style(...) cosmetic filters only when there is a match
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/627
2019-07-23 11:42:04 -04:00
Raymond Hill
075d78e8e6
Remove trailing commas in function parameter lists
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/681
2019-07-22 17:38:23 -04:00
Raymond Hill
47cfba1551
Manually import df97249715 from 1.21.4
Related commit:
- https://github.com/gorhill/uBlock/commit/df972497156e
2019-07-22 06:30:00 -04:00
Raymond Hill
716aae4236
Reverting fix to https://github.com/gorhill/uBlock/issues/3639
Related feedback:
- a54cb2e38f (commitcomment-34387041)

Regression from converting uBO resources into
immutable resources. This affects only Chromium-based
browsers.

This is a quick fix for the dev build, to at least unbreak
the reported case.

I need to research whether the root issue (conflict with HTTPS-E)
is still occurring, and if so the fix is not trivial: I will need
to add code to uBO to fetch and convert binary data into `data:`
URIs.
2019-07-21 20:53:42 -04:00
Raymond Hill
066440534d
Prevent popup panel to close when forcing a tab reload
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/672

Additionally, this commit add the ability to press F5 to
force a reload while the popup panel is opened.
2019-07-21 11:50:15 -04:00
Raymond Hill
48347897ad
Remove obsolete ublock-resources-related code
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/679
2019-07-21 11:00:14 -04:00
Raymond Hill
e1dd7f7043
Ensure toolbar icon reflect updated whitelist directives
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/680

Opportunistically, vAPI.tabs has been refactored toward
ES6 syntax.
2019-07-21 10:48:44 -04:00
Raymond Hill
ecd81183b1
Fix thrown exception in onHeadersReceived listener
Regression from:
- https://github.com/gorhill/uBlock/commit/ae56c4dfe855
2019-07-19 10:02:27 -04:00
Raymond Hill
10fe9fe656
Allow setting assetsBootstrapLocation from admin settings
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/666
2019-07-18 10:53:08 -04:00
Raymond Hill
3b0d214633
Mind escape sequences when validating :style filters
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/668
2019-07-13 07:49:07 -04:00
Raymond Hill
8d8336ffae
Remove useless return statement 2019-07-12 09:13:10 -04:00
Raymond Hill
d6927cf1fe
Ensure all members are initialized before loading selfie
Theoretically, if a selfie is loaded from corrupted
storage resulting in a thrown exception from the
constructor, this would cause an improperly initialized
HostnameBasedDB instance and overall potentially a
broken uBO.

Related feedback:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1543880#c7
2019-07-12 09:05:42 -04:00
Raymond Hill
ce644c5960
Remove code unused in next release
Since https://github.com/uBlockOrigin/uBlock-issues/issues/156
won't be fixed in next release, no need to ship
with code which will be unused, and anyways only once
the fix is worked on will it be clear exactly what needs
to be used by scriptlets to deal harmoniously with
property listener collisions.
2019-07-11 10:17:06 -04:00
Raymond Hill
9ef06da310
Minor code review re. https://github.com/uBlockOrigin/uBlock-issues/issues/658 2019-07-11 09:50:12 -04:00
Raymond Hill
874e92af2d
Fix regression in URL rules validation
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/665

Regression:
- 2f63fb3fd4
2019-07-10 17:24:01 -04:00
Raymond Hill
b54522caa1
[scriptlet engine] Mind old scriptlet names not using .js
Related commit:
- 5552d6717d
2019-07-09 11:36:42 -04:00
Raymond Hill
5c449f59f2
[redirect engine] Use shorter name as the official name
- nobab.js => bab-defuser.js
- nofab.js => fuckadblock.js-3.2.0
2019-07-09 11:04:12 -04:00
Raymond Hill
fee217c59c
Fix regression introduced in 2f63fb3fd4
Related feedback:
- 2f63fb3fd4 (commitcomment-34222571)
2019-07-08 12:33:11 -04:00
Raymond Hill
2f63fb3fd4
Prevent adding known invalid URL-based rules
Related discussion:
- https://github.com/uBlockOrigin/uBlock-issues/issues/662#issuecomment-509220702

Currently, `doc` (aka `main_frame`) rules are not
evaluated to decide whether a network request must
be blocked or not, by design. This commits adjust
uBO's UI to account for this.
2019-07-08 10:49:53 -04:00
Raymond Hill
e55cae6232
Fine tune new resources-related code
Make sure the parser is safely compatible with old
resources format -- for those users still using
custom resources (via `userResourcesLocation`).

Prepare code for future fix to
<https://github.com/uBlockOrigin/uBlock-issues/issues/156>:

This commit introduces a new private Map() object,
`uBOSafe`, accessible by all injected scriptlets. This
private safe can be used to store data which can be shared
with different scriptlets. The idea is for scriptlets to
use that safe to graciously deal with the need to install
multiple listeners for the same property.
2019-07-08 08:56:36 -04:00
Raymond Hill
da4c4ded8d
Add a way to reload resources in dev build
Since resources are now immutable, by default they are
only compiled once each time uBO updates to a new
version. However I need a way to force a re-compiling
of the resource in the dev build. This commit adds code
to invalidate the resources selfie when forcing the
update of any filter list.
2019-07-08 08:41:28 -04:00
Raymond Hill
ad9b34bc7a
Code review of 9d1913a16e
Also eat backslash for `\\`, to allow searching for
literal `\n`, `\t`.
2019-07-07 07:52:37 -04:00
Raymond Hill
47a5caef54
Fix last newline not being automatically appended
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/657
2019-07-07 06:57:30 -04:00
Raymond Hill
9d1913a16e
Eat backslashes only for common control characters
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/658
2019-07-07 06:29:14 -04:00
Raymond Hill
6f5aa947fb
Finalize converting resources.txt into immutable resources
With hindsight, I revised decisions made earlier during
this development cycle:

Un-redirectable scriptlets have been removed from
/web_accessible_resources and instead put in the new
/assets/resources/scriptlets.js, which contains all
scriptlets used for web page injection purpose.

uBO will no longer fetch a remote version of built-in
resources.

Advanced setting `userResourcesLocation` will still be
honoured by uBO, and if set, will be fetched every
time at least one asset is updated.
2019-07-06 12:36:28 -04:00
Raymond Hill
ae56c4dfe8
Fix whitelist status evaluation of tabless network requests
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/651

The `behnind-the-scene` context was wrongly used to
evaluate the whitelist status of the context of tabless
network requests. The document origin must be used
instead when it's available.

Additionally, much code has been revisited for better
ES6 syntax compliance.
2019-07-05 17:44:08 -04:00
Raymond Hill
9693d07a6d
Code review of https://github.com/gorhill/uBlock/commit/f930da7ad64a 2019-07-05 12:33:14 -04:00
Raymond Hill
f930da7ad6
Fix regression of reverse-lookup of scriptlet filters in logger
Related commit:
- 5552d6717d
2019-07-05 11:44:40 -04:00
Raymond Hill
e107b6bcf1
Fix typo in comment 2019-07-05 10:32:19 -04:00
Raymond Hill
5552d6717d
Implement scriptlet token normalization
The goal is to be able to specify a scriptlet token
without the `.js` part at the end, because that part
is essentially redundant with the `+js` part of
the syntax.

When the next stable release is in widespread use
(to determine), scriptlet tokens will have to be
specified without the `.js` part, and with this
commit the logger will already report the normalized
version of scriptlets.

Eventually, when the migration to sans-`.js` is
complete (also to determine), the internal
normalization of the token will be removed and this
will become official syntax.

Filter list maintainers will have to mind that
uAssets is becoming in use beyond uBO (i.e. Brave)
when skipping the `.js` part -- hopefully Brave will
go along with the change here, which is to remove a
bit of tediousness for filter list maintainers.
2019-07-05 10:10:59 -04:00
Raymond Hill
6220e1d3eb
Add missing newline 2019-07-05 08:22:26 -04:00
Raymond Hill
a992875c94
Save only modified immediate hidden settings 2019-07-05 07:33:09 -04:00
Raymond Hill
1fb9845c35
Remove useless code 2019-07-04 14:10:23 -04:00
Raymond Hill
f9e680f111
Convert more resources as immutable
Related commit:
- 152cea2dfe
2019-07-04 14:08:56 -04:00
Raymond Hill
8e245c8919
Convert more resources as immutable
Related commit:
- 152cea2dfe
2019-07-03 19:26:09 -04:00
Raymond Hill
0ba9a35818
Convert more resources as immutable
Related commit:
- 152cea2dfe
2019-07-03 14:33:06 -04:00
Raymond Hill
152cea2dfe
Refactor management of injectable resources
This is a first step, the ultimate goal is to remove
the need for resources.txt, or at least to reduce to
only hotfixes or for trivial resources targeting very
specific websites.

Most resources will become immutable, i.e. they will
be part of uBO's code base. Advantages include easier
code maintenance (jshint, syntax highlight), and to
make scriptlets more easy to code review by external
parties (for example extension store reviewers).

TODO:

- More scriptlets need to be imported before next
  release.
- Need to make legacy versions of uBO use a legacy
  version of resources.txt, as all the now obsolete
  scriptlets will have to be removed once uBO's
  next release become widespread.
- Possibly need to add code to load binary
  resources so that they can be injected as
  data: URI. So far it's unclear whether this is
  really needed. For example, this would be needed
  if a xmlhttprequest is redirected to an image
  resource.
2019-07-03 09:47:56 -04:00
Raymond Hill
41636c59fb
Strict-block only if match is anchored to end of hostname
As per feedback from filter list maintainers.
2019-07-02 11:56:27 -04:00
Raymond Hill
730a83377e
Minor code review re. context menu code
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/151

I have been unsuccessful fixing the above issue, but I will
keep the changes made in the process of trying to fix it.
2019-07-02 09:43:26 -04:00
Raymond Hill
cdd1aac442
Add convenience link to network resources in logger
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/648
2019-06-30 16:15:19 -04:00
Raymond Hill
2bcf671dae
Put back erroneously removed line
Regression from 1dfdc40e09
2019-06-30 12:54:05 -04:00
Raymond Hill
c8860ff61d
Code review of c1bdc123f2 2019-06-30 10:22:06 -04:00
Raymond Hill
1dfdc40e09
Add ability to suspend network request handler at will
This works only for platforms supporting the return of
Promise by network listeners, i.e. only Firefox at this
point.

When filter lists are reloaded[1], there is a small
time window in which some network requests which should
have normally been blocked are not being blocked
because the static network filtering engine may not
have yet loaded all the filters in memory

This is now addressed by suspending the network request
handler when filter lists are reloaded -- again, this
works only on supported platforms.

[1] Examples: when a filter list update session
    completes; when user filters change, when
    adding/removing filter lists.
2019-06-30 10:09:27 -04:00
Raymond Hill
c1bdc123f2
Fix use of sibling-related CSS syntax at prefix position
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/c6iem5/
2019-06-29 14:07:54 -04:00
Raymond Hill
cf4345ffc4
Fix some element picker-related issues
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/c5do7w/

Make the element picker better reflect network filters as
parsed by the static network filtering engine. Additionally,
discard single alphanumeric character-based filters.

Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/c62irc/

Inject newly created cosmetic filters into the DOM
filterer, in order for these filters to be enforced by
the DOM filterer in subsequent dynamic DOM changes.
2019-06-29 11:06:03 -04:00
Raymond Hill
6c34b3c3c9
Use "relax" instead of "toggle"
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/371
2019-06-27 08:16:18 -04:00
Raymond Hill
693687fd74
Add keyboard support for toggling down blocking profile
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/371

By default, no specific keyboard shortcut is predefined,
this will have to be assigned by the user. The command
name in English is "Toggle blocking profile".

The default behavior is to toggle down according to one
of the following scenarios.

a) If script execution is disabled through the no-scripting
switch, the no-scripting switch will be locally toggled
so as to allow script execution. The page will be
automatically reloaded.

b) If script execution is not blocked but the 3rd-party
script and/or frame cells are blocked, local no-op rules
will be set so as to no longer block 3rd-party scripts
and/or frames. The page will be automatically reloaded.

Given this, it may take more than one toggle down command
to reach the lowest blocking profile, which is one where
JavaScript execution is not blocked and 3rd-party scripts
and frames resources block rules, if any, are bypassed
with local no-op rules.

TODO: At this point, I haven't yet decided whether
toggling from the lowest profile should restore the
original highest blocking profile.
2019-06-26 07:47:14 -04:00
Raymond Hill
d1df2b5e73
Fix merging multiple URls in element picker
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/c5do7w/

Fixed:
- Expect the differ can return the first input as is when
  there is no difference between the two items.
- Better deal with extraneous whitespaces in `srcset`
2019-06-25 17:09:04 -04:00
Raymond Hill
9065bbdd48
Code review of whitelisting-related code
- Use `Map()` instead of `{}` for internal data
  structure
- Export as array of directives instead of as
  a string
2019-06-25 11:57:14 -04:00
Raymond Hill
8e7384ba84
Prevent duplicate inline-script entries in the logger
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/c4340z/filter_problem/ervpjd8/
2019-06-24 11:40:14 -04:00
Raymond Hill
41685f4cce
Replace exec with transpose in procedural filters
The purpose is to avoid having to iterate through
all input nodes at each operator implementation
level. The `transpose` method deals with only one
input node, and the iteration is performed by the
main procedural filtering entry points.

Additionally:
- Add `:spath` to HTML filtering
- Rename `:watch-attrs` to `:watch-attr`
  - `:watch=attrs` is deprecated and will be kept around
    until it is safe to remove it completely
2019-06-23 08:05:53 -04:00
Raymond Hill
b428a25c3f
Add new procedural operator: :min-text-length(x)
Where `x` is the minimal text length of the subject
DOM element. DOM elements whose text length is
greater than or equal to `x` will be selected.

The original rationale for such procedural cosmetic
operator[1] is to be able to remove inline script
elements according to a minimum text length using
HTML filtering.

[1] As a result of internal discussion with filter
    list maintainers @ uAssets.
2019-06-20 14:11:54 -04:00
Raymond Hill
822e0a133d
Provide visual feedback for invalid entries in "My rules"
Related issue:
- https://github.com/gorhill/uBlock/issues/1039
2019-06-19 18:28:44 -04:00
Raymond Hill
be2a950541
Code review of HNTrie/staticNetFilteringEngine
- Remove HNTrieContainer class from global context by
  storing it as a property of µBlock.

- Use block scope to isolate HNTrie-related constants
  from global context.

- Prevent filters which are pure IP address from
  being stored in an HNTrie instance -- as this
  could cause false positives.
2019-06-19 10:00:19 -04:00
Raymond Hill
7303776757
Use async/await in Matrix.benchmark() 2019-06-19 08:37:48 -04:00
Raymond Hill
cfc2ce333d
Implement bidirectional plain-string trie
The bidirectional trie allows storing the right
and left parts of a string into a trie given a
pivot position.

Releated issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/528

Additionally, the mandatory token-at-index-0 rule
for FilterPlainHnAnchored has been lifted, thus
allowing the engine to pick a potentially better token
at any position in the filter string.

***

TODO: Eventually rename `strie.js` to `biditrie.js`.

TODO: Fix dump() method, it currently only show the
      right-hand side of a filter string.
2019-06-18 19:16:39 -04:00
Raymond Hill
2eb9b726a5
Fix generichide not being evaluated for local context
Related issue:
- https://github.com/uBlockOrigin/uAssets/issues/5704
2019-06-03 06:37:39 -04:00
Raymond Hill
27e8c8d468
Normalize tabless xhr to image/media in onHeadersReceived()
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/610

The service worker-related issue affects both
Chromium/Firefox: the type of resources fetched
from a service worker are uniformly set to
`xmlhttprequest`, hence losing a key piece of
information for the purpose of accurate content
filtering.
2019-05-31 09:02:07 -04:00
Raymond Hill
8828522fe8
Fix errors with cosmetic filter exception in the logger
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/602
2019-05-28 07:21:16 -04:00
Raymond Hill
85b89fbe63
Fix broken import-from-file in Whitelist pane
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/bt2d1f/
2019-05-26 08:03:44 -04:00
Raymond Hill
a7bfff03d6
Avoid spurious diff at edit time in "My rules"
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/593

The issue was caused by the lack of empty last line, since
the differ taking into account new line characters.
2019-05-25 10:04:31 -04:00
Raymond Hill
80a8750d35
Select existing "Advanced settings" page if any
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/591

Additionally, I added a link to the logger in the
"About" pane in the dashboard in order to be able
to access the logger without having to go through
the popup panel.
2019-05-25 08:31:06 -04:00
Raymond Hill
fb6d69f543
Discard whole filter with bad csp= content
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/bshn7z/

uBO was just removing the bad option, while the whole
filter needs to be discarded.
2019-05-24 15:41:37 -04:00
Raymond Hill
1e9528e2a6
Fix regression affecting *$csp=-like filters
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/bshn7z/filter_question/

Regression introduced in:
- 3f3a1543ea
2019-05-24 12:15:32 -04:00
Raymond Hill
26708b37c1
Integrate bare-bone filter hit stats in the logger
Related issue:
- https://github.com/gorhill/uBlock/issues/983
- https://github.com/gorhill/uBlock/issues/1353

The current implementation reports statistics for all
static filters, and the presentation/featureset is
intentionally minimal: *Do not open issues about this.*
It's still a work in progress and it will be worked on
slowly and thoughtfully over time and as time allows.

Pausing the logger will not pause the collation of
filter hit statistics, thus it is possible to lower
the logger overhead by pausing logger output without
losing filter hit collation.
2019-05-24 11:18:39 -04:00
Raymond Hill
eef76c49ae
Add a link to the remote asset in asset viewer
The link will be present if and only if the content
of the currently viewed asset has been fetched from
a remote location.
2019-05-23 19:29:59 -04:00
Raymond Hill
294ea41fde
Import emergency fix 5a29a21c81 in dev build 2019-05-23 10:22:51 -04:00
Raymond Hill
1f398134f9
Minor code reivew of 4430ec11e2 2019-05-23 08:15:26 -04:00
Raymond Hill
7b8c087fdd
Start using async/await where it makes sense 2019-05-22 19:23:04 -04:00
Raymond Hill
4430ec11e2
Rearrange inner loop of static network filtering engine
The motivations for the re-arrangement:

- Reducing the number of entry points:
  matchStringExactString() has been removed and
  matchString() is simply reused with a modifier parameter
  to enable matching variants.

- Presumption that most matches, if any, occur early with
  the left-most tokens in a URL. This gives a very small
  marginal performance gain as per built-in benchmark.
2019-05-22 17:51:03 -04:00
Raymond Hill
e8c2f7eea3
Fix "Close this window" not working on document-blocked page
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/breeux/
2019-05-21 18:56:59 -04:00
Raymond Hill
32b04fa262
Re-arrange parsing of type options to be order-independent
Related commit:
- 1888033070

This removes the need to place `all` before any negated
type in the list of options.
2019-05-21 14:04:21 -04:00
Raymond Hill
5eff4a027a
Fix https://github.com/gorhill/uBlock/issues/3541 2019-05-20 18:29:28 -04:00
Raymond Hill
1888033070
Add support for all filter option
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/bqnsoa/

The `all` option is equivalent to specifying all
network-based types + `popup`, `document`,
`inline-font`, `inline-script`.

Example from discussion:

    ||bet365.com^$all

Above will block all network requests, block all popups,
prevent inline fonts/scripts from `bet365.com`. EasyList-
compatible syntax does not allow to accomplish that
semantic when using only `||bet365.com^`.

If using specific negated type options along with `all`,
the order in which the options appear is important. In
such case `all` should always be first, followed by
the negated type option(s).
2019-05-20 13:46:36 -04:00
Raymond Hill
72d9758faa
Ensure the "Filter lists" pane is in sync with update status
Related issue:
- https://github.com/gorhill/uBlock/issues/2394

Additionally, I added a new advanced setting to control
how long after launch an auto-update session should be
started -- value is in seconds:

    autoUpdateDelayAfterLaunch 180
2019-05-19 18:31:12 -04:00
Raymond Hill
a0ac1b7ee8
Fix handling of data: for filtering purpose in logger
Related issue:
- https://github.com/gorhill/uBlock/issues/2469
2019-05-19 17:00:49 -04:00
Raymond Hill
f677443878
Warn when navigating away from pane with unsaved changes
Related issue:
- https://github.com/gorhill/uBlock/issues/3271

When navigating away by clicking another pane tab button,
there will be an embedded warning, which can be ignore
in order to proceed to the new pane, or dismissed by
either clicking on the "Stay" button or anywhere else
in the dashboard.

When navigating away by trying to close the tab, there will
be a built-in browser warning asking for confirmation.
2019-05-19 15:35:00 -04:00
Raymond Hill
1caff7429e
Add optional support for generic procedural cosmetic filters
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/131

The new advanced setting and its default value is:

    allowGenericProceduralFilters false

Whenever this setting is toggled, the user is responsible
of forcing a reload of all filter lists so as to allow uBO
to process differently any existing generic procedural
cosmetic filters.
2019-05-18 18:57:32 -04:00
Raymond Hill
ca34bc4f3e
Fix "Revert" button not resetting after saving changes
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/367
2019-05-18 17:48:19 -04:00
Raymond Hill
3cf71835c4
Set default delay for creating selfie to 3 minutes
Related discussion:
- https://www.reddit.com/r/uBlockOrigin/comments/bq49zi/
2019-05-18 14:43:44 -04:00
Raymond Hill
f7bbc80717
Improve "Whitelist pane"; remove now useless built-in switch rule
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/214

Built-in whitelist directives are now rendered differently
than user-defined whitelist directives. Also, removing a
built-in whitelist directive will only cause that directive
to be commented out, so that users do not have to remember
built-in directives should they want to bring them back.

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

The built-in per-site switch rule
`no-scripting: behind-the-scene false` has been removed,
it should not ever be needed since there will always be a
valid root context for main- and sub-frames.
2019-05-18 14:20:05 -04:00
Raymond Hill
de41c1bf53
Fix parsing of recursive !#if-`!#endif directives
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/270
2019-05-18 10:31:04 -04:00
Raymond Hill
62387fb87a
Prevent picker's preview mode from modifying style attribute
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/551

The issue fixes previewing the hiding/unhiding of targeted
elements in the element picker.

However it does not address the case of previewing
`:style(...)` operators -- this would require a much
more complex fix, which I am not sure is worth the
amount of work and increased code complexity.
2019-05-17 19:26:48 -04:00
Raymond Hill
9bfbbfec84
Adjust visual of cosmetic exception filters in logger
The invariant prefixes `##` and `#@#` are now hidden,
allowing to reveal more of the filter itself when the
logger view is narrow.
2019-05-17 11:45:07 -04:00
Raymond Hill
0ca44b847c
Avoid duplicated strings in filterOrigin w/ new approach
The new approach is simpler and should benefit selfie
serialization/unserialization.

This renders stringDeduplicater obsolete -- it has been
removed.
2019-05-17 10:13:58 -04:00
Raymond Hill
1386429382
Fix regression in applying procedural cosmetic filters
Related commit:
- 3573b6b32c
2019-05-16 17:22:20 -04:00
Raymond Hill
3573b6b32c
Add ability to report exception cosmetic filters in the logger
Related issue:
- https://github.com/gorhill/uBlock/issues/127

Additionally, the extended exception filters in the
logger will be rendered with a line-through to more
easily distinguish them from non-exception ones.

Also, opportunistically converted revisited code to
ES6 syntax.
2019-05-16 13:44:49 -04:00
Raymond Hill
fc109c8b7c
Revisit code to benefit from ES6 syntax 2019-05-15 14:49:12 -04:00
Raymond Hill
1fe3b54acc
Fix cosmetic exception filters not applying
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/575

Regression from:
- 93f80eedfa

Specific cosmetic exception filters need to be returned so that
they can be applied to generic cosmetic filters.
2019-05-15 14:43:59 -04:00
Raymond Hill
39e2a03edb
Fix comment 2019-05-14 09:31:51 -04:00
Raymond Hill
a14dcecf8f
Do not assume wildcards fall on label boundaries
Related commit:
- fe0b7a0e0f

Related feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/572#issuecomment-492223980
2019-05-14 09:29:45 -04:00
Raymond Hill
93f80eedfa
Refactor runtime storage of specific cosmetic filters
This was a TODO item:
- 07cbae66a4/src/js/cosmetic-filtering.js (L375)

µBlock.staticExtFilteringEngine.HostnameBasedDB has been
re-factored to accomodate the storing of specific cosmetic
filters.

As a result of this refactoring:

- Memory usage has been further decreased
- Performance of selector retrieval marginally
  improved
- New internal representation opens the door
  to use a specialized version of HNTrie, which
  should further improve performance/memory
  usage
2019-05-14 08:52:34 -04:00
Raymond Hill
8a312b9bbb
Support cases with more than one wildcard
Related commit:
- fe0b7a0e0f

Related feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/572#issuecomment-492147440
2019-05-14 06:52:13 -04:00
Raymond Hill
fe0b7a0e0f
Relax destination hostname requirements in redirect filters
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/572

Wildcards are now allowed in the hostname part of redirect
filters. There will be an attempt to find the longest
right-hand portion of the hostname with no wildcard. If
no non-empty hostname can be extracted, `*` will be used.
2019-05-13 20:19:10 -04:00
Raymond Hill
1e40f50eb3
Add benchmark method to cosmetic filtering engine
To measure retrieval of site-specific selectors. From
uBO's own dev console:

    µBlock.cosmeticFilteringEngine.benchmark();
2019-05-12 11:41:47 -04:00
Raymond Hill
57890d60ff
Fix incorrect use of this in static method
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/568

Regression from:
- 19ece97b0c
2019-05-11 17:40:55 -04:00
Raymond Hill
8a7e704080
Add support for nth-ancestor operator in HTML filtering
Also opportunitisically converted some code to
ES6's `class`.
2019-05-11 13:21:23 -04:00
Raymond Hill
915c1f1f3c
Report resources blocked by csp= option in logger
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/552
2019-05-11 10:40:34 -04:00
Raymond Hill
12bdd01595
Ensure "Ignore generic cosmetic filters" sticks on Fennec
Related issue:
- https://www.reddit.com/r/uBlockOrigin/comments/blkudl/

The setting was not sticking at first-install time.
2019-05-11 09:04:13 -04:00
Raymond Hill
e59bdb1485
Defuse fixed position on body element in element zapper
The `fixed` style property on the `body` element will be
defused if an overlay element is removed using the element
zapper.

Related:
- https://www.reddit.com/r/uBlockOrigin/comments/bktxtb/scrolling_doesnt_work/emlscyz
2019-05-06 13:32:55 -04:00
Raymond Hill
3692bb4ada
Add HNTrieRef.dump() and STrieRef.dump() as dev tool
To be used at the console, as an investigation tool for
development purpose.

Using it to verify the content of the largest
FilterHostnameDict instance, I spotted an all-uppercase
hostname in the HNTrieRef instance:

µBlock.staticNetFilteringEngine.categories.get(0).get(0x10000000).dict.dump();

Thus the changes to static-net-filtering.js are to fix
the erroneous insertion of filters with uppercase
characters. The single instance found was a hostname entry
in Malware Domain List (TRIANGLESERVICESLTD dot COM).
2019-05-06 11:12:39 -04:00
Raymond Hill
0e4fbefd07
Remove unecessary null placeholders FilterOriginHitSet et al.
The `null` placeholder are not necessary, we can just use
default arguments instead, and add the HNTrieContainer
references if and only if they are instanciated.
2019-05-01 18:54:11 -04:00
Raymond Hill
9e4385243c
Web accessible secrets can be used for at most one second
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/550

Related Chromium issue (I can't access it):
- https://bugs.chromium.org/p/chromium/issues/detail?id=957866

Findings so far: affects browsers based on Chromium 74.
I could not reproduce the issue with either Chromium 73 or
Google Chrome 75.

This commit is a mitigation: to prevent sites from using
uBO's internal WAR secret for tracking purpose. A secret
can be used for at most one second, after which a new secret
is generated.

The original issue related to the implementation of
secret-gated web accessible resources is:
- https://github.com/gorhill/uBlock/issues/2823
2019-04-30 14:36:07 -04:00
Raymond Hill
73e2f25e95
Add new cosmetic procedural operator: :nth-ancestor(n)
The purpose of this new `:nth-ancestor(n)` operator is to
lookup the nth ancestor relative to the currently selected
node.

It is essentially equivalent to `:xpath(..)`, where
ancestor distance is expressed as a number rather than a
sequence of slash-separated `..`.

The rationale to introduce this new procedural selector
is to have a low overhead way to accomplish ancestor
selection.
2019-04-30 09:02:14 -04:00
Raymond Hill
42bf659695
Revert "Order HNTrie nodes alphabetically to allow for early bailout"
This reverts commit f5f9e05071.
2019-04-30 07:00:52 -04:00
Raymond Hill
f5f9e05071
Order HNTrie nodes alphabetically to allow for early bailout
This commit implements the alphabetical ordering of HNTrie
nodes, so as to make it possible to bail out early at
HNTrie.matches() time.

Contrary to what I expected, there is no performance gain
observed to HNTrie.matches() as per benchmarks -- I find
the results perplexing.

Because of this I will revert this commit immediately.
The purpose of this commit is to record the changes so
that I can bring them back to life in the future whenever
I want to investigate further.
2019-04-30 06:47:54 -04:00
Raymond Hill
adabb56dc9
Do not store impossible to match filters in HNTrie
Consider the two following filters:

    example.com
    www.example.com

This commit make it so that if the first filter is
already present in a given HNTrie, the second filter
will not be stored, since HNTrie will _always_
return the first filter as a match whenever the
hostname to match is example.com or any subdomain
of example.com.

The detection of such pointless filters is
virtually free when adding a hostname to an HNTrie
instance (given how data is stored in the trie), so
in practice no overhead is incurred to detect such
pointless filters.

The ability to ignore impossible to match filters
in HNTrie instances will _especially_ benefit those
using large hosts files.

Examples of how this helps using real configurations:

- Default lists:
  444 filters out of 100,382 were ignored as a result
  of this commit.

- Default lists + "Energized Ultimate Protection":
  283,669 filters out of 903,235 were ignored as a
  result of this commit.

Side note: There was no measurable difference between
the two configurations above in the performance of
the matching algorithm as reported by the built-in
benchmark tool.
2019-04-29 13:15:16 -04:00
Raymond Hill
c4f9ae706a
Fix alternate code path introduced in 295f08da97 (oops) 2019-04-28 14:18:09 -04:00
Raymond Hill
295f08da97
Implement code path for when TextDecoder() is not available
The primary purpose is to unbreak
https://github.com/cliqz-oss/adblocker/tree/master/bench/comparison
2019-04-28 14:07:21 -04:00
Raymond Hill
ac58b8e688
Make token hashes fit within a 32-bit integer
The staticNetFilteringEngine uses token hashes to store/lookup
filters into Map objects.

Before this commit, the tokens were encoded into token hashes
as JS numbers (not exceeding MAX_SAFE_INTEGER) using at most
the 8 first characters of the token.

With this commit, token hashes are now restricted to fit
into 32-bit integers, and are derived from at most the 7 first
characters. This improves filter look-up performance as per
built-in benchmark().
2019-04-28 10:15:15 -04:00
Raymond Hill
96dce22218
Increase resolution of known-token lookup table
Related commit:
- 69a43e07c4

Using 32 bits of token hash rather than just the 16 lower
bits does help discard more unknown tokens.

Using the default filter lists, the known-token lookup
table is populated by 12,276 entries, out of 65,536, thus
making the case that theoretically there is a lot of
possible tokens which can be discarded.

In practice, running the built-in
staticNetFilteringEngine.benchmark() with default filter
lists, I find that 1,518,929 tokens were skipped out of
4,441,891 extracted tokens, or 34%.
2019-04-27 08:18:01 -04:00
Raymond Hill
a8946c8d73
Fix list lookup of multi-hostname domain= filters in logger
Related commit:
- 3f3a1543ea

The regression was preventing uBO to find from which list a filter
originated. This affected only filters for which the `domain=`
option had multiple hostnames.
2019-04-27 07:04:43 -04:00
Raymond Hill
69a43e07c4
Ignore unknown tokens in urlTokenizer.getTokens()
Given that all tokens extracted from one single URL are potentially
iterated multiple times in a single URL-matching cycle, it pays to
ignore extracted tokens which are known to not be used anywhere in
the static filtering engine.

The gain in processing a single network request in the static
filtering engine can become especially high when dealing with
long and random-looking URLs, which URLs have a high likelihood
of containing a majority of tokens which are known to not be in
use.
2019-04-26 17:14:00 -04:00
Raymond Hill
19ece97b0c
Leverage compile-time token information in new fitler classes
Related commit:
- 99390390fc

The token information available at compile time can be stored
in the filter to be used at match() time. This allows the use of
startsWith() rather than a more costly indexOf() call as a first
quick test to detect mismatches.
2019-04-26 11:16:47 -04:00
Raymond Hill
e0d2285da0
Convert HNTrie code to ES6 class 2019-04-25 19:38:07 -04:00
Raymond Hill
155abfba18
Cache and reuse result of HNTrieRef.matches() when possible
Due to how web pages typically load secondary resources and due
to how HNTrieContainer instances are used in uBO, there is a
great likelihood that the result of a previous call to
HNTrieRef.matches() can be reused in a subsequent call.
This has been confirmed by instrumenting HNTrieRef.matches().

Since uBO uses distinct HNTrieContainer instances to either
match against the request or the origin hostnames, this
means a high likelihood of repeated calls to HNTrieRef.matches()
with the same hostname as argument, hence a performance gain
when caching the argument+result -- as despite that
HNTrie.matches() is fast, comparing two short strings is even
faster if this allows to skip HNTrie.matches() altogether.
2019-04-25 18:36:03 -04:00
Raymond Hill
99390390fc
Introduce three more specialized filter classes to avoid regexes
Performance- and memory-related work. Three more classes have
been created to avoid regex-based filters internally.

Purpose is to enforce filters which have only one single
wildcard in their pattern, a common occurrence. The filter
pattern is split in two literal string segments.

Similar as above, with the added condition that the filter is
hostname-anchored (`||`). The "Wildcard2" variant is a further
specialization to enforce filters where the only wildcard
is immediately preceded by the `^` special character, again
a very common occurrence.

Using two literal string segments in lieu of regexes allows to
quickly detect a mismatch by just testing the first segment.
Additionally, this reduces memory footprint as regexes are
much more expensive memory-wise than plain strings.

These three new filter classes allow to replace the use of
5276 regex-based filters internally with plain string-based
filters.

Often-called isHnAnchored() has been further fine-tuned to
avoid as much work as possible. I have also observed that
using an arrow function for closure-purpose helps measurably
performance, as per built-in benchmark.
2019-04-25 17:48:08 -04:00
Raymond Hill
fff2bb6290
Assume media elements with no Content-Length header to be of size 0
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/543
2019-04-24 08:30:54 -04:00
Raymond Hill
72bbcdd93c
Prevent search expression in CodeMirror editor from crossing line boundaries
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/493
2019-04-23 19:26:02 -04:00
Raymond Hill
43ecffc295
Fix overzealous strict blocking (regression)
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/536

Regression from:
- 3f3a1543ea (diff-522a16ddeed280252d7c3a351261b441R2767)
2019-04-21 09:17:31 -04:00
Raymond Hill
f10b100379
Fix the handling of pseudoclass-based generic cosmetic filters
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/464

Regression from:
261ef8c510 (diff-3b15596213ed9ba37fb5b8bb1402a6c2R599)

Pseudoclass-based generic cosmetic filters were improperly seen
as invalid following the regression.
2019-04-21 07:49:44 -04:00
Raymond Hill
7735b35e21
Fix uncaught rejected promise in assets.fetchText()
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/534

Regression from
a52b07ff6e
2019-04-21 06:12:20 -04:00
Raymond Hill
97f91f8be9
Small code review of a52b07ff6e 2019-04-20 19:10:34 -04:00
Raymond Hill
f0d5205bd7
Discard existing lines when importing from file in "My filters"
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/519
2019-04-20 18:57:16 -04:00
Raymond Hill
537271f26b
Fix how *$, |https://, http:// filters are reported in logger
This was a regression introduced in
3f3a1543ea

Reported in issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/528#issuecomment-485163348
2019-04-20 17:25:32 -04:00
Raymond Hill
a52b07ff6e
Make userResourcesLocation able to support multiple URLs
The URLs must be space-separated.

Reminders:
- The additional resources will be updated at the same time
  the built-in resource file is updated
- Purging the cache of 'uBlock filters' will also purge the
  cache of the built-in resource file -- and hence force a
  reload of the user's custom resources if any

Related issues:
- https://github.com/gorhill/uBlock/issues/3307
- https://github.com/uBlockOrigin/uAssets/issues/5184#issuecomment-475875189

Addtionally:
- Opportunitically promisified assets.fetchText()
- Fixed https://github.com/gorhill/uBlock/issues/3586
2019-04-20 17:16:49 -04:00
Raymond Hill
fa83744b58
Use a sequence of base 64 numbers to encode array buffers
The purpose of using a custom base128 encoder is to
convert array buffers into strings, to allow a direct
string-to-array buffer conversion at load time:

  string => array buffer

Whereas a JSON array would require an extra step:

  JSON array as string => JS array => array buffer

Turns out that the current use of a custom base128 encoding
results in a significantly larger selfie storage usage when
converting array buffers into strings.

Speculation: possibly the browser convert the strings to
save into JSON strings internally. Since the custom base128
encoder is likely to cause the resulting string to contain
a lot of unprintable ASCII characters, these will need to
be escaped when converted to JSON -- escaped characters
occupy more space than non-escaped ones.

Using a sequence of base 64 numbers means only printable
will be present in the output string, hence no escaping
necessary. I have observed significant reduction in
storage usage for selfie purpose.
2019-04-20 09:06:54 -04:00
Raymond Hill
3f3a1543ea
Add HNTrie-based filter classes to store origin-only filters
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/528#issuecomment-484408622

Following STrie-related work in above issue, I noticed that a large
number of filters in EasyList were filters which only had to match
against the document origin. For instance, among just the top 10
most populous buckets, there were four such buckets with over
hundreds of entries each:

- bits: 72, token: "http", 146 entries
- bits: 72, token: "https", 139 entries
- bits: 88, token: "http", 122 entries
- bits: 88, token: "https", 118 entries

These filters in these buckets have to be matched against all
the network requests.

In order to leverage HNTrie for these filters[1], they are now handled
in a special way so as to ensure they all end up in a single HNTrie
(per bucket), which means that instead of scanning hundreds of entries
per URL, there is now a single scan per bucket per URL for these
apply-everywhere filters.

Now, any filter which fulfill ALL the following condition will be
processed in a special manner internally:

- Is of the form `|https://` or `|http://` or `*`; and
- Does have a `domain=` option; and
- Does not have a negated domain in its `domain=` option; and
- Does not have `csp=` option; and
- Does not have a `redirect=` option

If a filter does not fulfill ALL the conditions above, no change
in behavior.

A filter which matches ALL of the above will be processed in a special
manner:

- The `domain=` option will be decomposed so as to create as many
  distinct filter as there is distinct value in the `domain=` option
- This also apply to the `badfilter` version of the filter, which
  means it now become possible to `badfilter` only one of the
  distinct filter without having to `badfilter` all of them.
- The logger will always report these special filters with only a
  single hostname in the `domain=` option.

***

[1] HNTrie is currently WASM-ed on Firefox.
2019-04-19 16:33:46 -04:00
Raymond Hill
b70302c0fc
Cleanup comments following changes in 34f3cfe5e7 2019-04-16 19:20:56 -04:00
Raymond Hill
34f3cfe5e7
Add filterClassHistogram() method to µBlock.staticNetFilteringEngine
As a development tool for investigation purpose. To use, enter the
following at uBO's dev console:

    µBlock.staticNetFilteringEngine.filterClassHistogram()
2019-04-16 19:01:14 -04:00
Raymond Hill
4940cda154
Categorize google as a bad token for map key purpose
In the static network filtering engine, `google` token is too
generic and probably leads to too many false positives, beside
causing too large filter bucket.
2019-04-16 06:52:13 -04:00
Raymond Hill
60858b6719
Fix handling of backslashes in string expressions for :has-text() 2019-04-15 18:56:28 -04:00
Raymond Hill
a594b3f3d1
Add µBlock.staticNetFilteringEngine.bucketHistogram() as investigative dev tool
Additionally, lower the treshold of trieability to 4 for FilterPlainPrefix1.
2019-04-15 11:45:33 -04:00
Raymond Hill
c9c21f9cbf
Add more languages for list selection at install/reset time
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/501

Also, the handling of 3-letter language codes has been fixed.
2019-04-14 18:20:57 -04:00
Raymond Hill
7652808806
Improve handling of srcset-based images in element picker
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/517
2019-04-14 17:37:48 -04:00
Raymond Hill
b73480b4c5
Update fix for https://github.com/uBlockOrigin/uBlock-issues/issues/468
As suggested by @jspenguin2017:
https://github.com/uBlockOrigin/uBlock-issues/issues/468#issuecomment-482863195
2019-04-14 16:57:09 -04:00
Raymond Hill
c229003d31
Performance + code maintenance work on static network filtering engine
Implement a plain string trie container class: STrieContainer.

Make use of STrieContainer where beneficial

  Some filter buckets can grow quite large, and in such case
  coalescing "trieable" filter classes into a single trie reduces
  lookup performance and memory usage.

  For instance, at time of commit, the filter bucket for the
  `ad` keyword contains 919 entries[1].

  Coalescing trieable filters of the same class into a single plain
  string trie reduced the size of the bucket into 50 entries + two
  tries which are scanned only once each whenever the bucket is
  visited.

  [1] Enter the following code at uBO's dev console:
      µBlock.staticNetFilteringEngine.categories.get(0).get(µBlock.urlTokenizer.tokenHashFromString('ad'))

Refactor static network filtering engine code to make use of
ES6's syntactic sugar `class`.

Change first auto-update run from 7 to 5 minutes.
2019-04-14 16:45:20 -04:00
Raymond Hill
92c5f17b78
Improve usefulness of FilterContainer.benchmark()
Add ability to test/record results. This allows to compare against
output after code changes to detect and more accurately report
regressions.
2019-04-14 09:44:24 -04:00
Raymond Hill
813d96175d
Fix https://github.com/uBlockOrigin/uBlock-issues/issues/468 2019-04-13 08:10:55 -04:00
Raymond Hill
d2cb0f17ea
Report block count in benchmark()
The block count can be used for testing against regression after
code changes.
2019-04-12 10:19:38 -04:00
Noelle Leigh
0bb7b76338 Fixed wrong method for number of elements in a Map (#3755) 2019-04-06 16:42:24 -03:00
Raymond Hill
1a7a3298e2
Be prepared to deal with failure to read user settings
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/507
2019-04-03 13:18:47 -03:00
Raymond Hill
f62d866b36
Code review implementation of cacheStorage.clear()
Possibly related issue:
- https://old.reddit.com/r/firefox/comments/b3u4nj/what_is_the_estimated_time_period_for_reviewing_a/

@gwarser has been able to reproduce at will, while I have been
unable to reproduce at all. The change here is to clear the
content of the database instead of outright deleting it before
restoring backed up settings.
2019-03-28 10:17:47 -03:00
Raymond Hill
2fd587b7ae
Simplyfy code to gather storage used with StorageManager.estimate()
Documentation:
https://developer.mozilla.org/docs/Web/API/StorageManager
2019-03-22 22:09:27 -03:00
Raymond Hill
ac71d6577a
Visually emphasize directive syntax (!#if/!#endif) in list viewer/editor 2019-03-21 19:53:04 -03:00
Raymond Hill
26c57feee8
Code review of IndexedDB usage for cache storage purpose
Use Promise.prototype.catch() to deal with potential exceptions.

Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/416
2019-03-21 17:49:19 -03:00
Raymond Hill
34a138e3ef
Add unlimitedStorage to Firefox manifest; add timeout to IndexedDB access
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/416

The Chromium version of uBO has declared `unlimitedStorage` since the
extension was first published in 2014. Declaring this permission in
Firefox brings uBO inline with the Chromium version. I suspect some
reported errors could be caused by IndexedDB eviction due to the lack
of `unlimitedStorage` permission.

Additionally, a timeout has been added when uBO tries to access its
indexedDB storage. It's unclear whether this will help with the
mentioned related issue though, the root cause is still to be
identified.
2019-03-17 09:45:28 -04:00
Raymond Hill
008370e4b9
Fix https://github.com/uBlockOrigin/uBlock-issues/issues/461
uBO will fallback using a JSON string when trying to encode an array
buffer in Chromium version 59 and earlier.
2019-03-16 09:00:31 -04:00
Raymond Hill
580c3885df
Fix typo which could lead to improper filtering context
Related discussion:
- 354ac4f57b (commitcomment-32715209)
2019-03-15 07:47:36 -04:00
Raymond Hill
875542c964
Code review of fix for https://github.com/uBlockOrigin/uBlock-issues/issues/459
Relocate workaround to the code responsible to compute filtering context, such
that the workaround will also be applied in other code paths, for example  also
for webRequest.onHeadersReceived.
2019-03-14 11:24:13 -04:00
Raymond Hill
9a7887eb39
Better English in comment 2019-03-13 17:21:30 -04:00
Raymond Hill
f5974a500b
Fix https://github.com/uBlockOrigin/uBlock-issues/issues/459 2019-03-13 17:17:37 -04:00
Raymond Hill
e49debd5dd
Properly report :spath operator of procedural cosmetic filters in logger
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/453
2019-03-08 07:26:55 -05:00
Raymond Hill
3a8b68ea76
Remove obsolete code related to assets storage refactoring in 1.11.0
The removed code was quite old, and was about how user filters were
persisted before/after uBO version 1.11, related to the following
issue:
- https://github.com/gorhill/uBlock/pull/2314

The assets storage refactoring was released in:
- https://github.com/gorhill/uBlock/releases/tag/1.11.0
2019-03-06 08:59:13 -05:00
Raymond Hill
67d143ec4e
Fix https://github.com/uBlockOrigin/uBlock-issues/issues/448 2019-03-05 12:42:59 -05:00
Raymond Hill
388c1c98ec
Fix parsing of AdGuard's #$?#-based cosmetic filters
As reported in the following commit:
- https://github.com/AdguardTeam/AdguardFilters/commit/4fe02d73cee6
2019-03-05 10:10:40 -05:00
Raymond Hill
337b1f81b6
Code review of indexedDB-based cache storage 2019-02-26 10:37:25 -05:00
Raymond Hill
eaa0094e53
Fix uncaugh exception at launch when indexedDB is forbidden
Possibly related to:
- https://www.reddit.com/r/uBlockOrigin/comments/atbjvg/web_pages_dont_load_in_waterfox_56271_64bit_with/
2019-02-24 11:28:28 -05:00
Raymond Hill
c161d45230
Use const, let instead of var 2019-02-24 09:01:58 -05:00
Raymond Hill
1c26afe874
Remove caching the result of domain extraction from hostname
With the new PSL implementation, benchmarks do not show benefit
from caching the domain extracted from a hostname for later
reuse -- the caching seems to even add an overhead instead with
the new publicSuffixList implementation.
2019-02-20 08:51:14 -05:00
Raymond Hill
c83b6776da
Remove support for implicit scriptlet injection
Related issue:
- https://github.com/gorhill/uBlock/issues/3550
2019-02-20 07:18:37 -05:00
Raymond Hill
b585518c00
Do not fall back to alternative cache backend if selected one fails
Default behavior is to fall back to an alternative backend
if the uBO-selected one is not available. However there will be
no fall back when the `cacheStorageAPI` is set to one specific
backend by the user.
2019-02-20 07:05:45 -05:00
Raymond Hill
87feb47b51
Support disabling suspendTabsUntilReady in Firefox
The value of `suspendTabsUntilReady` was disregarded in Firefox and
uBO defaulted to always defer tab loading until it was ready.

This commit allows to disable the deferring of tab loading in
Firefox. The new valid values for `suspendTabsUntilReady` are:
- `unset`: leave it to the platform to pick the optimal
  behavior (default)
- `no`: do no suspend tab loading at launch time
- `yes`: suspend tab loading at launch time
2019-02-19 12:30:37 -05:00
Raymond Hill
928ab91ab8
Add support to benchmark the dynamic filtering pane
From uBO's dev console, type:
- `µBlock.sessionFirewall.benchmark();`

Keep in mind that it's the temporary ruleset being benchmarked.
2019-02-19 10:46:33 -05:00
Raymond Hill
93842a3f9c
Improve detection of invalid CSS selectors
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/389

Additionally, fix case of using potentially uninitialized variable
in preview mode. Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/425
2019-02-18 16:00:42 -05:00
Raymond Hill
426a6ea9a7
Fix spurious output at uBO's dev console
Regression from https://github.com/gorhill/uBlock/commit/0d369cda21bb
2019-02-18 14:41:04 -05:00
Raymond Hill
f7a632c94a
Fix regression preventing new install or reseting to factory default
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/431
2019-02-18 06:18:30 -05:00
Raymond Hill
0d369cda21
Allow use of browser.storage.local as cache storage backend in Firefox
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/409

By default `indexedDB` is used in Firefox for purpose of cache storage
backend.

This commit allows to force the use of `browser.storage.local` instead
as cache storage backend. For this to happen, set `cacheStorageAPI` to
`browser.storage.local` in advanced settings.

Additionally, should `indexedDB` not be available for whatever reason,
uBO will automatically fallback to `browser.storage.local`.
2019-02-17 15:40:09 -05:00
Raymond Hill
3b81841dc0
Properly set resource URL in benchmark loop 2019-02-17 07:45:05 -05:00
Raymond Hill
d63592b11e
Remove obsolete code to translate |blob: filters into CSP filters
These filters are to be considered obsolete since they can't be
matched against network requests in the webRequest API.

They were probably meant to work when ABP was pre-webext, which
means they are quite probably obsolete and there is no longer
a point for uBO to conveniently translate them into CSP directives.
2019-02-16 19:25:15 -05:00
Raymond Hill
e93062bcdf
Spin-off FilterOrigin flavors into standalone classes
This removes the derivation of FilterOrigin flavors from
FilterOrigin itself and simplify code paths. FilterOrigin
flavors are small specialized classes, no need to
overcomplicate with derivation.

Specifically, this removes an indirect call to reach the
match() method.
2019-02-16 12:16:30 -05:00
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
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
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
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
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
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
9e89dd4f26
Fix missing partyness in logger when empty domain in resource URL 2019-01-22 06:13:30 -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
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
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
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
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
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
Raymond Hill
ed5d63df69
Grand refactoring of the logger
Performance-related work: the logger data has been decoupled
from the DOM -- inspired from CodeMirror's way of efficiently
handling large amout of text data.

This decoupling now makes the logger highly efficient CPU- and
memory-wise, and open the way to more possibilities.

Ability to configure some aspect of the logger behavior and
visuals:
- The hard-coded limit of 5000 entries has been
  removed and is now replaced with a variety of
  user-configurable settings to enforce the discarding of
  logger entries.
- Some columns in the logger output can now be hidden.

The filter list look-up feature has been merged into the
existing overlay dialog used to create URL rules or static
filters, as an entry in a new "Details" pane.

Other issues addressed during refactoring:
- https://github.com/uBlockOrigin/uBlock-issues/issues/280
- https://github.com/gorhill/uBlock/issues/1999

The minimum version supported on Firefox has been bumped
up to 55.0.
2019-01-12 16:36:20 -05:00
Raymond Hill
64bea27881
Add ability to control auto-commenting at filter creation time
Related issues:
- https://github.com/uBlockOrigin/uBlock-issues/issues/372
- https://github.com/gorhill/uBlock/issues/93

A new advanced settings has been added: `autoCommentFilterTemplate`.

Default value is `{{date}} {{origin}}`.

Placeholders are identified by `{{...}}`. There are currently
only three placeholders supported:

- `{{date}}`: will be replaced with current date
- `{{time}}`: will be replaced with current time
- `{{origin}}`: will be replaced with site information on which
  the filter(s) was created

If no placeholder is found in `autoCommentFilterTemplate`, this
will disable auto-commenting. So one can use `-` to disable
auto-commenting.

Additionally, if auto-commenting is enabled, uBO will not emit a
comment if an emitted comment would be a duplicate of the last
one found in the user filter list.
2019-01-08 07:37:50 -05:00
Raymond Hill
d8674d8abe
Merge changes from master 2018-12-31 12:11:28 -05:00
Raymond Hill
08261e3c15
Change DOM surveyor to time-based processing logic (from chunk-based)
The DOM surveyor will now use time-based logic to spread its work
over time. This allows the surveying to better scale down on
slower devices.

Additionally, the DOM surveyor code has been reworked to lower as
much as possible memory churning when collating nodes to survey.

This rework has been motivated after profiling the "monstrous DOM"
seen in the following page:
<https://doc.rust-lang.org/std/iter/trait.Iterator.html>

The idea is that making the DOM surveyor efficient on such
"monstrous DOM" case should make it efficient everywhere in
practice.
2018-12-31 11:50:40 -05:00
Raymond Hill
f35dff2c9d
Code review related to performance in main content script
- Avoid concatenating with empty array: though the concatenated
  array is empty, this still forces the creation of a whole new
  array as per semantic of Array.prototype.concat().
  <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat>

- Do not convert arrays to strings when sending data to
  main process in surveyPhase1(): I no longer see any benefit
  doing so in profiling data (if I recall properly this was
  benefiting Firefox, but I can't remember for sure anymore why
  I chose to do so back then).
2018-12-29 16:34:46 -05:00
Raymond Hill
09fb3549f3
Improve creation of rows in dynamic filtering pane of popup panel
- Reuse existing rows without first removing them
- New rows appended all at once through DocumentFragment
2018-12-29 08:43:44 -05:00
Raymond Hill
87cf95c04b
Avoid redundant DOM attributes in dynamic filtering pane
Move redundant attributes in cells to parent row; use
Element.closest() to look-up these attributes when needed.
2018-12-29 06:54:05 -05:00
Raymond Hill
eb1428c8bb
Fix regression in the collapsing of blocked resources
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/356
2018-12-27 10:17:08 -05:00
Raymond Hill
8a88e9d931
Support CSS selectors mixed w/ operators in procedural cosmetic filters
Related issue:
- https://github.com/gorhill/uBlock/issues/3683

This commit further increases uBO's procedural cosmetic filters
Adguard's cosmetic filter syntax -- specifically those procedural
cosmetic filters where plain CSS selectors appeared following
a procedural oeprator (this was rejected as invalid by uBO).

Also, experimental support for `:watch-attrs` procedural
operator, as discussed in <https://github.com/uBlockOrigin/uBlock-issues/issues/341#issuecomment-449765525>.
Support may be dropped before next release depending on whether
a better solution is suggested.

Additionally, the usual opportunistic refactoring toward ES6
syntax.
2018-12-26 10:45:19 -05:00
Raymond Hill
be9e7fd11c
Code review related to the early blocking of network requests at launch 2018-12-24 08:56:35 -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
99cdec5ba6
Informal code review to tidy up logger buffer fetching implementation 2018-12-23 15:35:32 -05:00
Raymond Hill
e2d1f50dd8
Normalize Adguard's plain cosmetic filters disguised as style-based filters
Reported by https://github.com/uBlock-user in
https://github.com/orgs/uBlockOrigin/teams/ublock-issues-volunteers/discussions/56

For some reasons, many cosmetic filters in Adguard's Annoyance List
are plain cosmetic filters disguised as style-based cosmetic filters,
and this was breaking uBO's ability to reverse lookup such filters
from the logger.
2018-12-23 08:58:03 -05:00
Raymond Hill
91144c4edc
Allow creating broad cosmetic filters directly from the picker
Using the Ctrl key while cliking an element on the page will cause
the picker to choose a broad cosmetic filter as candidate.
2018-12-22 15:44:23 -05:00
Raymond Hill
69668d27b1
Ensure the text cursor in visible when a CodeMirror editor is resized
Related issues:
- https://github.com/gorhill/uBlock/issues/3706
- https://github.com/gorhill/uBlock/issues/3701
2018-12-22 13:35:46 -05:00
Raymond Hill
cd597709bb
Remember cursor position in "My filters" for next visit
Related issue:
- https://github.com/gorhill/uBlock/issues/3706
2018-12-22 13:09:56 -05:00
Raymond Hill
f3773ef6eb
Internationalize CodeMirror's hard-coded tooltips in the "My rules" pane
Related issue:
- https://github.com/gorhill/uBlock/issues/3708

This was brought into the issue above but I ended up forgotting
about it after I focused mostly on the second issue brought up
in there.
2018-12-22 11:55:13 -05:00
Raymond Hill
ba81f79d1b
Limit count badges of per-site tools to 99 in the popup panel
This is a revised fix as per feedback in the following issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/279#issuecomment-449531436
2018-12-22 11:19:44 -05:00
Raymond Hill
ea3e3b6440
Inject inline-script logger scriptlet at document_end
Feedback from related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/343#issuecomment-449529429
2018-12-22 08:33:42 -05:00
Raymond Hill
c8fcdedc44
Report inline script tags in logger if present in document
Related issue:
    - https://github.com/uBlockOrigin/uBlock-issues/issues/343
2018-12-21 14:17:47 -05:00
Raymond Hill
e9d76b3575
Report inline script tags in logger if present in document
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/343
2018-12-21 14:16:17 -05:00
Raymond Hill
30093dc990
Remove (broken) benchmark pane 2018-12-21 12:02:23 -05:00
Raymond Hill
610ca2684b
Remove (broken) benchmark pane 2018-12-21 12:01:24 -05:00
Raymond Hill
2849dbb805
Fix duplicate entry in URL filtering dialog: https://github.com/gorhill/uBlock/issues/3401 2018-12-21 10:09:29 -05:00
Raymond Hill
aeff011d4c
Remove obsolete comment 2018-12-21 07:32:23 -05:00
Raymond Hill
3730d7d128
Fix https://github.com/uBlockOrigin/uBlock-issues/issues/40 2018-12-20 17:29:39 -05:00
Raymond Hill
540c311438
Fix https://twitter.com/arneblankerts/status/1075402247725637633, regression @ d3a3505a54 (diff-1c951eedcd0be2e11c02da8fabcc46b5R380) 2018-12-19 17:44:17 -05:00
Raymond Hill
6bc22ab4ba
Convert uBO's svg-based icon into a stylable svg symbol-based icon 2018-12-19 16:21:23 -05:00
Raymond Hill
bb737e29d5
Revert use of Fontawesome v5; use 4.7 or equivalent: see <>https://github.com/uBlockOrigin/uBlock-issues/issues/249#issuecomment-448587658 2018-12-19 14:05:19 -05:00
Raymond Hill
61d95aa60f
Move builtin filter expr button inside input field 2018-12-18 17:23:03 -05:00
Raymond Hill
5dca5285e2
Fix regression introduced in 9b27a98f90 (diff-f7413cbfa6561a980810c682fa4b1a12R638) 2018-12-18 14:00:23 -05:00
Raymond Hill
2e7654d429
Relax semantic of leading/trailing pipes in filter expressions in logger 2018-12-18 13:37:01 -05:00
Raymond Hill
79905aa798
Fix https://github.com/uBlockOrigin/uBlock-issues/issues/279; partially fix https://github.com/uBlockOrigin/uBlock-issues/issues/249 2018-12-18 13:35:44 -05:00
Raymond Hill
56f7505ad8
Further improve logger along with fixes to specific logger issues
- Add tooltip support (not yet complete):
  https://github.com/gorhill/uBlock/issues/1222
- Add a link to logger documentation:
  https://github.com/gorhill/uBlock/issues/2876#issuecomment-322905413
- Migrate to from fontawesome font to svgs:
  https://github.com/uBlockOrigin/uBlock-issues/issues/249
2018-12-17 13:54:17 -05:00
Raymond Hill
9d756147cf
Start work toward fixing https://github.com/uBlockOrigin/uBlock-issues/issues/249 2018-12-17 13:53:24 -05:00
Raymond Hill
dfcd23197d
Fix parsing of redirect= option as per 67e06f53b4 (commitcomment-27803901) 2018-12-17 07:46:04 -05:00
Raymond Hill
aa50dc00d2
add built-in expressions to logger's row filterer (see #787) 2018-12-16 15:26:38 -05:00
Raymond Hill
d3a3505a54
fix regression in 8f05a2f8d3 (related issue: #3683) 2018-12-16 09:17:26 -05:00
Raymond Hill
8214a0b17d
Improve tooltip for partyness information in logger 2018-12-15 12:23:13 -05:00
Raymond Hill
261ef8c510
Add support for procedural :not to HTML filtering
Related issue: <https://github.com/gorhill/uBlock/issues/3683>

Additionally, improve compile-time error reporting in the logger
2018-12-15 10:46:17 -05:00
Raymond Hill
d2a7ada0b0
fix https://github.com/uBlockOrigin/uBlock-issues/issues/341 2018-12-14 17:55:22 -05:00
Raymond Hill
8f05a2f8d3
fix https://github.com/uBlockOrigin/uBlock-issues/issues/341, and further work for https://github.com/gorhill/uBlock/issues/3683 2018-12-14 15:25:18 -05:00
Raymond Hill
932c13bfa0
drop deprecated windowType from windows.get() 2018-12-14 14:15:43 -05:00
Raymond Hill
5b7a3c9983
fix https://github.com/uBlockOrigin/uBlock-issues/issues/256; add regex support in logger filter field 2018-12-14 11:01:21 -05:00
Raymond Hill
2f1d319072
code review: don't remember tabless network requests in behind-the-scene scope 2018-12-14 08:47:29 -05:00
Raymond Hill
1d7e3e8f82
fix https://github.com/uBlockOrigin/uBlock-issues/issues/339 2018-12-14 07:03:19 -05:00
Raymond Hill
9b27a98f90
Fix https://github.com/gorhill/uBlock/issues/3654
Additionally, there has been refactoring work done regarding
filtering context used throughout uBO, motivated by the fix
here.
2018-12-13 12:30:54 -05:00
Raymond Hill
90c073882e
fix not discarding empty hostnames: 912af3284d (commitcomment-31608689) 2018-12-08 17:23:36 -05:00
Raymond Hill
a34254122a
release indexeddb ref when unused; promisify some io code 2018-12-07 16:51:18 -05:00
Raymond Hill
3075582c72
fix https://github.com/uBlockOrigin/uBlock-issues/issues/314 2018-12-06 10:18:19 -05:00
Raymond Hill
ed265e5f68
fix https://github.com/uBlockOrigin/uBlock-issues/issues/331 2018-12-06 08:50:13 -05:00
Raymond Hill
e7d4aff2a2
fix https://github.com/uBlockOrigin/uBlock-issues/issues/328 2018-12-05 19:18:20 -05:00
Raymond Hill
0d6a18207a
fix https://github.com/uBlockOrigin/uBlock-issues/issues/329 2018-12-05 15:57:41 -05:00
Raymond Hill
1b6fea16da
3rd-gen hntrie, suitable for large set of hostnames 2018-12-04 13:02:09 -05:00
Raymond Hill
bf28a83e2d
code review re cd7b1c0eb4 2018-12-03 08:07:54 -05:00
Raymond Hill
cd7b1c0eb4
fix https://github.com/uBlockOrigin/uBlock-issues/issues/325 2018-12-02 21:41:28 -05:00
Raymond Hill
75d9cf3055
fix https://github.com/uBlockOrigin/uBlock-issues/issues/313 2018-11-26 12:02:32 -05:00
Raymond Hill
bf266eb757
recompile wat file using latest https://github.com/WebAssembly/wabt/releases 2018-11-25 12:12:07 -05:00
Raymond Hill
5d98a88093
revert unintended stray change from commit 4504040344 2018-11-24 12:21:25 -05:00
Raymond Hill
4504040344
minor code review: do not cache hostname/domain pairs when parsing filters 2018-11-24 12:09:27 -05:00
Raymond Hill
2a91a685ce
code review: fix handling of too long needles 2018-11-19 14:04:26 -05:00
Raymond Hill
a3051842bb
fix returning the wrong value (re https://github.com/uBlockOrigin/uBlock-issues/issues/6) 2018-11-18 05:56:13 -05:00
Raymond Hill
2189f020df
add new advanced setting to disable use of WASM for dev purpose 2018-11-16 10:19:06 -05:00
Raymond Hill
9eba215961
fix missing trailing asterisk in filter representation in the logger
Issue unearthed in https://github.com/uBlockOrigin/uAssets/issues/4083#issuecomment-436914727
2018-11-08 09:01:41 -02:00
Raymond Hill
6d00583a50
fix blob: case as per feedback https://github.com/uBlockOrigin/uBlock-issues/issues/283#issuecomment-436371415 2018-11-06 17:22:09 -02:00
Raymond Hill
835dcd41f2
code review for 7d100f7b21: just the very slow opportunistic walk toward full ES6 code base 2018-11-06 16:20:44 -02:00
Raymond Hill
7d100f7b21
fix https://github.com/uBlockOrigin/uBlock-issues/issues/283 2018-11-06 16:11:03 -02:00
Raymond Hill
19b7cbca55
minor review of hntrie code 2018-11-06 13:38:37 -02:00
Raymond Hill
a42513aa2f
minor code review 2018-11-04 19:26:02 -02:00
Raymond Hill
95899a0d1d
be explicit about where the related wasm file is fetched 2018-11-04 18:52:25 -02: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
b94b3417d1
do not overwrite prior results 2018-11-03 08:08:30 -03:00
Raymond Hill
d693d4fba3
add new "Benchmarks" pane in dashboard
Purpose is strictly for development purpose. The new pane can
be enabled by setting the advanced setting `benchmarkingPane`
to  `true`.
2018-11-02 16:18:50 -03:00
Raymond Hill
23cd2e1d4a
make "none" a reserved "redirect=" keyword (see deefe87555) 2018-10-31 19:34:54 -03:00
Raymond Hill
6d9382a501
fix https://github.com/uBlockOrigin/uBlock-issues/issues/77 2018-10-29 09:56:51 -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
5e08d083e0
forgot to link to issue (re https://github.com/uBlockOrigin/uBlock-issues/issues/248) 2018-10-25 11:10:21 -03:00
Raymond Hill
5f66f03c69
regression from cabb0d36b6: avoid counting "badfilter" entries as actual filters 2018-10-24 20:06:27 -03:00
Raymond Hill
c0fc7dd869
fix https://github.com/uBlockOrigin/uBlock-issues/issues/248 2018-10-24 20:02:15 -03:00
Raymond Hill
3a85158dbb
fix regression from cabb0d36b6 regarding filter used count per list 2018-10-24 06:55:04 -03:00
Raymond Hill
cabb0d36b6
fix https://github.com/gorhill/uBlock/issues/3371 2018-10-23 14:01:08 -03:00
Raymond Hill
b8720b83de
fix https://github.com/uBlockOrigin/uBlock-issues/issues/6 2018-10-17 11:52:34 -03:00
Raymond Hill
c192045e1d
fix https://github.com/uBlockOrigin/uBlock-issues/issues/264 2018-10-15 14:15:00 -03:00
Raymond Hill
d870ee147d
comment out console-logging of information (useful only for development purpose) 2018-10-01 10:14:06 -04:00
Raymond Hill
5f3ebafbf2
minor code review 2018-09-21 09:27:41 -04:00
Raymond Hill
e107cbb370
revised fix for https://github.com/uBlockOrigin/uBlock-issues/issues/229 2018-09-21 09:16:46 -04:00
Raymond Hill
6544ff5c56
fix https://github.com/uBlockOrigin/uBlock-issues/issues/229 2018-09-18 17:05:53 -04:00
Raymond Hill
a57450e1a0
fix https://github.com/uBlockOrigin/uBlock-issues/issues/228 2018-09-18 15:21:00 -04: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
183caa2782
fix regression from ba32c6a473 2018-09-09 18:08:07 -04:00
Raymond Hill
d5ddf837fa
fix a generic exception preventing a lowly-generic complex cosmetic filter from being applied 2018-09-09 13:15:43 -04:00
Raymond Hill
06fe7e6871
code review for static extended filtering, notably:
- use domain-derived integer hash to store filters

- remove code meant for firefox/legacy

- properly handle subdomains of entity-based filters
2018-09-09 08:10:09 -04:00
Raymond Hill
1d108082b7
minor code review re. 8b5a7aa398 2018-09-07 10:52:10 -04:00
Raymond Hill
8b1c39507e
minor code review: use URL() to lookup query parameters 2018-09-07 10:43:58 -04:00
Raymond Hill
8b5a7aa398
remove context menu entry and picker tools for whitelisted sites 2018-09-07 10:42:59 -04:00
Raymond Hill
89c073f3e9
fix https://github.com/uBlockOrigin/uBlock-issues/issues/209 2018-09-07 09:11:07 -04:00
Raymond Hill
108fb425fc
fix typo in comment 2018-09-06 12:55:57 -04:00
Raymond Hill
ba32c6a473
fix https://github.com/uBlockOrigin/uBlock-issues/issues/208 2018-09-06 12:51:50 -04:00
Raymond Hill
777144b036
fix https://github.com/uBlockOrigin/uBlock-issues/issues/200 2018-09-03 16:15:51 -04:00
Raymond Hill
6d34a52179
fix #2859 2018-09-03 14:06:49 -04:00
Raymond Hill
96525cffa5
code review for 3c85c03194: simplify counting of script resources 2018-09-01 06:36:17 -04:00
Raymond Hill
3c85c03194
fix #308, #3436, https://github.com/uBlockOrigin/uBlock-issues/issues/155
<https://github.com/gorhill/uBlock/issues/3436>: a new per-site switch
has been added, no-scripting, which purpose is to wholly disable/enable
javascript for a given site. This new switch has precedence over all
other ways javascript can be disabled, including precedence over dynamic
filtering rules.

The popup panel will report the number of script resources which have
been seen by uBO for the current page. There is a minor inaccuracy to
be fixed regarding the count, and which fix requires to extend request
journaling.

<https://github.com/gorhill/uBlock/issues/308>: the `noscript` tags will
now be respected when the new no-scripting switch is in effect on a given
site.

A default setting has been added to the _Settings_ pane to
disable/enable globally the new no-script switch, such that one can
work in default-deny mode regarding javascript execution.

<https://github.com/uBlockOrigin/uBlock-issues/issues/155>: a new
hidden setting, `requestJournalProcessPeriod`, has been added to
allow controlling the delay before uBO internally process it's
network request journal queue. Default to 1000 (milliseconds).
2018-08-31 18:47:02 -04:00
Raymond Hill
cae7484be1
fix https://github.com/uBlockOrigin/uBlock-issues/issues/171 2018-08-31 10:50:19 -04:00
Raymond Hill
aeb19c952b
fix false positive detection of popups
Possibly what was being experienced by this user:
https://twitter.com/Reiniervdhulst/status/1035251223669211137
2018-08-31 09:26:10 -04:00
Raymond Hill
8ca6239e64
fix https://github.com/NanoAdblocker/NanoCore/issues/202 2018-08-30 08:32:56 -04:00
Raymond Hill
e75fba169a
normalize :if to :has (see #3683) 2018-08-25 09:45:49 -04:00
Raymond Hill
bd3922c580
normalize -abp-has to has for better duplicate detection with uBO-specific syntax 2018-08-24 18:31:28 -04:00
Raymond Hill
58bd6b6974
adjust lz4 ttl as suggested by @gwarser; cache resources selfie as string 2018-08-22 08:13:10 -04:00
Raymond Hill
b7c4ee0c45
enable cache storage compression by default 2018-08-21 12:59:35 -04:00
Raymond Hill
b3dec3825c
minor code review of lz4-related code 2018-08-21 11:07:34 -04:00
Raymond Hill
3d867baf0b
fix https://github.com/NanoMeow/QuickReports/issues/6#issuecomment-414516623 2018-08-21 07:07:14 -04:00
Raymond Hill
938d54b1f7
remove unused code meant for Firefox/legacy 2018-08-18 07:51:46 -04:00
Raymond Hill
ed492bc485
fix https://github.com/uBlockOrigin/uBlock-issues/issues/170, #2240 2018-08-15 07:58:42 -04:00
Raymond Hill
5bd18f1edc
fix "Element picker/zapper does not switch tabs" in https://github.com/uBlockOrigin/uBlock-issues/issues/168 2018-08-14 20:14:13 -04:00
Raymond Hill
4bb1ec5cff
fix https://github.com/uBlockOrigin/uBlock-issues/issues/164 [regression] 2018-08-14 07:33:54 -04:00
Raymond Hill
6db88e67b1
make use of CodeMirror in "Advanced settings" page 2018-08-13 10:21:42 -04:00
Raymond Hill
1aa5497841
fix https://github.com/uBlockOrigin/uBlock-issues/issues/162 2018-08-12 19:58:33 -04:00
Raymond Hill
0aeaf27f58
code review of 38aabc937a 2018-08-12 07:18:34 -04:00
Raymond Hill
38aabc937a
reorganize cache storage compression; workaround fix for #2812 2018-08-11 10:39:43 -04:00
Raymond Hill
8f1b4b52fd
fix #3606 2018-08-09 11:31:25 -04:00
Raymond Hill
e163080518
added optional lz4 compression for cache storage (https://github.com/uBlockOrigin/uBlock-issues/issues/141)
Squashed commit of the following:

commit 6a8473822537636ac54d5dabdb14472114bb730b
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Mon Aug 6 10:56:44 2018 -0400

    remove remnant of snappyjs and spurious instruction

commit 9a4b709bee97d3cc2235fab602359fa5953bdb46
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Mon Aug 6 09:48:58 2018 -0400

    make cache storage compression optionally available on all platforms

    New advanced setting: `cacheStorageCompression`. Default is `false`.

commit 22ee6547f2f7c9c5aefe25dea1262a1b31612155
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Sun Aug 5 19:16:26 2018 -0400

    remove Chromium from lz4 experiment

commit ee3e201c45afe983508f70713a2d43af74737d8d
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Sun Aug 5 18:52:43 2018 -0400

    import lz4-block-codec.wasm library

commit 883a3118efcfd749c82356fde7134754d6ae371d
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Sun Aug 5 18:50:46 2018 -0400

    implement storage compression through lz4-wasm [draft]

commit 48d1ccaba407de447c2cd6747dc3a90839c260a7
Merge: 8ae77e6 b34c897
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Sat Aug 4 08:56:51 2018 -0400

    Merge branch 'master' of github.com:gorhill/uBlock into lz4

commit 8ae77e6aeeaa85af335e664c2560d2afd37288c6
Author: Raymond Hill <rhill@raymondhill.net>
Date:   Wed Jul 25 18:17:45 2018 -0400

    experiment with compression
2018-08-06 12:34:41 -04:00
Raymond Hill
ec8e1cca15
fix https://github.com/uBlockOrigin/uBlock-issues/issues/149 2018-07-30 08:56:51 -04:00
Raymond Hill
7702b1f4bc
minor code review 2018-07-25 18:24:14 -04:00
Raymond Hill
c417b76cea
code review: prepare for forward-compatibility if ever compression is introduced 2018-07-25 18:04:53 -04:00
Raymond Hill
7ae68c8d7d
fix https://github.com/uBlockOrigin/uBlock-issues/issues/144 2018-07-24 09:17:18 -04:00
Raymond Hill
12118e83aa
code review re. https://github.com/gorhill/uBlock/issues/2356#issuecomment-406909702 2018-07-23 09:54:25 -04:00
Raymond Hill
8db80dc4b8
fix #2356 2018-07-22 15:33:35 -04:00
Raymond Hill
51a4e9ccf4
fix #2763 2018-07-22 10:47:02 -04:00
Raymond Hill
80fedd4647
code review re. 8e9fe020b5 2018-07-22 08:14:50 -04:00
Raymond Hill
d5f40b90f6
fix #2179 2018-07-22 08:14:02 -04:00
Raymond Hill
8e9fe020b5
allow to view list content from blocked-document page 2018-07-21 12:22:53 -04:00
Raymond Hill
182542e917
code review for https://github.com/uBlockOrigin/uBlock-issues/issues/106: mind keyboard layout 2018-07-20 18:03:32 -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
87b323fe05
fix https://github.com/uBlockOrigin/uBlock-issues/issues/135 2018-07-20 07:11:21 -04:00
Raymond Hill
b5016a1f7a
fix https://github.com/uBlockOrigin/uBlock-issues/issues/136 2018-07-19 22:13:06 -04:00
Raymond Hill
e21705dea6
fix 2320610019 (commitcomment-29762923) 2018-07-19 09:40:39 -04:00
Raymond Hill
fbaf8b4e2f
code review for https://github.com/uBlockOrigin/uBlock-issues/issues/106 2018-07-19 06:46:40 -04:00
Raymond Hill
ef455deb0a
fix https://github.com/uBlockOrigin/uBlock-issues/issues/106 2018-07-18 18:00:55 -04:00
Raymond Hill
dcd98f4efa
fix load-time race condition for high-generic cosmetic filters
potentially causing high-generic cosmetic filters to not be applied
because the MRU cache contains an empty list of high-generic filters
when there is a query from a content script for cosmetic filters
before they are fully loaded and ready.
2018-07-16 09:30:36 -04:00
Raymond Hill
224661f905
fix https://github.com/uBlockOrigin/uBlock-issues/issues/118 2018-07-09 15:21:45 -04:00
Raymond Hill
79d5af20fc
fix potential spurious error from ignoring chrome.runtime.lastError 2018-07-08 08:25:08 -04:00
Raymond Hill
73067f27b1
fix bad English in comment 2018-07-06 10:47:51 -04:00
Raymond Hill
3e42b4a97f
fix https://github.com/AdguardTeam/FiltersRegistry/issues/82 2018-07-06 09:50:41 -04:00
Raymond Hill
211048396f
fix https://github.com/uBlockOrigin/uBlock-issues/issues/102 2018-07-04 15:03:09 -04:00
Raymond Hill
cf56d84061
fix https://github.com/uBlockOrigin/uBlock-issues/issues/105 2018-07-04 09:38:37 -04:00
Raymond Hill
bf0654b5ed
code review for 138e1bf558 (oops) 2018-06-26 08:33:44 -04:00
Raymond Hill
138e1bf558
fix https://github.com/uBlockOrigin/uBlock-issues/issues/89 2018-06-26 08:30:58 -04:00
Raymond Hill
4da20e96e7
fix https://github.com/uBlockOrigin/uBlock-issues/issues/84 2018-06-23 19:15:56 -04:00
Raymond Hill
4bcf578606
fix https://www.reddit.com/r/uBlockOrigin/comments/8qodpw/how_to_hide_the_info_shown_of_what_is_currently/e0lglrr/ 2018-06-14 08:29:38 -04:00
Raymond Hill
7bd76150a1
code review: fix bad lookup causing [hostname,domain] cache to never be hit 2018-06-04 08:18:13 -04:00
Raymond Hill
b838e22024
code review of 39277172e8: select "All" when kb shortcut from logger itself 2018-06-03 19:49:08 -04:00
Raymond Hill
39277172e8
fix https://github.com/uBlockOrigin/uBlock-issues/issues/54 2018-06-03 13:56:24 -04:00
Raymond Hill
7766786b2c
code review: reuse last decomposed hostname (hit rate = 75%) 2018-06-03 13:27:42 -04:00
Raymond Hill
4a57825411
code review: remove scriplet js text after injection (see https://github.com/uBlockOrigin/uBlock-issues/issues/53#issuecomment-394024828) 2018-06-01 18:41:27 -04:00
Raymond Hill
2c843f6e69
code review: chromium 45 supports arrow functions = start using them 2018-06-01 11:49:48 -04:00
Raymond Hill
798f8dab9d
reduce baseline memory at selfie-load time 2018-06-01 07:54:31 -04:00
Raymond Hill
ab867dedf5
improve in-memory storage of specific cosmetic filters + more ES6
- collate together specific filters with same base domain
- replace string-based hash to integer-based hash
- revisit code to benefit from ES6-specific syntax
2018-05-31 10:41:03 -04:00
Raymond Hill
c6cab02999
fine-tune logger-related code
- Default to being detached
- Default to "Current tab"
- Append current tab title to "Current tab" entry
- Avoid iterating through all tabs when no change
2018-05-27 08:31:17 -04:00
Raymond Hill
f887eeb3f5
code review for c5d8588118: mind whitelist status; mind an inaccessible document 2018-05-22 09:26:49 -04:00
Raymond Hill
0c5e2eb7ee
code review for c5d8588118: mind about:blank et al. iframes 2018-05-20 06:49:12 -04:00
Raymond Hill
b4306e3297
code reivew of c5d8588118: immediate scriptlets injection works well only on Chromium-based browsers for now 2018-05-18 10:19:14 -04:00
Raymond Hill
e693e308d4
code review for c5d8588118 2018-05-17 16:24:08 -04:00
Raymond Hill
21670a031f
use name in manifest for "About" pane 2018-05-17 12:45:57 -04:00
Raymond Hill
f2b2a0dca5
Merge branch 'master' of github.com:gorhill/uBlock 2018-05-17 07:33:31 -04:00
Raymond Hill
c5d8588118
inject scriptlets earlier (experimental) (ex. https://github.com/uBlockOrigin/uAssets/issues/2300) 2018-05-17 07:33:21 -04:00
Hugo Xu
de6cf0e6aa Align header parsing to ABP (#3724) 2018-05-16 14:55:12 -04:00
Raymond Hill
3a78e73e4b
Merge branch 'master' of github.com:gorhill/uBlock 2018-05-16 11:50:58 -04:00
Raymond Hill
1c8df4a652
fix https://github.com/uBlockOrigin/uBlock-issues/issues/42 2018-05-16 11:50:50 -04:00
Hugo Xu
25786c3257 Round hour up to nearest day (#3723)
* Update storage.js

* Update storage.js
2018-05-16 11:01:40 -04:00
Raymond Hill
7e5661383a
code review to further lower overhead of updating toolbar icon 2018-05-08 09:43:25 -04:00
Raymond Hill
8dd22c848a
fix https://issues.adblockplus.org/ticket/6649 (allow u flag in regexes) 2018-05-05 08:14:29 -04:00
Raymond Hill
e5d5d9eaf6
code review for 14709d18cf 2018-05-05 06:28:16 -04:00
Raymond Hill
14709d18cf
fix #2809 2018-05-04 08:44:54 -04:00
Raymond Hill
8be1aed04d
guard against future instances of issue fixed in #3721 2018-05-03 09:55:36 -04:00
Raymond Hill
f64d703ba0
fix quirks in parsing of Steven Black's hosts files 2018-05-01 18:29:58 -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
674c3c6079
fix https://github.com/uBlockOrigin/uBlock-issues/issues/17 2018-04-29 09:07:12 -04:00
Raymond Hill
3923520b87
remove no longer needed platform-dependent polyfill.js 2018-04-27 08:36:38 -04:00
Raymond Hill
fbc5e6d26c
fix https://github.com/uBlockOrigin/uBlock-issues/issues/22 2018-04-24 23:21:54 -04:00
Raymond Hill
427d0fd0ff
fix https://github.com/uBlockOrigin/uBlock-issues/issues/21 2018-04-24 17:12:41 -04:00
anvakl
4d3a2b5f85 Minor fixes to code (#3720)
* Fix leftovers from old code.

* change changes.procedural.size to changes.procedural.length

changes.procedural is an array so it should be changes.procedural.length
the  code works with changes.procedural.size because (undefined !== 0) is always true.
2018-04-24 06:05:30 -04:00
Raymond Hill
10a4a6465e
fix #3639 2018-04-24 05:48:28 -04:00
Raymond Hill
48426469de
code review of 5386558e68 2018-04-22 10:01:33 -04:00
Raymond Hill
5386558e68
fix https://www.reddit.com/r/uBlockOrigin/comments/8dkvqn/116_broken_loading_custom_filters_from_my_filters/ 2018-04-21 12:34:54 -04:00
Hugo Xu
048930ca8f RegExp fix for https://github.com/gorhill/uBlock/issues/3717 (#3718)
* Update ublock.js

* Update ublock.js

* Update ublock.js
2018-04-20 16:09:41 -04:00
Raymond Hill
9d8e2e20fb
fix firewall pane's save/revert not showing up when scrolled down on small screens 2018-04-20 16:03:37 -04:00
Raymond Hill
86e80d43d6
fix https://github.com/gorhill/uBlock/issues/3693#issuecomment-379782428 2018-04-20 11:26:11 -04:00
Raymond Hill
0036154d52
code review: be sure "ublock" flavor is always present 2018-04-18 07:11:13 -04:00
Raymond Hill
e2af7c5c55
code review: simplfy devbuild detection using webextFlavor 2018-04-14 06:09:36 -04:00
Hugo Xu
ae6b376a75 Fix RegExp escape (#3700) 2018-04-11 11:28:10 -04:00
Raymond Hill
c34326cf4e
code review: further tuning filter list directives 2018-04-11 06:34:13 -04:00
Raymond Hill
8436ccbc4e
improve ckoud widget for small screen devices 2018-04-10 11:21:56 -04:00
Raymond Hill
e1c18110c0
code review: fix jshint warning 2018-04-10 08:14:10 -04:00
Raymond Hill
6bbd892dd3
Merge branch 'master' of github.com:gorhill/uBlock 2018-04-10 08:08:36 -04:00
Raymond Hill
94a43bec0d
fix #3694 2018-04-10 08:08:28 -04:00
Hugo Xu
60751044fe Update scriptlet-filtering.js (#3696) 2018-04-09 17:49:35 -04:00
Raymond Hill
00cb02ec47
fix new hidden setting default value not being applied (https://github.com/orgs/uBlockOrigin/teams/volunteers/discussions/62) 2018-04-09 17:46:29 -04:00
Raymond Hill
47598d4499
further fine tune "Filter lists" pane (b60c06f3) 2018-04-09 15:45:25 -04:00
Raymond Hill
26c2320e46
code review: improve compatibility with StevenBlack hosts files 2018-04-09 15:40:29 -04:00
Raymond Hill
b60c06f3c4
various improvements to the "Filter lists" pane 2018-04-09 09:01:39 -04:00
Raymond Hill
fb2b402940
use Element.matches instead of ugly hack 2018-04-09 08:28:36 -04:00
Raymond Hill
8071321e91
lower default value of manualUpdateAssetFetchPeriod 2018-04-09 08:26:14 -04:00
Hugo Xu
47ae08b0b1 Accept ubo:// (#3682)
This prevents AdBlock and ABP from reacting to subscription links of uBO-only filters.
2018-04-06 17:32:18 -04:00
Raymond Hill
daf948b779
fix https://github.com/gorhill/uBlock/pull/3679#issuecomment-379092981 2018-04-06 16:15:10 -04:00
Raymond Hill
a015ad0a5c
Merge branch 'master' of github.com:gorhill/uBlock 2018-04-06 16:02:41 -04:00
Raymond Hill
4d8974fe80
code review: avoid redundant PSL selfie 2018-04-06 16:02:35 -04:00
Hugo Xu
fc4fccd8e3 Accept # Title: and # Expires:; optimize RegExp (#3679)
* Accept `# Title:` and `# Expires`; optimize RegExp

* Prevent confusion with network filter
2018-04-06 15:59:01 -04:00
Raymond Hill
c0387835fa
code review: modernize old code 2018-04-05 15:22:19 -04:00
Raymond Hill
c1d3b6222e
code review: use regex to speed up CSS selector validation 2018-04-05 09:45:11 -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
bf384e2bca
better evaluate vAPI.webextFlavor 2018-04-04 12:42:01 -04:00
Raymond Hill
c695599860
code review: adjust position of eraser/padlock only when needed 2018-04-04 08:17:53 -04:00
Raymond Hill
e64a59b32c
fix #3667 2018-04-02 18:40:29 -04:00
Raymond Hill
98df44c373
invalidate resources selfie when new version is detected [Firefox] 2018-04-02 11:03:12 -04:00
Raymond Hill
fe11ff61c8
mind whitelist directives for filterable behind-the-scene requests (#3654) 2018-04-02 09:10:38 -04:00
Raymond Hill
9bc029b72c
allow un-whitelisting in non-advanced user mode 2018-03-31 15:02: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
9fdda522a1
send cursor at the end when opening "My filters" pane 2018-03-28 19:04:04 -04:00
Raymond Hill
fce2eaf3c3
further improving UI for small screens 2018-03-28 16:15:50 -04:00
Raymond Hill
88f0fd6c00
avoid spurious select-all 2018-03-28 09:43:48 -04:00
Raymond Hill
f764435812
various changes to enhance UI for mobile devices 2018-03-28 09:11:55 -04:00
Raymond Hill
782faf4f44
fix #3646 2018-03-27 19:10:31 -04:00
Raymond Hill
827732a991
revert attempted fix for #3646 2018-03-27 15:03:24 -04:00
Raymond Hill
376c95bcc9
#3646: find out if this makes a difference 2018-03-27 14:11:06 -04:00
Raymond Hill
e35f6b3df6
code review: no need for callback arg 2018-03-23 15:05:35 -04:00
Raymond Hill
d9161aeffa
fix #3636 2018-03-23 15:03:29 -04:00
Raymond Hill
431b40f8e4
code review for 6871d9aed4 2018-03-21 08:42:21 -04:00
Raymond Hill
6871d9aed4
add ability to filter out rules in "My rules" pane 2018-03-21 07:24:52 -04:00
Raymond Hill
9ce1f8af08
fix https://www.reddit.com/r/uBlockOrigin/comments/8524cf/my_custom_scriptlets_doesnt_work_what_am_i_doing/ 2018-03-19 10:25:03 -04:00
Raymond Hill
96d4f987ac
use default codemirror input style, contenteditable interferes with search widget 2018-03-18 14:04:58 -04:00
Raymond Hill
2afd9919cc
fix #3624 2018-03-18 13:56:20 -04:00
anvakl
33fa25bbe5 fix for gorhill/uBlock#3464 (#3616)
Adding index to insertRule fixed the issue
2018-03-17 13:35:36 -04:00
Raymond Hill
23accd1c57
fix #3615 2018-03-17 10:25:03 -04:00
Raymond Hill
e26e70ad4e
fix #3614 2018-03-17 08:38:49 -04:00
Raymond Hill
7d110250f3
fix #3611 2018-03-16 18:33:50 -04:00
Raymond Hill
e5eb0ac362
remove comment with erroneous information 2018-03-16 07:49:56 -04:00
Raymond Hill
11ccb4523a
update fix for https://github.com/gorhill/uMatrix/issues/967 2018-03-14 12:06:49 -04:00
Raymond Hill
04cee142bc
fix https://github.com/gorhill/uMatrix/issues/967 (uBO-side) 2018-03-13 17:24:07 -04:00
Raymond Hill
b89ec2861c
fix #3594: incomplete conversion to CodeMirror widget 2018-03-12 12:08:45 -04:00
Raymond Hill
9715d1e8b9
make use of CodeMirror for Whitelist pane 2018-03-12 08:28:07 -04:00
Raymond Hill
1e8d966938
fix regression in Firefox legacy version 2018-03-11 18:59:21 -04:00
Raymond Hill
eb789939ca
code review for b10ac0020d: fix too rigid field separator 2018-03-11 12:52:02 -04:00
Raymond Hill
b10ac0020d
make use of CodeMirror in "My rules" pane 2018-03-11 10:59:39 -04:00
Raymond Hill
dd979ff5ff
code review: allow dev build of Firefox to update resources.txt 2018-03-11 10:38:35 -04:00
Raymond Hill
081e5b4db9
fix #3581 2018-03-07 10:37:18 -05:00
Raymond Hill
333c6f60fb
fix #3580 2018-03-07 06:28:26 -05:00
Raymond Hill
a470c119aa
make options separator standout a bit better 2018-03-06 15:47:40 -05:00
Raymond Hill
15530df0e7
code review: reset internal parser data once done parsing 2018-03-06 15:46:05 -05:00
Raymond Hill
ec56165d0d
new script:inject syntax, use only when next release is *very* widespread 2018-03-06 09:09:53 -05:00
Raymond Hill
34efe9d6f2
[codemirror] use inputStyle=contenteditable for better select-all performance 2018-03-06 06:22:11 -05:00
Raymond Hill
7a90a69347
fine tuning syntax highlighter 2018-03-05 13:05:26 -05:00
Raymond Hill
9b803a2295
fine tuning syntax highlighter 2018-03-05 11:25:45 -05:00
Raymond Hill
9df0202a00
[codemirror] add active line addon 2018-03-05 06:59:03 -05:00
Raymond Hill
2c45971c65
code review: fine tuning look/behavior (#3567) 2018-03-04 17:13:27 -05:00
Raymond Hill
c59ceff6a1
code review: always search from current cursor position (#3567) 2018-03-04 15:52:34 -05:00
Raymond Hill
a69379068e
fix nonsensical "obsolete" status for user filters 2018-03-04 15:00:42 -05:00
Raymond Hill
bc61bef9a7
address #3567 2018-03-04 14:07:01 -05:00
Raymond Hill
8cf87061f4
fix #3562 2018-03-01 14:12:16 -05:00
Raymond Hill
8d5ebf44ef
support saving using keyboard (through codemirror) in "My filters" 2018-03-01 13:37:23 -05:00
Raymond Hill
959f68ce89
fix #3494 2018-03-01 13:11:17 -05:00
Raymond Hill
61ec088d43
integrate codemirror into "My filters" pane 2018-02-28 18:51:33 -05:00
Raymond Hill
cff1bcb24f
minor code review 2018-02-28 12:36:18 -05:00
Raymond Hill
ac7e012633
start integration of codemirror to improve UI 2018-02-28 12:31:43 -05:00
Raymond Hill
7eeba29220
fix #3551: regressions as a result of fix to #3428 2018-02-27 06:54:48 -05:00
Raymond Hill
0414ce80a0
code review for #3428 2018-02-26 16:52:16 -05:00
Raymond Hill
67e06f53b4
offer concise version of often-used filter options (see https://github.com/NanoAdblocker/NanoCore/blob/master/Notes/FilterIncompatibility.MD#convenience-options) 2018-02-26 14:08:16 -05:00
Raymond Hill
2c901588c7
fix #3546, #3428 2018-02-26 13:59:16 -05:00
Raymond Hill
d42adc912d
fix silly mistake in fix for #3526 2018-02-23 09:45:51 -05:00
Raymond Hill
9fb455d2df
fix #3406 2018-02-23 06:42:17 -05:00
Raymond Hill
a81d2a759b
fix #3318, #3387 2018-02-21 13:29:36 -05:00
Raymond Hill
6b7d8e75f4
bring out of band fixes (c5cbf5db47, 2999dbee5c) for Firefox/webext into master 2018-02-21 08:19:43 -05:00
Raymond Hill
21f7d42f54
fix #3507 2018-02-18 07:16:10 -05:00
Raymond Hill
c3f9f6b716
code review: bit stricter code path 2018-02-18 06:08:48 -05:00
Raymond Hill
4ed0d87b7b
code review: prevent redirection to WAR when request is xmlhttprequest 2018-02-16 13:37:20 -05:00
Raymond Hill
287f04b47e
code review for #3474, #2823: simplify management of "web accessible resources" 2018-02-16 09:07:20 -05:00
Raymond Hill
47152560af
import emergency fix from 1.15.6 2018-02-15 17:39:31 -05:00
Raymond Hill
17930cc778
fix #3474, #2823 2018-02-15 17:25:38 -05:00
Raymond Hill
94c8cfc3f3
fix #3506 2018-02-12 08:18:24 -05:00
Raymond Hill
613ff9cc9b
tentatively fix #3478: need feedback from reporter 2018-02-03 09:34:27 -05:00
Raymond Hill
51fc60223a
fix #3450 2018-01-20 09:10:23 -05:00
Raymond Hill
888d36fd06
fix #3433 2018-01-13 09:42:42 -05:00
Raymond Hill
a217ca42c9
fix https://github.com/nikrolls/uBlock-Edge/issues/101 2018-01-13 09:07:34 -05:00
Raymond Hill
6219866b53
fix #3430 (regression) 2018-01-12 09:33:01 -05:00
Raymond Hill
36b1eac88e
fix #3425 (regression from 6cdb20df) 2018-01-10 17:59:07 -05:00
Raymond Hill
9fa1c37183
code review: fix eraser when using "Current tab" view in logger 2018-01-10 11:50:08 -05:00
Raymond Hill
6cdb20dffe
improve logger convenience following fix for #2854 2018-01-09 08:08:17 -05:00
Raymond Hill
689d18c54f
fix #2854 2018-01-08 14:29:39 -05:00
Raymond Hill
f53b3e3930
fix #3416 2018-01-08 07:33:38 -05:00
Raymond Hill
b7155a0e0f
fix #3408 2018-01-07 17:53:33 -05:00
jspenguin2017
178b82eb6a
https://github.com/NanoAdblocker/NanoCore/issues/40 2018-01-06 08:54:28 -05:00
Raymond Hill
a0375bb6a3
add support for iso-8859-1/windows-1252 encoding (https://github.com/gorhill/uBlock/issues/3391#issuecomment-354868704) 2018-01-05 13:15:56 -05:00
Raymond Hill
4812ac9b68
fix #3399 (part 1) 2018-01-04 18:26:52 -05:00
Raymond Hill
21b52ec10b
code review: remove pointless test 2018-01-04 17:55:59 -05:00
Raymond Hill
04d84cf92a
fix #3397 2018-01-03 13:59:38 -05:00
Raymond Hill
455bf281f0
fix #3391 2018-01-02 23:06:16 -05:00
Raymond Hill
636dcf7ee4
fix #3383 2018-01-01 07:52:03 -05:00
Raymond Hill
ce696e5fbe
fix #3386 2017-12-31 21:13:06 -05:00
Raymond Hill
ec29c9a127
fix #3382 2017-12-31 16:05:23 -05:00
Raymond Hill
37fde84a45
code review #3367 + improve compatibility with Adguard filters 2017-12-31 08:44:29 -05:00
Raymond Hill
17dfec5759
fix #3372 2017-12-30 18:55:01 -05:00
Raymond Hill
1cd61063fa
fix #3380 2017-12-30 17:38:07 -05:00
Raymond Hill
e84e79f96e
fix #3367 2017-12-30 16:02:34 -05:00
Raymond Hill
f659dc8e49
add TODOs comments 2017-12-30 11:21:23 -05:00
Raymond Hill
f7c02e237f
code review for #3331: increase restrictions
Only resources from within current directory will be allowed,
everything else will be silently rejected.
For example, this will forbid pulling lists from different repos
on GitHub, despite the lists being same origin.
2017-12-30 11:05:15 -05:00
Raymond Hill
6ab34efe44
minor code review: remove pointless test 2017-12-29 21:54:03 -05:00
Raymond Hill
3ec9377c3e
code review: disregard case sensitivity 2017-12-29 21:29:57 -05:00
Raymond Hill
a3f7392f06
code review: mind length of data available 2017-12-29 20:33:24 -05:00
Raymond Hill
b36320c643
code review: improve scriptlet inject code in stream data listener 2017-12-29 20:26:03 -05:00
Raymond Hill
6f8099fb90
fix regression in scriptlet injection: mind BOM sequence in response data filtering 2017-12-29 15:56:15 -05:00
Raymond Hill
5c20182948
fix regression in per-list filter counts (reported by @mapx-) 2017-12-29 13:31:37 -05:00
Raymond Hill
707d7708a1
code review: fix recursivity in HTML filtering's procedural selectors 2017-12-29 10:26:50 -05:00
Raymond Hill
31791f2dd2
code review: caller always expect an array as return value 2017-12-29 09:02:26 -05:00
Raymond Hill
a8d79feecd
fix #3379 (regression from a9f68fe02f) 2017-12-29 08:05:50 -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
Raymond Hill
3f335ad432
address incomplete fix for #2877 as per feedback: dec0b80a72 (commitcomment-26447318) 2017-12-23 08:14:08 -05:00
Raymond Hill
4f5f3652ed
code review re last commit b446f9f8bd 2017-12-22 11:56:27 -05:00
Raymond Hill
b446f9f8bd
fix regression reported in dec0b80a72 (commitcomment-26435928) by partially reverting changes from 4a09c9f866 2017-12-22 11:45:07 -05:00
Raymond Hill
4ab63e70fe
code review: avoid Array.splice/unshift
The array size stays the same, items are just moved around.
2017-12-22 09:37:26 -05:00
Raymond Hill
607968de7f
code review: cache most-recently-used pre-filled scriptlets 2017-12-21 17:05:25 -05:00
Raymond Hill
4a09c9f866
improve slightly pre-parsing of ##script:... filters 2017-12-17 10:28:12 -05:00
Raymond Hill
dec0b80a72
fix #2877 2017-12-17 08:09:47 -05:00
Raymond Hill
8e7ccef14c
code review for #3331: support relative paths as per https://github.com/AdguardTeam/AdguardBrowserExtension/issues/917 2017-12-15 09:24:06 -05:00
Raymond Hill
912582ce4b
code review: remove space as per https://github.com/AdguardTeam/AdguardBrowserExtension/issues/917 2017-12-15 07:55:15 -05:00
Raymond Hill
6a8c27b6df
fix #3331: ability to fetch sublists using !# include directives 2017-12-15 07:39:21 -05:00
Raymond Hill
36956cbc7a
remove obsolete resource caching code 2017-12-14 16:42:54 -05:00
Raymond Hill
ca8917149d
fix #3341 2017-12-13 08:02:55 -05:00
gorhill
958a7c20ed
fix #3335 2017-12-10 15:03:03 -05:00
gorhill
e83ffde5af
code review for #3328 2017-12-08 07:07:05 -05:00
gorhill
c7e8b65b6c
fix #3328 2017-12-08 00:33:02 -05:00
gorhill
faad68f37b
code review: simplify needlessly complicated logger buffering code 2017-12-01 16:42:33 -05:00
gorhill
142ed51f05
comment fix with issue number (#3287) 2017-11-27 17:09:22 -05:00
gorhill
426d9e9db1
fix #3287 2017-11-27 14:48:01 -05:00
gorhill
75659a3154
fix #3260 2017-11-22 07:41:33 -05:00
Kacper Michajłow
ec70c75264 improve DOM inspector (#3254)
* dom-inspector: Improvments

- Fix race between userCSS injection and element highlight resulting in none or not all elements highlighted.
- Fix page being scanned twice resulting in unneeded slowdown.

* dom-inspector: Clear mutationTimer to allow more than one update.

* dom-inspector: Fix procedural filters shown as declarative with expando.
2017-11-21 18:08:32 -05:00
gorhill
b85ea96d1e
fix #3257 2017-11-21 13:38:31 -05:00
gorhill
806032cdc4
improve DOM inspector
- Fix regressions reported in #3159
- Fix #2001
- Fix some item points in #407
2017-11-20 08:42:32 -05:00
gorhill
387eaa0b21
fix #3185 2017-11-16 10:55:28 -05:00
gorhill
b02fcb1b31
fix #3130 2017-11-16 00:34:01 -05:00
gorhill
118240d36d
fix #3232 (regression from 386e8bee9c) 2017-11-15 16:32:52 -05:00
gorhill
374e157b11
fix #3159 2017-11-14 15:03:20 -05:00
gorhill
034e46b055
mind isTrusted for click events (see https://palant.de/2017/11/11/on-web-extensions-shortcomings-and-their-impact-on-add-on-security) 2017-11-12 07:44:28 -05:00
gorhill
48f65f11d1
fix #2963 2017-11-12 07:41:55 -05:00
gorhill
8b0df725a1
minor code review (#2072) 2017-11-10 08:01:04 -05:00
gorhill
7b27e8f08a
add further fixes as per feedback (#2072) 2017-11-10 07:53:27 -05:00
gorhill
d3d522ac46
fix #3213 2017-11-10 06:56:38 -05:00
gorhill
bc036724c1
code review (#3208) 2017-11-09 15:46:25 -05:00
gorhill
386e8bee9c
fix #3210 2017-11-09 12:53:05 -05:00
gorhill
3dcfc302e4
fix https://github.com/gorhill/uBlock/issues/3208#issuecomment-342900031 2017-11-08 13:29:04 -05:00
gorhill
e5afbb2ed7
further make popup panel more ARIA-friendly (#2072) 2017-11-08 07:34:22 -05:00
gorhill
9884ff115a
code review e7294a46d4: force refresh tooltip if needed 2017-11-07 17:03:24 -05:00
gorhill
e7294a46d4
fix https://github.com/gorhill/uBlock/issues/2072#issuecomment-342594160 2017-11-07 16:38:26 -05:00
gorhill
9d86ab0af9
fix #3201 2017-11-07 11:31:19 -05:00
gorhill
4d20950dfa
save investigative work for the future re. wasm 2017-11-05 12:33:46 -05:00
gorhill
da605f53a6
code review: avoid pointless test for single-char cells 2017-11-05 06:45:43 -05:00
gorhill
f71d3689a9
fix case 2 of #3199 2017-11-04 23:51:44 -04:00
gorhill
8d44bf9837
fix #3187 again, as per feedback 2017-11-03 16:51:28 -04:00
gorhill
22c460d52f
just edit comments 2017-11-03 08:36:16 -04:00
gorhill
5928996f2a
address #3193 2017-11-02 15:49:11 -04:00
gorhill
2ca8c76cb8
fix #3187 2017-11-02 11:12:17 -04:00
gorhill
3044590fa6
code review: allow free scrolling in element picker mode 2017-10-31 08:26:51 -04:00
gorhill
2db377f577
code review: lower timer delay = less risk of large backlog 2017-10-31 06:47:39 -04:00
gorhill
cbff97f8e7
code review: improve caching of high generics with exceptions 2017-10-29 13:58:46 -04:00
gorhill
25e2452722
code review: use for..of instead of for(..;..;..) 2017-10-28 16:50:44 -04:00
gorhill
005c659500
code review: improve element picker for touch-only devices 2017-10-28 09:07:41 -04:00
gorhill
bbda2a9086
code review: preemptively address https://bugzilla.mozilla.org/show_bug.cgi?id=1408996#c9 2017-10-27 14:22:45 -04:00
gorhill
d60edbfae1
code review last commit: oops 2017-10-26 06:23:57 -04:00
gorhill
44ce44aa42
code review: early injection of lookred up generic cosmetic filters when possible 2017-10-26 06:18:03 -04:00
gorhill
6b65e3f406
code review: avoid reinjecting already injected low generic cosmetic filters 2017-10-25 11:42:18 -04:00
gorhill
26e9bb7c19
code review: use Map instead of Object 2017-10-25 11:37:58 -04:00
gorhill
9952e12aff
fine tune DOM surveyor 2017-10-24 16:38:51 -04:00
gorhill
ed5dba432a
fix https://discourse.mozilla.org/t/support-ublock-origin/6746/606 2017-10-24 09:09:10 -04:00
gorhill
2bea51cc63
fix silly regression regarding the DOM surveyor 2017-10-24 07:55:35 -04:00
gorhill
7571d4c576
fix no-popups switch color in logger 2017-10-23 22:39:30 -04:00
gorhill
9b891384af
fix #3165 2017-10-23 22:27:39 -04:00
gorhill
f516cd3d26
remove unused source code 2017-10-23 13:33:35 -04:00
gorhill
a76f5b15ac
fix https://github.com/gorhill/uBlock/issues/3160#issuecomment-338509997 2017-10-23 12:21:37 -04:00
gorhill
6e18829f02
add to #2984: fix regressions, as per feedback and code review 2017-10-23 09:01:00 -04:00
gorhill
14109b33d6
minor code review 2017-10-22 14:20:33 -04:00
gorhill
ef84e6d8fd
fix https://github.com/gorhill/uBlock/issues/2984#issuecomment-338475886 2017-10-22 12:48:13 -04:00
gorhill
4f7aab695c
fix #3160 2017-10-22 08:59:29 -04:00
gorhill
6112a68faf
fix #2984 2017-10-21 13:43:46 -04:00
gorhill
95b25f7d49
fix #3150 2017-10-19 09:35:28 -04:00
gorhill
143e9c7414
more code review re. #3140 2017-10-19 08:07:00 -04:00
gorhill
7e21eec7ce
code review for #3140: handle case where both blockedURI & sourceFile are not found 2017-10-19 00:45:24 -04:00
gorhill
eb7bdba47f
fix #3140 2017-10-18 15:00:22 -04:00
gorhill
d44c54a477
code review: diregard letter case when validating popup filters as popunder ones 2017-10-13 09:52:17 -04:00
gorhill
9b83033785
code review of 7713597e (oops) 2017-10-13 09:38:16 -04:00
gorhill
7713597e3e
fix #3129, #3112, #2277 2017-10-13 09:33:02 -04:00
gorhill
0c1207bd7a
fix #3110 2017-10-09 09:28:28 -04:00
gorhill
8c33720d16
fix #3111 2017-10-08 23:47:23 -04:00
gorhill
49c19f2dcc
remove stray console.log used for development purpose 2017-10-06 13:47:39 -04:00
gorhill
4639d75896
fix #3101 2017-10-06 13:35:45 -04:00
gorhill
c49ba60f0b
minor code review 2017-10-05 08:38:34 -04:00
gorhill
bd18fe3901
fix #2793: user-friendlier normalization 2017-10-04 13:20:43 -04:00
gorhill
a6b01cb0e5
fix #3090 2017-10-04 11:14:24 -04:00
gorhill
e7e390d2e2
fix #3077 2017-10-01 07:56:28 -04:00
gorhill
ca299a394f
code review fix as per https://github.com/gorhill/uBlock/issues/2793#issuecomment-333269387 2017-09-30 10:18:41 -04:00
gorhill
6a71fc59a4
evict possible remnant of resources.txt from cache [Firefox] 2017-09-29 08:22:17 -04:00
gorhill
8559669e89
fix #2755 2017-09-28 12:53:05 -04:00
gorhill
d73b888150
fix #3060 2017-09-27 10:27:29 -04:00
gorhill
c74526a895
fix #3057 2017-09-26 16:09:35 -04:00
gorhill
83ff2ef26e
fix #3053 2017-09-26 07:54:06 -04:00
gorhill
ac481ec1f2
fix #1510 2017-09-21 11:46:15 -04:00
gorhill
e9beccba51
code review of fix #3038 2017-09-19 23:25:08 -04:00
gorhill
1b6c211fa0
fix #3038 2017-09-19 12:58:11 -04:00
gorhill
59ba5248f5
fix #3034 2017-09-18 13:06:36 -04:00
gorhill
b677600637
fix #3032 -- hopefully 2017-09-18 10:52:30 -04:00
gorhill
1e760f9429
fix #3024: regression from 5626b500 2017-09-16 07:59:56 -04:00
gorhill
2c4faaa84d
fix #3020 2017-09-16 07:49:43 -04:00
gorhill
f632171566
remove spurious space character 2017-09-14 17:54:59 -04:00
gorhill
faeedeaf56
fix #2283 2017-09-13 23:41:20 -04:00
gorhill
5626b5005a
fix #2946 2017-09-12 11:43:43 -04:00
gorhill
dfe18111b9
fix #1539 2017-09-11 09:53:42 -04:00
gorhill
c641cadea9
rename "Social" filter list category to "Annoyances" 2017-09-10 13:02:04 -04:00
gorhill
2660bee0d2
fix #2919 2017-09-05 19:49:48 -04:00
gorhill
8b4b1fa9db
properly fix #2938 2017-08-31 14:17:55 -04:00
gorhill
73387e54ad
fix #2938 2017-08-30 19:03:02 -04:00
gorhill
126110c9a0
remove ability to pull latest version of resources.txt from remote repo.
This is required as per Firefox extension reviewers. Mail exchange:

========

Reviewer:
> Do I read the code correctly that you are executing remote JS by
> downloading/updating from
> https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resources.txt
> and injecting scripts in contentscripts.js?

Me:
> Yes, resources.txt contains scriptlets or other resources used to:
>
> - Minimize potential page breakage (e.g. google-analytics.com/ga.js);
> - Defuse anti-blockers (e.g. bab-defuser.js);
> - Defuse anti-blockers or minimize page breakage through redirection
> (e.g. 2x2-transparent.png)
>
> This is not a new feature -- this is also part of the legacy version,
> and I consider this is a major feature of uBO. Given how fast things can
> change out there, this allows me to quickly push fixes when a new issue
> is reported for a site without having to go through a full update of the
> extension.

Reviewer:
> I am aware that this is not a new feature. I am unclear why it has been
> allowed in the past, since it violates our policy about remote code
> execution. I assume it was missed due to the fairly complex codebase.
>
> I can approve this version so you are not blocked on the migration, but
> eventually, you cannot use functionality that executes remote code.
> Since we're moving to a more automated review process, you will be able
> to ship new versions without being blocked on a human review.

Me:
> Do I understand correctly that extensions such as TamperMonkey or
> ViolentMonkey won't be allowed on AMO?
>
> Those extensions are even more permissive than uBO given a user can
> import scripts from any source, while with uBO only scriptlets which are
> part of the project are allowed.

Reviewer:
> The key difference between add-ons like Tampermonkey and uBO is that in
> Tampermonkey, users are making an active and conscious decision to
> download and execute that specific code. In uBO, the user did not
> initiate that download/execution, nor are they even aware of it
> happening.

Me:
> So users of TamperMonkey -- tech-savvy or not -- can download & inject
> countless 3rd-party user scripts from countless authors, have them
> update on their own automatically at regular interval with no user
> intervention.
>
> On the other hand, it's not acceptable for me, the author of the
> extension, who users implicitly trusted when installing the extension,
> who is completely controlling and vouching for the content of
> "resources.txt", to have this one 1st-party resource file[1] to be
> updated at regular interval with no user intervention.
>
> So anyways, what is expected from me at this point? Do I need to remove
> scriptlet injection and resource redirection features? Do I need to
> remove only the updating part of resources.txt?
>
> [1] key to core features of uBO (counter anti-blockers + page breakage
> mitigations) and possibly an important factor in installing the
> extension.

========

Now about this commit: the purpose of the code change here is to
prevent "resources.txt" -- which is part of the package -- from being
updated -- this applies only to the Firefox webext[-hybrid] version
of uBO.
2017-08-30 09:15:06 -04:00
gorhill
beb7933016
fix #2925 2017-08-29 18:32:00 -04:00
gorhill
b2e89c9ece
generate better regex for hostname-anchored generic filters 2017-08-24 18:30:05 -04:00
gorhill
c31d29c2e3
fix bad test: regression from fdcc9515 2017-08-24 17:54:27 -04:00
gorhill
63be43a365
shield content script against exceptions in injected scriptlets 2017-08-21 12:04:35 -04:00
gorhill
a1350b8cff
fix #2882 2017-08-17 09:54:01 -04:00
gorhill
fdcc9515dc
fix #2029 2017-08-17 08:25:02 -04:00
gorhill
d1c752da29
fix bad English in comment 2017-08-16 18:06:04 -04:00
gorhill
797082a36c
fix #2552 2017-08-16 14:10:41 -04:00
gorhill
5f72565f7a
fix #2873 2017-08-15 09:09:16 -04:00
gorhill
0e078e536d
eliminate validation warning on AMO: avoid innerHTML 2017-08-11 14:26:15 -04:00
gorhill
eb3519b075
fix #2839 2017-08-03 10:18:05 -04:00
gorhill
43512277c6
fix #2835 2017-07-31 17:03:09 -04:00
gorhill
645c862886
always set browserAction title 2017-07-25 09:16:48 -04:00
gorhill
906cb34716
make uBO/webext functional on Firefox for Android Nightly 2017-07-24 19:25:49 -04:00
gorhill
d866e4d472
add proper handling of potentially unsupported webext APIs 2017-07-24 11:35:22 -04:00
gorhill
0d892a8856
fix #2810 2017-07-23 09:56:43 -04:00
gorhill
48ee02980b
remove stray code change from f5ef83719c 2017-07-22 17:13:21 -04:00
gorhill
b429e1c7ba
fix #2813 2017-07-22 16:58:08 -04:00
gorhill
f5ef83719c
address #2806 2017-07-21 07:48:50 -04:00
gorhill
f1036395f7
add workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1360285 2017-07-19 09:36:17 -04:00
gorhill
49d287994f
remove obsolete default whitelist directive 2017-07-14 07:49:58 -04:00
gorhill
36317e67a2
#2781: code review, small fine tuning 2017-07-13 14:34:43 -04:00
gorhill
3aed25ff2c
#2781: code review, try a bit harder to find a good token 2017-07-11 15:04:25 -04:00
gorhill
f0ea2b6f9a
#2781: code review 2017-07-11 13:57:31 -04:00
gorhill
2862368a99
fix #2781 2017-07-11 12:21:08 -04:00
gorhill
93f575c4c0
fix https://github.com/gorhill/uBlock/issues/2776#issuecomment-313922863 2017-07-09 10:39:23 -04:00
gorhill
7fb034f640
minor code review: logData can still be set when not logging 2017-07-09 08:45:55 -04:00
gorhill
9701a519a2
really fix #2776 2017-07-09 06:58:34 -04:00
gorhill
974194ab8d
fix #2776 2017-07-08 20:03:37 -04:00
gorhill
9ac4dc9f81
fix #2768 2017-07-07 11:23:24 -04:00
gorhill
186c119202
fix #2753 2017-07-03 10:54:30 -04:00
gorhill
414765f526
code review: fix workaround for legacy FF 2017-07-03 10:50:47 -04:00
gorhill
2cb8ddbe03
fix #2740 2017-07-03 10:20:47 -04:00
gorhill
a8382e821d
work around for #2734 until fixed in Nightly 2017-07-03 09:51:34 -04:00
gorhill
20346ef0ed
auto-convert removed stock list into an imported list 2017-07-03 09:08:46 -04:00
gorhill
d337abe504
minor code review 2017-06-22 14:36:45 -04:00
Sean Stangl
88fcf53d34 Check childElementCount directly. (#2725) 2017-06-21 20:09:19 -04:00
gorhill
9b55684551
fix #2718 2017-06-21 15:49:42 -04:00
gorhill
5ee1fa7684
fix #2720 2017-06-21 07:17:44 -04:00
gorhill
84f22ce3a6
code review: do not pollute logger with firewall noop rules 2017-06-14 08:32:12 -04:00
gorhill
2c9c98eb79
fix #2664 2017-06-07 17:35:22 -04:00
gorhill
6b293dd58b
code review: put back erroneously removed line 2017-06-07 13:20:35 -04:00
gorhill
e17e9c804a
fix #1754 2017-06-05 09:26:11 -04:00
gorhill
cc935ee19a
minor fine tuning 2017-06-02 08:17:09 -04:00
gorhill
dbe95c438b
fix #2666 2017-05-31 11:49:37 -04:00
gorhill
5b66a8419d
ignore "Delete" key in element picker mode 2017-05-31 07:26:01 -04:00
gorhill
c7a9befdab
fix #2664 2017-05-30 13:04:01 -04:00
gorhill
9c79840134
fix #2663 2017-05-30 11:38:45 -04:00
gorhill
062846a7d2
make zapper compatible with touch screens 2017-05-29 10:38:22 -04:00
gorhill
1581ec20d8
fix #2659 (regression) 2017-05-28 16:57:02 -04:00
gorhill
189c9d55dd
convenience: shift-click to stay in element-zapper mode 2017-05-28 13:45:11 -04:00
gorhill
c1589cafaa
fix popup panel layout as per feedback: 39aeaa12a7 (commitcomment-22310294) 2017-05-28 13:32:08 -04:00
gorhill
d50e76745d
fix #2658 2017-05-28 12:21:56 -04:00
gorhill
95f29c98fd
fix #2658 2017-05-28 10:53:13 -04:00
gorhill
78d9c4d1c5
implement opening logger with kbd shortcut 2017-05-28 09:40:26 -04:00
gorhill
9a4681d4e1
fix #2656 2017-05-27 14:31:46 -04:00
gorhill
39aeaa12a7
new feature: element zapper 2017-05-27 11:51:24 -04:00
gorhill
aae97b8535
fix badfilter option; performance work
- badfilter option was no longer working following last refactoring
  changes.
- performance work:
    - reduce duplication of large strings.
    - new lighter FilterBucket to use when only 2 filters: FilterPair.
2017-05-26 20:00:21 -04:00
gorhill
1c685c86a7
mind https://bugs.chromium.org/p/v8/issues/detail?id=2869 2017-05-26 12:46:36 -04:00
gorhill
8d2319e011
fix "purge all" button not disabled when there is nothing left to purge 2017-05-26 08:31:19 -04:00
gorhill
f3e6057e07
fix #2598: refactor to address the cause rather than the symptoms 2017-05-25 17:46:59 -04:00
gorhill
a4ec9f5dae
fix #2640 2017-05-23 12:16:53 -04:00
gorhill
fd776bbf51
fix #2622 2017-05-20 17:05:55 -04:00
gorhill
fd03683045
minor code review: it makes no difference, I just prefer no indent there 2017-05-20 16:32:42 -04:00
gorhill
be9d76f43d
fix #2624 2017-05-20 15:35:19 -04:00
gorhill
3109d19e3c
code review: avoid compiling twice when list is fetched from remote location the 1st time 2017-05-20 15:32:03 -04:00
gorhill
da5f1c80d3
fix long latent issue exposed by acf7562b0f 2017-05-19 21:07:37 -04:00
gorhill
acf7562b0f
minor code review 2017-05-19 20:22:26 -04:00
gorhill
853f012802
fix #2631: regression introduced in 0232382695 2017-05-19 20:21:28 -04:00
gorhill
fcf43d972e
tentatively fix issue reported in #2612 re. FFox 24.8.1 2017-05-19 10:12:55 -04:00
gorhill
a222e23e49
fix #2630 2017-05-19 08:45:19 -04:00
gorhill
92f94c7765
minor formatting change 2017-05-18 18:55:03 -04:00
gorhill
5f63398af8
fix regression reported at http://forums.mozillazine.org/viewtopic.php?p=14748380#p14748380 2017-05-17 17:40:55 -04:00
gorhill
0464075dfc
code review: fix "logger enabled" code paths re. csp injection 2017-05-17 09:25:11 -04:00
gorhill
ca32a693df
fix regression re. badfilter option 2017-05-16 20:03:02 -04:00
gorhill
da71918112
code review "csp=" parsing: reject if "report-" directive present 2017-05-16 12:44:12 -04:00
gorhill
29b1e87a92
make key always numerical since only native Map() is used, as per #2612 2017-05-16 10:25:00 -04:00
gorhill
fc9764d51a
merge changes from master 2017-05-15 13:51:03 -04:00
gorhill
139d97179f
as per #2612, use native Set() in content scripts 2017-05-15 08:51:25 -04:00
gorhill
8f42232105
fix #2609 2017-05-14 12:01:56 -04:00
gorhill
892d9b504a
minor code review while at it 2017-05-13 08:57:30 -04:00
gorhill
f1805d8175
fix #2607 2017-05-13 08:51:56 -04:00
gorhill
721993b488
remove stray console.log 2017-05-12 11:49:00 -04:00
gorhill
0232382695
refactor static network filtering, add support for csp injection 2017-05-12 10:35:11 -04:00
gorhill
ea47cae003
fix #2599 2017-05-09 08:58:30 -04:00
gorhill
1c7c703d8b
fix #2594 2017-05-08 14:00:41 -04:00
gorhill
622d8f22fb
minor code review re. #2592 2017-05-08 12:12:56 -04:00
gorhill
22d74421e3
fix #2594 2017-05-08 11:49:48 -04:00
gorhill
fe61cdddee
fix #2585 2017-05-06 13:19:16 -04:00
gorhill
42afd0c3d0
code review: to/from punycode conversion only if needed 2017-05-03 19:43:09 -04:00
gorhill
9a3288a166
Revert "more cases re #2529". Reason: breaks links in dashboard on Firefox.
This reverts commit 3c0022d73a.
2017-04-29 10:07:18 -04:00
gorhill
3c0022d73a
more cases re #2529 2017-04-27 09:09:29 -04:00
gorhill
e50a05a8d0
minor code review 2017-04-26 12:50:05 -04:00
gorhill
669be3d45d
fine tune tooltips in 3rd-party lists pane 2017-04-26 12:21:01 -04:00
gorhill
3ce3ed2a0e
code review: simplify CSP injection code 2017-04-24 19:11:13 -04:00
gorhill
733917d176
fix #2526: better handle timeout conditions 2017-04-23 09:00:15 -04:00
gorhill
de3d99ed13
re. #2550: just implement the logic used to solve https://bugs.chromium.org/p/chromium/issues/detail?id=683314 2017-04-22 19:24:20 -04:00
gorhill
52332da623
improve solution to #2550: mind only the 22 confusable unicode characters 2017-04-22 14:26:17 -04:00
gorhill
0b3d1477f2
add basic mitigation to potential abuse of IDN 2017-04-22 12:57:56 -04:00
gorhill
582edd5e62
fix #2519 2017-04-08 10:40:38 -04:00
gorhill
510eba6bc4
fix #2477 2017-04-04 16:45:50 -04:00
gorhill
51ade9f043
code review re. https://github.com/uBlockOrigin/uAssets/issues/192#issuecomment-285904675 2017-03-21 08:23:21 -04:00
gorhill
2dcf7b7974
fix #2464 2017-03-20 15:54:41 -04:00
gorhill
64c92a96a3
fix https://github.com/nikrolls/uBlock-Edge/issues/64 2017-03-16 19:31:14 -04:00
gorhill
d7f751d42b
fix #2440 2017-03-16 19:14:25 -04:00
gorhill
53b0db3d25
fix #2447 2017-03-14 15:09:40 -04:00
gorhill
cf123b9264
fix #2448 2017-03-13 13:03:51 -04:00
gorhill
0d2c0a5ba3
fix #2450 2017-03-13 10:07:26 -04:00
gorhill
7a023077b3
performance work for pseudo-user styles code 2017-03-12 10:22:46 -04:00
gorhill
a4e20ae3ad
new filter option: "badfilter" (see https://github.com/uBlockOrigin/uAssets/issues/192) 2017-03-11 13:55:47 -05:00
gorhill
7e55ddf16b re. websocket: mind backward compatibility 2017-03-06 17:53:25 -05:00
gorhill
2213b005a0 forgot to add "ws://*/*"/"wss://*/*" to enable support for websocket type" 2017-03-06 17:34:46 -05:00
gorhill
5015826546 fix #2267 2017-03-05 12:54:47 -05: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
Nik Rolls
a121f2261d DOM Inspector: Fallback to .childNodes when .children not present (#2242)
When the browser does not support .children on the svgRoot element
(MS Edge, for example), filter childNodes for elements and use that
list instead.
2017-02-28 01:19:00 -05:00
gorhill
798e21de36 fix #2414 2017-02-27 16:29:36 -05:00
gorhill
1c4347d69d element picker improvement: to not discard class information when an id is available
Use class(es) whenever available instead of the id when selecting a
broad cosmetic filter (ctrl-click).
When asking for a broad cosmetic filter, using the id instead of
whatever available class(es) is limiting usefulness. The change
here address this.
Example of use case: open
<http://forums.mozillazine.org/viewtopic.php?f=38&t=3027325>.
Now how to remove all signature widgets from all posts?
Without the change here, this was not possible without opening the
browser's inspector, finding out and manually typing whatever class
is used to identify the signature's root element.
With this commit, ctrl-click will now use whatever class information
exist instead of the id.
2017-02-13 08:33:10 -05:00
gorhill
28084e1dc9 code review: marginal performance improvement 2017-02-12 15:53:40 -05:00
gorhill
1e1508cdd2 code review of dynamic URL filtering engine 2017-02-11 11:44:18 -05:00
gorhill
cbca48307c fix https://github.com/gorhill/uBlock/pull/2314#issuecomment-278716960 2017-02-09 13:33:32 -05:00
gorhill
7176ecb3e7 code review of fix to #2360 2017-02-07 08:05:39 -05:00
gorhill
a742f09dd4 fix #2360 2017-02-06 15:34:31 -05:00
gorhill
1bceca9cbb fix var name (https://github.com/el1t/uBlock-Safari/issues/25#issuecomment-277506943)) 2017-02-05 07:43:28 -05:00
gorhill
60605033bf fix #1871? ("blind" fix, need confirmation) 2017-02-03 08:12:26 -05:00
gorhill
0b4f31bd8a fix #2344 2017-01-27 13:44:52 -05:00
gorhill
aadf4a6427 fix #2340 2017-01-26 10:17:38 -05:00
gorhill
d79a781bea report blanket websocket blocking once only 2017-01-25 09:21:16 -05:00
gorhill
0e11d6e95e code review: fix rtl rendering of 3rd-party filters pane 2017-01-24 13:53:04 -05:00
gorhill
1a075bc673 code review: mobile-friendly changes 2017-01-24 08:23:52 -05:00
gorhill
97db7ba13e fix #2332 2017-01-23 17:16:37 -05:00
gorhill
96df129ddb code reivew: do not cache assets fetched for viewing purpose 2017-01-23 10:13:07 -05:00
gorhill
50800427b3 generic code review related to the new 3rd-party filter pane 2017-01-23 09:35:05 -05:00
gorhill
9309df4196 3rd-party filters pane revisited 2017-01-22 16:05:16 -05:00
gorhill
6e48c74e4e code review: auto-select new built-in asset if it matches locale (https://github.com/uBlockOrigin/uAssets/issues/268#issuecomment-274146120) 2017-01-20 15:17:11 -05:00
gorhill
71a1e8c694 code review of 3rd-party filters pane code 2017-01-20 08:40:19 -05:00
gorhill
29c7ba6a1a fix occasional sticky spinner 2017-01-19 14:03:08 -05:00
gorhill
82155c09b6 fix #2323 2017-01-19 08:35:08 -05:00
gorhill
726f0d6e1f remove stray change mistakenly added to last commit 2017-01-18 18:22:33 -05:00
gorhill
f4d2d6c891 forgot to adjust alises after modifying assts.json 2017-01-18 17:59:49 -05:00
gorhill
ff64a8340c code review: only built-in assets are candidates for removal when updating assets.json 2017-01-18 13:35:10 -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
69fc59305e fix https://github.com/uBlockOrigin/uAssets/issues/263#issuecomment-272615772 2017-01-18 13:01:13 -05:00
gorhill
54032e520b fix https://github.com/gorhill/uBO-Extra/issues/19 2017-01-17 18:18:28 -05:00
gorhill
3b41237e4b fix #2301 2017-01-12 08:45:46 -05:00
gorhill
2b1ab2234f re #2294: mind unicode in "domain=" option + update URL of Adguard lists 2017-01-09 09:53:57 -05:00
gorhill
9c4fbeb1fc fix #2294 2017-01-09 08:56:42 -05:00
gorhill
a303c7800e fix #2290 2017-01-08 14:36:08 -05:00
gorhill
a927725bd9 code review: one getter per instance is wasteful 2017-01-07 17:18:22 -05:00
gorhill
2691ac95b4 fix fullsize popup regression (https://github.com/gorhill/uBlock/issues/2153#issuecomment-271095067) 2017-01-07 13:02:33 -05:00
gorhill
6175a216b7 fix #2291 2017-01-07 10:50:53 -05:00
gorhill
bacf5021e0 performance work:
- refactor "domain=" option matcher in light of
  https://gorhill.github.io/obj-vs-set-vs-map/set-vs-regexp.html
- reuse existing instance of "domain=" matchers and filters
  wherever possible
2017-01-06 12:39:37 -05:00
gorhill
1a92fff641 fix https://github.com/uBlockOrigin/uAssets/issues/255 2017-01-02 10:50:03 -05:00
gorhill
38a5f5751b code review: be sure all invalid cosmetic filters are reported in logger 2016-12-30 10:41:16 -05:00
gorhill
c6dbdbd23b code review of procedural cosmetic filters + better validate :style option (#2278) 2016-12-30 10:32:17 -05:00
gorhill
e5f435c3b1 complete fix to #2274: detect device rotation 2016-12-29 14:43:20 -05:00
gorhill
e09b702470 fix #2274 (hopefully) 2016-12-28 23:39:15 -05:00
gorhill
5aa122e856 allow lone css selector in :if/:if-not operators 2016-12-27 12:32:52 -05:00
gorhill
7558fedc38 fix typo in new :if/:if-not procedural operators 2016-12-26 12:37:43 -05:00
gorhill
6e458dca5c fix #2264 2016-12-26 11:35:37 -05:00
gorhill
251bbe0f43 use plain E instead of Greek epsilon (for some reason does not render fine in FFox) 2016-12-25 17:05:30 -05:00
gorhill
d4155bf9e0 new revision for dev build + force lists to be recompiled 2016-12-25 17:00:24 -05:00
gorhill
73a69711f2 add chainable and recursive cosmetic procedural filters 2016-12-25 16:56:39 -05:00
gorhill
2f01fcda54 fix #2256 2016-12-21 11:44:03 -05:00
gorhill
cec17097a4 fix #2249 2016-12-19 00:30:14 -05:00
gorhill
c39adacc50 better abstraction of user styles 2016-12-16 16:25:36 -05:00
gorhill
94637ee4ff fix https://github.com/nikrolls/uBlock-Edge/issues/30 2016-12-15 10:47:32 -05:00
gorhill
c3c92f85ff fix #2225 2016-12-07 20:18:58 -05:00
gorhill
d1ac1286b7 addendum to fix for #2206: auto scroll to the end of user filters text box 2016-12-07 09:43:11 -05:00
gorhill
4837b15895 fix #2206 2016-12-03 14:03:28 -05:00
gorhill
235d1266e8 fix #2210 2016-12-03 09:21:31 -05:00
gorhill
02a79ea9fc avoid CPU-costly Date.toLocale(Date|Time)String() in logger page 2016-12-02 12:17:07 -05:00
gorhill
98d2bbada7 revise matches-css implementation as per #1930 and https://github.com/uBlockOrigin/uAssets/issues/212 2016-12-01 11:55:05 -05:00
gorhill
08867e64b6 remove unused files 2016-11-23 16:43:26 -05:00
gorhill
02f757e995 scriptlet arguments: allow any character, escape properly 2016-11-17 09:25:37 -05:00
gorhill
73c8a96c48 workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1317173 2016-11-16 16:08:03 -05:00
gorhill
8c352e1fac code review: do not test for ip address each time we broaden hostname 2016-11-12 13:42:36 -05:00
gorhill
cbf3dc9a0d maybe fix #2147 2016-11-12 13:38:41 -05:00
gorhill
54508db9c4 code review re #2132 2016-11-09 09:47:50 -05:00
gorhill
54e8761ce6 code review re #2132 2016-11-08 16:40:15 -05:00
gorhill
6f512f39fb code review re #2132 2016-11-08 16:31:04 -05:00
gorhill
d913eea1f6 fix #2132 + various minor code review 2016-11-08 15:53:08 -05:00
gorhill
d62059ccc7 fix #2103 2016-11-08 07:13:26 -05:00
gorhill
4d0eaf3b3c code review: various minor changes 2016-11-07 14:53:04 -05:00
gorhill
a92decd641 fix #1578: regex as whitelist directive 2016-11-06 16:51:19 -05:00
gorhill
ee4fc2aed6 code review re advanced settings + added popupFontSize 2016-11-06 16:27:21 -05:00
gorhill
bc379a123e fix #1493 2016-11-06 10:49:02 -05:00
gorhill
446d7fad2e fix #2010, #2086 2016-11-05 14:48:42 -04: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
Nik Rolls
be8e514464 Prevent possible error when a node has no children (#2108)
Compat with Edge; SVG nodes don't have a `children` property and therefore this throws an error whenever an SVG is added, removed or moved in the DOM.
2016-10-30 16:04:53 -04:00
gorhill
015d38dc8c fix #1691 (regression from a7fe367eec) 2016-10-30 15:54:05 -04:00
gorhill
3f8c7b915c fix #1668 2016-10-30 15:19:58 -04:00
gorhill
efdf43f1d5 FF webext does not support getBytesInUse() 2016-10-30 13:06:23 -04:00
gorhill
b2193a2b54 probably fix #2053 2016-10-29 11:15:04 -04:00
gorhill
50889da226 code review re. 3628de7a9d 2016-10-29 10:28:50 -04:00
gorhill
b55447635e fix #2106 (regression from #1669) 2016-10-29 09:55:09 -04:00
gorhill
de3054b485 code review re. 3628de7a9d 2016-10-29 08:42:29 -04:00
gorhill
3628de7a9d necessary changes for https://github.com/nikrolls/uBlock-Edge/pull/22 2016-10-28 08:40:38 -04:00
gorhill
de587335bd elemhide is (and has always been) really generichide 2016-10-27 08:33:19 -04:00
gorhill
6062ec9b23 fix #2100 2016-10-26 12:40:05 -04:00
gorhill
f6c46ab582 fix #2099 2016-10-26 08:59:15 -04:00
gorhill
d827accdf0 fix FF add-on validator warning 2016-10-25 10:20:29 -04:00
gorhill
e01a130bc5 changes required to use chromium platform code for webext platform code 2016-10-19 10:20:26 -04:00
gorhill
46fb194904 fix #2084 2016-10-18 12:33:50 -04:00
gorhill
70ab1a26de code review re. #1884, as per feedback at https://bugs.chromium.org/p/chromium/issues/detail?id=637577#c15 2016-10-17 09:37:59 -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
5a50708961 (webext) support for vAPI.adminStorage is optional 2016-10-15 09:32:33 -04:00
gorhill
cbefeb923c fix #1884 2016-10-14 10:06:34 -04:00
gorhill
da163bbe4b fix #1641 2016-10-13 13:25:57 -04:00
gorhill
b105010f34 minor code review 2016-10-11 11:53:28 -04:00
gorhill
0454ad1b1f re. #1070: rewrite redirect engine to use ES6 Sets/Maps 2016-10-10 09:01:05 -04:00
gorhill
cd81f866b9 code review: benefit from ES6 Set() in content script
fall back on legacy browser-specific polyfill code if required.
2016-10-09 11:09:25 -04:00
gorhill
a1fa4d0fe9 fix #2060 2016-10-08 15:14:24 -04:00
gorhill
3ff3ae7d70 fix #2053 2016-10-08 10:15:31 -04:00
gorhill
b20b43e351 fix #2011: improve heuristic on when to give up on DOM surveying 2016-10-06 10:49:46 -04:00
gorhill
751e34f3ce fix #2050 2016-10-05 18:18:32 -04:00
gorhill
c956b93369 fix #1669 2016-10-03 23:41:23 -04:00
gorhill
6557024434 code review re. #1772: fixed previewing of :has() filters 2016-10-01 13:34:20 -04:00
gorhill
c084853d9a fix #1772: ability to preview procedural cosmetic filters 2016-10-01 12:34:25 -04:00
gorhill
7984c7562c fix #2033 2016-09-27 08:31:12 -04:00
gorhill
42938c9b63 code review re. #1954: also support implicit entity-based scriptlets 2016-09-26 13:45:55 -04:00
gorhill
c538b260de import fix for #2025, new revision for dev build 2016-09-24 17:35:53 -04:00
gorhill
1a29be62fb fix #2025 2016-09-24 17:19:52 -04:00
gorhill
21f3dc83ec code review re. #1912 2016-09-24 14:42:31 -04:00
gorhill
95ec573141 fix #2014 2016-09-24 14:36:08 -04:00
gorhill
0a15a95ad9 fix #1912 2016-09-22 12:18:01 -04:00
gorhill
ef0a7ed5cb code review re. #1997: be sure the setting is persisted 2016-09-16 19:12:16 -04:00
gorhill
269c35a04a fix #1997 2016-09-16 17:41:17 -04:00
gorhill
a39bd8a1c0 fix regression from a7fe367eec: see https://github.com/uBlockOrigin/uAssets/issues/101#issuecomment-246777505 2016-09-13 15:25:22 -04:00
gorhill
0870aea2eb code review re. #1735 2016-09-13 11:56:13 -04:00
gorhill
08dd67b854 fix #1735 2016-09-13 11:25:24 -04:00
gorhill
aac6c091c2 fix regression from a7fe367eec: see https://github.com/uBlockOrigin/uAssets/issues/138#issuecomment-246666723 2016-09-13 09:03:00 -04:00
gorhill
a7fe367eec refactor where appropriate to make use of ES6 Set/Map (#1070)
At the same time, the following issues were fixed:
- #1954: automatically lookup site-specific scriptlets
- https://github.com/uBlockOrigin/uAssets/issues/23
2016-09-12 10:22:25 -04:00
Mathias Rangel Wulff
b8dc685d01 Identify Map correctly (#1972)
Using Google bigquery I found that your code was comparing the result of `typeof` with a variable named `undefined`.

As typeof returns a string it should compare to a string with the content `'undefined'`
2016-09-09 09:54:41 -04:00
gorhill
276d51c4f0 code review: this can catch more cases (re d07baef742) 2016-09-05 18:56:35 -04:00
gorhill
d07baef742 broaden detection of websocket-specific filters (see https://github.com/gorhill/uBlock/issues/1943#issuecomment-243188946) 2016-09-05 18:45:10 -04:00
gorhill
4851bc4f34 fix #1955: discard cosmetic filters with pseudo-classes 2016-09-01 15:54:01 -04:00
gorhill
33234fdd8b fix #1952 2016-08-31 17:50:49 -04:00
gorhill
d4ce29397a code review re. 60f60c2c97 2016-08-31 05:19:16 -04:00
gorhill
35b46cab4c code review re. 60f60c2c97 2016-08-30 22:45:24 -04:00
gorhill
83e66b36f1 patch or convert filters meant to target websocket network requests 2016-08-30 19:57:25 -04:00
gorhill
60f60c2c97 fix spurious strict blocking when other is used (https://github.com/uBlockOrigin/uAssets/issues/123#issuecomment-243602934) 2016-08-30 19:55:41 -04:00
gorhill
c3582e1aca minor code review: render domain= option as the last one 2016-08-30 19:54:42 -04:00
gorhill
0db340450e code review re. #1943 2016-08-29 08:10:18 -04:00
gorhill
bbc00ebb81 fix #1943 2016-08-29 07:55:13 -04:00
gorhill
3a459bbc5e fix https://github.com/gorhill/uBlock/issues/1936#issuecomment-242964554 2016-08-28 06:40:41 -04:00
gorhill
8586aee848 fix #1936: ability to foil WebSocket using a CSP directive 2016-08-27 11:08:56 -04:00
gorhill
5a0f651b28 possibly work around #1713 -- until real underlying cause is identified 2016-08-25 15:47:18 -04:00
Cqoicebordel
42ce8e7e5d Add vivaldi-scheme as a default in Whitelist (#1785)
Vivaldi is another browser based on Blink, that supports uBlock. Adding its scheme in the default whitelisting would prevent any issue with it.
2016-08-24 09:05:36 -04:00
gorhill
5cbe583c0a fix #1929 2016-08-23 10:33:28 -04:00
gorhill
e6d1a1f896 fix #1927 (revised commit msg due to missing quote) 2016-08-22 19:14:37 -04:00
gorhill
6000adb751 help generate better suggested cosmetic filters for iframes 2016-08-21 09:49:11 -04:00
gorhill
17724b2fec code review re. matches-css: to support pseudo class :after 2016-08-19 08:46:39 -04:00
gorhill
46a87a649b fix #1909 2016-08-18 11:54:38 -04:00
gorhill
dbdc81aaf5 fix #1903 2016-08-16 12:12:35 -04:00
gorhill
2725479709 better fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1232354, as pointed out in comments 2016-08-15 22:50:24 -04:00
gorhill
a76703b6ad convenience fix for #1901 2016-08-15 13:10:32 -04:00
gorhill
d82a7e1ece fix #1897 2016-08-15 07:52:50 -04:00
gorhill
48416bebee code review: minor fine tuning 2016-08-14 08:51:52 -04:00
gorhill
fb7bd0cc1d fix #1893 2016-08-13 21:45:01 -04:00
gorhill
e9157bafb7 fix #1892, #1891 2016-08-13 16:42:58 -04:00
gorhill
839fed43ae minor code review 2016-08-12 11:31:13 -04:00
gorhill
6fd0bb4291 more refactoring of content script: better modularization of various components 2016-08-12 08:55:35 -04:00
gorhill
8d35a05c05 code review re. 6fab1fe585 2016-08-08 19:41:53 -04:00
gorhill
6fab1fe585 code review domCollapser: avoid duplicates -- helps for https://bugzilla.mozilla.org/show_bug.cgi?id=1232354 2016-08-08 09:59:57 -04:00
gorhill
458b9758ef minor code review 2016-08-06 23:29:58 -04:00
gorhill
5d572f54de fix #1873 2016-08-06 21:07:05 -04:00
gorhill
372f4b4c86 minor code review 2016-08-06 12:09:18 -04:00
gorhill
6bd356dd2c fix #1856 2016-08-06 12:05:01 -04:00
gorhill
16acbca1fa minor code review re. https://bugzilla.mozilla.org/show_bug.cgi?id=1232354 2016-08-06 10:20:11 -04:00
gorhill
6a8be4bdeb import fix from 1.8.2 2016-08-05 14:12:31 -04:00
gorhill
cc6f80610f fix regression: exception thrown when creating filter thru element picker 2016-08-05 13:51:56 -04:00
gorhill
a5a9e0ce7c replace csstext() with more flexible/efficient matches-css() 2016-08-03 09:20:55 -04:00
gorhill
1ca285f8bd add new cosmetic operator csstext() 2016-08-03 08:06:51 -04:00
gorhill
0165d2e066 minor code review 2016-07-31 18:43:17 -04:00
gorhill
788ff0a21f code review: do not delay injection of specific cosmetic filters 2016-07-26 08:21:03 -04:00
gorhill
4da4709ed5 hopefully fix #1782: treat data: URI as 1st-party resources 2016-07-25 08:18:17 -04:00
gorhill
41b20cac3f prevent use of url() in injected styles 2016-07-18 15:43:03 -04:00
gorhill
6895e6c7f9 minor code reivew: no need to scope to root for re-styling filters 2016-07-16 18:15:42 -04:00
gorhill
bc62af8bf5 support redirection of network requests of type "media" 2016-07-14 13:31:00 -04:00
gorhill
9e7fbb857b cosmetic filtering: stop surveying and/or filtering after too many consecutive misses 2016-07-12 13:29:30 -04:00
gorhill
dce5487fc0 i need a vacation 2016-07-09 21:49:28 -04:00
gorhill
7e4e69fd84 returning self.Set was not a good idea 2016-07-09 21:40:07 -04:00
gorhill
d12ae9277c fix silly bug from last commit (breaking Pale Moon) 2016-07-09 20:00:18 -04:00
gorhill
02e6b088ef further refactoring + performance: skip surveying DOM after too many empty resultset 2016-07-09 19:21:46 -04:00
gorhill
ed315d0a3b fix #1786 2016-07-07 16:42:01 -04:00
gorhill
b9d1cd54bc fix #1779: do not give up scanning the list if first match turns out negative 2016-07-04 19:42:34 -04:00
gorhill
9d5b03ce66 fix #1774 2016-07-03 00:13:17 -04:00
gorhill
682e0c8916 fix #1773 2016-07-02 11:07:12 -04:00
gorhill
0e244d9822 fix #1765 2016-07-01 15:15:58 -04:00
gorhill
973d3e79c1 minor code review 2016-07-01 14:33:43 -04:00
gorhill
9d8499b4b1 fix #1770 2016-07-01 12:54:10 -04:00
gorhill
7f9c01d38f fix https://github.com/gorhill/uBlock/issues/769#issuecomment-229873048 and more completely #762 + dom inspector regressions 2016-07-01 08:09:48 -04:00
gorhill
eabeedcd04 code review: use already available collections where possible 2016-07-01 06:44:02 -04:00
gorhill
d092f02573 fix broken short-term per-page cache 2016-07-01 00:16:10 -04:00
gorhill
8374799c7d various minor code review 2016-06-30 22:03:29 -04:00
gorhill
a3f6a4186a instrumenting content scripts to make for easy profiling when needed 2016-06-30 16:10:38 -04:00
gorhill
e6c38257be fix broken xpath operator + various code review 2016-06-30 10:23:38 -04:00
gorhill
87d0cce9b2 remove stray comma separator in injected CSS declarations 2016-06-29 18:12:21 -04:00
gorhill
3752ac4880 fix #781: support for explicit style properties 2016-06-29 17:07:33 -04:00
gorhill
a5f7cbf969 new content script code: fix regression 2016-06-29 09:33:04 -04:00
gorhill
e99d993a4c new content script code: perf work re. high-high generics
Now splitting high-high generics in two subgroups: one group for
simple selectors, another group for complex selectors. Turns out
the great majority of high-high generics are simple selectors, and
simple selectors can be applied incrementally with DOM changes, as
opposed to complex selectors. This brings in a significant perf.
improvement in the processing of high-high generics (previously,
all high-high generic selectors were processed as one big complex
selector).
2016-06-28 22:01:15 -04:00
gorhill
b65699aef2 new content script code: code review, fine tuning perf 2016-06-28 19:45:11 -04:00
gorhill
2d68c8ee6c new content script code: code review, fine tuning perf 2016-06-28 09:06:14 -04:00
gorhill
6c513629bf refactor content script code + add support for new :has & :xpath filters
Aside extending cosmetic filtering abilities, I expect this will
also take care of some long standing issues (I will have to find them
and mark them as "resolved" by this commit, as time allow).
2016-06-27 19:09:04 -04:00
gorhill
72fdce64f0 fix issue reported in comment https://github.com/gorhill/uBlock/issues/1669#issuecomment-224822448 2016-06-27 14:11:36 -04:00
gorhill
fffa919d03 fix #1757: fixed typo in comment 2016-06-26 21:16:54 -04:00
gorhill
c14277f5aa fix #1757 2016-06-26 21:15:18 -04:00
gorhill
2292e75f9a fix #1733 2016-06-19 13:26:02 -04:00
gorhill
367e6ee8de fix #1726 2016-06-16 19:10:07 -04:00
gorhill
1cd24380ce more sensible fix to #1725 2016-06-16 10:55:49 -04:00
gorhill
a33dc4f8e2 fix #1725 (assuming the issue was uBO not properly blocking data: images) 2016-06-16 09:46:18 -04:00
gorhill
c0515c20a4 set a limit on longth of suggested network filters (see https://github.com/gorhill/uBlock/issues/1725#issuecomment-226479197) 2016-06-16 09:15:49 -04:00
gorhill
a5ecf2ed68 fix #1691 2016-06-06 09:11:27 -04:00
gorhill
520c58102e fix typo in comment 2016-05-28 09:19:35 -04:00
gorhill
5ee427d0f8 fix #1662 2016-05-28 09:18:36 -04:00
gorhill
fd5f07350c fix https://github.com/gorhill/uBlock/issues/1660 2016-05-26 08:49:59 -04:00
gorhill
2ea36d6a7f fix https://github.com/uBlockOrigin/uAssets/issues/50 2016-05-26 08:34:28 -04:00
gorhill
c5fd181bff fix #1629 2016-05-13 11:10:09 -04:00
gorhill
b61fb331de fix the undue discarding of logger events in edge cases 2016-05-07 11:45:26 -04:00
gorhill
47b3e26942 fix #1607 2016-05-03 08:22:48 -04:00
gorhill
71d2eed225 this fixes #1598 2016-04-28 11:28:08 -04:00
gorhill
f8e266c2b0 this fixes #1597 2016-04-27 10:08:32 -04:00
gorhill
62a4cafe2f code review re. #1202: mind style priority (repro case at #1575) 2016-04-19 09:15:06 -04:00
gorhill
051cc685ce element picker: code review 2016-04-17 10:15:01 -04:00
gorhill
c68ff1487a element picker: more sensible implementation ctrl-clicking a filter candidate 2016-04-16 13:21:48 -04:00
gorhill
e475e1ece8 this fixes #650; code reviewed changes re. #1202, #1545; fine tuning picker UI 2016-04-16 11:20:01 -04:00
gorhill
def2b7cbff this fixes #1202, #1545, other improvements 2016-04-15 12:27:53 -04:00
gorhill
63d27b1d25 this fixes #1559 2016-04-12 08:48:24 -04:00
gorhill
13f746a2ca this fixes #1538 2016-04-05 09:59:23 -04:00
gorhill
cad3c5f5cb update packaging scripts for https://github.com/uBlockOrigin/uAssets repo 2016-04-03 13:07:46 -04:00
gorhill
ebcafc8db2 this fixes #1529: harden element picker styles against external changes 2016-04-03 08:34:28 -04:00
gorhill
d286eff4ba spin-off filter lists into their own dedicated project 2016-04-01 20:58:35 -04:00
gorhill
1794c25145 code review: do not hold onto log entries when logger become unused 2016-03-30 08:37:41 -04:00
gorhill
62b087ef88 this fixes #1511 (point 2) 2016-03-28 09:31:53 -04:00
gorhill
6095a1db0f AMO review: keep dev console clean 2016-03-27 09:24:57 -04:00
gorhill
95d0ffafb7 this fixes #870 2016-03-22 10:19:41 -04:00
gorhill
84093bcd0d this addresses some of https://forums.lanik.us/viewtopic.php?f=91&t=29253 2016-03-21 10:33:40 -04:00
gorhill
36e681e39b this fixes #1484 2016-03-17 13:56:21 -04:00
gorhill
18937849c3 code review as per feedback from last commit: 99a3d96310 (commitcomment-16748337) 2016-03-17 12:16:56 -04:00
gorhill
99a3d96310 this addresses https://github.com/ABPIsrael/EasyListHebrew/issues/89 2016-03-17 10:32:11 -04:00
gorhill
2f037e6f72 #1477: put back mistakenly removed block of code 2016-03-16 12:11:37 -04:00
gorhill
74905aa2a5 this fixes #370, #1477 2016-03-15 11:18:34 -04:00
gorhill
4650b8778a this fixes #1471 2016-03-12 10:48:31 -05:00
gorhill
5a2e9bc1a7 this fixes #1468 2016-03-12 01:25:02 -05:00
gorhill
eb8c17d55c this takes care of #1443 2016-03-08 16:35:06 -05:00
gorhill
e5c2eff2d0 code review to fix "javascript.options.strict" warnings in browser console of Firefox 2016-03-07 09:55:04 -05:00
gorhill
c96d90b048 this fixes #883 2016-03-06 19:16:46 -05:00
gorhill
c91c91f2dc this fixes #1448 2016-03-05 23:38:23 -05:00
gorhill
037bdca6d6 commented code for the addon reviewers 2016-03-05 14:59:01 -05:00
gorhill
324c26b20c code review: cleanup cosmetic filtering engine on shutdown 2016-03-04 20:25:35 -05:00
gorhill
5a7ab32d24 cosmetic filtering: discard new ABP's CSS property filters (until implemented) 2016-03-02 08:10:59 -05:00
gorhill
b451d1ce06 minor code review 2016-03-01 08:32:47 -05:00
gorhill
02014f915e revert fix for #1028: can't be fixed without bad side effects 2016-02-27 12:04:28 -05:00
gorhill
ff0ccbd803 this fixes #1339, #1028, #1010: non-broad popup filters will also be used to block popunders 2016-02-26 09:48:43 -05:00
gorhill
abb6d1a610 this fixes #1403 2016-02-22 15:54:07 -05:00
gorhill
04d59367b0 minor code review 2016-02-17 10:04:55 -05:00
gorhill
0adae9fb65 this fixes #1395 2016-02-17 09:28:20 -05:00
gorhill
939b3a2d83 this fixes #1392 2016-02-16 13:15:30 -05:00
gorhill
d42f72caac #1378: oops -- this is the proper fix 2016-02-14 11:02:43 -05:00
gorhill
95d6240b21 this fixes #1378: there may be no "clicked URL" (regression) 2016-02-14 10:55:23 -05:00
gorhill
f044854068 this fixes #1359 2016-02-09 18:53:36 -05:00
gorhill
c10f74ccd5 make it easier to get screenshots of fully expanded popup panel 2016-02-06 09:50:02 -05:00
gorhill
a89f908a16 this fixes #1341 2016-02-04 08:21:59 -05:00
gorhill
0eb0efa79c wontfix #1330, still code reviewed while at it 2016-02-03 19:15:28 -05:00
gorhill
e4f35e9f3d Revert "this fixes dm" -- I meant to commit only changes to assets
This reverts commit 5b5c661e0d.
2016-02-03 18:47:30 -05:00
gorhill
5b5c661e0d this fixes dm 2016-02-03 18:37:56 -05:00
gorhill
c7f1027ab9 this fixes #1321 2016-01-30 19:16:30 -05:00
gorhill
8b721f654c removed commented out code
This addresses debian package warning that a line is longer than 512 chars:
https://lintian.debian.org/maintainer/pkg-mozext-maintainers@lists.alioth.debian.org.html#ublock-origin
2016-01-28 15:09:24 -05:00
gorhill
2d502076d6 code review: disregard case-matching in redirection filters 2016-01-27 12:42:46 -05:00
gorhill
cf77bc2dae 1st part of fix for #1293: 2nd part after 6 weeks following release of 1.6.0 2016-01-25 00:54:54 -05:00
gorhill
3e526476d7 block-by-size: some sites use outline, this hides our placeholders 2016-01-24 19:57:57 -05:00
gorhill
606522cd62 minor: removed spurious trailing space 2016-01-24 16:09:47 -05:00
gorhill
8b5108db93 code review: fixed broken sort in domainCachePrune().
A negative side-effect of not sorting properly the entries was to
cause raw filter lists to linger in memory due to v8's sliced-
string implementation, which caused the parent string (a whole
filter list possibly) to be kept around forever even though it was
no longer used by uBO (raw filter lists are compiled then discarded).
2016-01-24 16:03:08 -05:00
gorhill
1f5b9b0e13 this fixes #1285 2016-01-24 10:15:32 -05:00
gorhill
58838ce4c5 blocked-image-by-size: getComputedStyle() on Pale Moon can return null 2016-01-23 16:57:20 -05:00
gorhill
7a0b4356ad blocked-image-by-size: be sure placeholder is visible in interactive mode 2016-01-23 16:42:23 -05:00
gorhill
7a49a7f56f this addresses #1275: will complete the fix 4-6 weeks after releasing 1.6.0 2016-01-22 20:01:07 -05:00
gorhill
1f345b585f this should fix #1276 2016-01-22 11:13:29 -05:00
gorhill
dcb7ba9f7f code review redirection engine: minimize number of entries in inner loop 2016-01-21 18:30:06 -05:00
gorhill
3eff3c62b0 Re. #1250: propagate injected scripts to local iframes 2016-01-21 09:33:54 -05:00
gorhill
cdfdb570bb minor code review: pass a string, not an array 2016-01-21 09:04:04 -05:00
gorhill
4bb9ef59ba this fixes #1258 2016-01-19 15:04:44 -05:00
gorhill
a7a840500b this fixes https://github.com/gorhill/uBlock/issues/1163#issuecomment-172390974 2016-01-18 00:26:29 -05:00
gorhill
89148351e8 #1163: this implements "block elements by size" 2016-01-17 13:30:43 -05:00
gorhill
08d7ce96aa this fixes #1246 2016-01-16 20:21:17 -05:00
gorhill
da2902524b code review: avoid forEach 2016-01-15 09:21:33 -05:00
gorhill
fbafeb03ae #1171: use << for redirection events 2016-01-15 09:17:59 -05:00
gorhill
7722f25603 #1171: use >> to mark redirection events 2016-01-11 08:28:07 -05:00
gorhill
778cd739ef this fixes #1206 2016-01-11 01:04:51 -05:00
gorhill
50cee5dfe5 this fixes #790 2016-01-08 11:08:53 -05:00
gorhill
ddd77985ef remove block-then-redirect 1st-party list.
redirection is now used for all kind of purpose: privacy, to counter
anti-blocker mechanisms, etc.
2016-01-07 18:09:06 -05:00
gorhill
91c2763259 this fixes #1171 2016-01-07 17:30:56 -05:00
gorhill
0b0b88684a this fixes #838 2016-01-05 10:08:28 -05:00
gorhill
7fbde83a28 this fixes #912 2016-01-04 10:48:28 -05:00
gorhill
16a128dff0 this fixes #747 2016-01-03 13:58:25 -05:00
gorhill
b63f55b7af this fixes #1121: allow rule will no longer affect cosmetic filtering.
the per-site cosmetic filtering switch must be used instead.
2015-12-30 17:35:32 -05:00
gorhill
a944873b83 code review: convert static filtering's tokenizer to a global utility 2015-12-29 11:34:41 -05:00
gorhill
a16ba964df this fixes #1127 (regression bug) 2015-12-27 15:41:48 -05:00
gorhill
a7901cd97e this fixes entity-based script tag filters, as reported in https://github.com/IDKwhattoputhere 2015-12-27 12:34:40 -05:00
gorhill
1365d150db lower parser restrictions for redirect filters 2015-12-23 18:36:57 -05:00
gorhill
3956605ee0 general code review re. most recent commits 2015-12-23 11:02:36 -05:00
gorhill
4a000459ab redirect-resources.txt to be used for more than just redirection 2015-12-23 07:23:09 -05:00
gorhill
1fe5a16c32 this fixes #1100: ability to inject directly a resource from redirection library 2015-12-22 16:32:09 -05:00
gorhill
520e251112 this fixes #1093 2015-12-22 11:17:32 -05:00
gorhill
13969ed937 minor code review 2015-12-19 17:58:26 -05:00
gorhill
ce3178cb16 this fixes good Adguard filters rejected due to empty keyword 2015-12-18 12:19:13 -05:00
gorhill
9b1db96254 this fixes subscribe links not working if URL has a fragment identifier 2015-12-18 12:18:34 -05:00