1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-11-17 16:02:33 +01:00
Commit Graph

347 Commits

Author SHA1 Message Date
Raymond Hill
3621792f16
Rework/remove remnant of code dependent on localStorage
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/899
2020-02-23 12:18:45 -05:00
Raymond Hill
4509483c7e
Set tooltip to cname alias in popup panel
The toolip of a canonical name entry (blue)
in the popup panel will provide the alias
hostname related to the canonical hostname
in order to help with rule-making decisions.
2020-02-06 10:18:15 -05:00
Raymond Hill
d0738c0835
Visually distinguish canonical names in popup panel
Further fine-tuning support for canonical names.

Aliased canonical names will be rendered blue
in the dynamic filtering pane of the popup panel.
2019-12-31 16:36:51 -05:00
Raymond Hill
56cc2b1256
Support expanding/collpasing of specific domains
This is related to the list of domains/subdomains in
the dynamic filtering pane of the popup panel.

Related issue:
- https://github.com/gorhill/uBlock/issues/284

Clicking on the empty space of a row will toggle
the visibility of the subdomains.

Additionally, the root context will always be visible
regardless of the expand/collspase state, along with
a visual indicator that a specific domain or subdomain
is the actual root context.  (the root context is the
hostname in which local rules are created).
2019-12-30 09:54:11 -05:00
Raymond Hill
d90c8486aa
Fix reporting of csp-blocked resources in logger
Related feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/552#issuecomment-561888900

Regression from:
- https://github.com/gorhill/uBlock/commit/7971b223855d
2019-12-04 19:23:57 -05:00
Raymond Hill
0356e91ccb
Remove no longer used property 2019-12-01 09:01:20 -05:00
Raymond Hill
085a8cdbcc
Fine tune cosmetic filtering badge-related code
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/756

As per feedback:
- https://github.com/uBlockOrigin/uBlock-issues/issues/756#issuecomment-549128106
2019-11-03 09:38:36 -05:00
Raymond Hill
571db71318
Fine tune cosmetic filtering badge-related code
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/756

As per various feedbacks:

Added an advanced setting to keep the original behavior,
which can be potentially costly CPU-wise on some sites:

    popupCosmeticFilterBadgeSlow

Default to `false`. Set to `true` to restore original
method of surveying the number of elements hidden as
a result of applying cosmetic filtering.

As suggested by <https://github.com/gwarser>, skip
descendant of nodes which have been found to be a
match in order to potentially increase the number
of nodes which can be surveyed in the alloted time.
2019-11-02 19:03:07 -04:00
Raymond Hill
6d935c8925
Bail out when counting hidden elements is too expensive
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/756

When trying the number of hidden elements as a result of
cosmetic filtering for popup panel badge purpose, the
code will bail out if this takes too long, and in such
case the badge will be set to `?`, meaning the number
of hidden elements is undetermined.
2019-11-02 09:16:23 -04:00
Raymond Hill
c090d2fde4
Count hidden elements on-demand only in popup panel
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/756

The badge value for the no-cosmetic-filtering
switch will be evaluated on-demand only, when
the user hover over the switch with the mouse
cursor.

For touch screen displays, a tap on the switch
will cause the badge to be rendered if not
already done, otherwise this will toggle the
switch as usual.
2019-11-01 12:32:34 -04:00
Raymond Hill
d8975ee580
Improve efficiency of per-site switches badge code
Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/756

This is the code used to find out the count values
displayed as badge on the cosmetic filtering and
scripting per-site switches in the popup panel.

The issue is that document.querySelector*() -- used to
find out the number of hidden elements -- is unduly
expensive on large DOM.

The changes in this commit have focused on avoiding the
use of document.querySelector*() as much as possible.

Also, the results are cached for reuse unless DOM
mutations are detected.
2019-10-31 11:07:11 -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
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
7912e919b6
Code review of session filters commit
Related commits:
- 46d36cb0b0
- 59c9a34d34
2019-09-26 12:40:56 -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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
610ca2684b
Remove (broken) benchmark pane 2018-12-21 12:01:24 -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
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
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
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
6d9382a501
fix https://github.com/uBlockOrigin/uBlock-issues/issues/77 2018-10-29 09:56:51 -03:00
Raymond Hill
1d108082b7
minor code review re. 8b5a7aa398 2018-09-07 10:52:10 -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
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
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
38aabc937a
reorganize cache storage compression; workaround fix for #2812 2018-08-11 10:39:43 -04:00
Raymond Hill
7ae68c8d7d
fix https://github.com/uBlockOrigin/uBlock-issues/issues/144 2018-07-24 09:17:18 -04:00
Raymond Hill
51a4e9ccf4
fix #2763 2018-07-22 10:47:02 -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
ef455deb0a
fix https://github.com/uBlockOrigin/uBlock-issues/issues/106 2018-07-18 18:00:55 -04:00
Raymond Hill
211048396f
fix https://github.com/uBlockOrigin/uBlock-issues/issues/102 2018-07-04 15:03:09 -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
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
21670a031f
use name in manifest for "About" pane 2018-05-17 12:45:57 -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
Raymond Hill
7e5661383a
code review to further lower overhead of updating toolbar icon 2018-05-08 09:43:25 -04:00
Raymond Hill
427d0fd0ff
fix https://github.com/uBlockOrigin/uBlock-issues/issues/21 2018-04-24 17:12:41 -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
9715d1e8b9
make use of CodeMirror for Whitelist pane 2018-03-12 08:28:07 -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
2c901588c7
fix #3546, #3428 2018-02-26 13:59:16 -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
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
36b1eac88e
fix #3425 (regression from 6cdb20df) 2018-01-10 17:59:07 -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
b7155a0e0f
fix #3408 2018-01-07 17:53:33 -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
04d84cf92a
fix #3397 2018-01-03 13:59:38 -05:00
Raymond Hill
1cd61063fa
fix #3380 2017-12-30 17:38:07 -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
dec0b80a72
fix #2877 2017-12-17 08:09:47 -05:00
Raymond Hill
36956cbc7a
remove obsolete resource caching code 2017-12-14 16:42:54 -05:00
gorhill
48f65f11d1
fix #2963 2017-11-12 07:41:55 -05:00
gorhill
44ce44aa42
code review: early injection of lookred up generic cosmetic filters when possible 2017-10-26 06:18:03 -04:00
gorhill
6112a68faf
fix #2984 2017-10-21 13:43:46 -04:00
gorhill
2660bee0d2
fix #2919 2017-09-05 19:49:48 -04:00
gorhill
eb3519b075
fix #2839 2017-08-03 10:18:05 -04:00
gorhill
39aeaa12a7
new feature: element zapper 2017-05-27 11:51:24 -04:00
gorhill
fcf43d972e
tentatively fix issue reported in #2612 re. FFox 24.8.1 2017-05-19 10:12:55 -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
0232382695
refactor static network filtering, add support for csp injection 2017-05-12 10:35:11 -04:00
gorhill
510eba6bc4
fix #2477 2017-04-04 16:45:50 -04:00
gorhill
53b0db3d25
fix #2447 2017-03-14 15:09:40 -04:00
gorhill
cbca48307c fix https://github.com/gorhill/uBlock/pull/2314#issuecomment-278716960 2017-02-09 13:33:32 -05:00
gorhill
60605033bf fix #1871? ("blind" fix, need confirmation) 2017-02-03 08:12:26 -05:00
gorhill
aadf4a6427 fix #2340 2017-01-26 10:17:38 -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
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
6e458dca5c fix #2264 2016-12-26 11:35:37 -05:00
gorhill
73a69711f2 add chainable and recursive cosmetic procedural filters 2016-12-25 16:56:39 -05:00
gorhill
d913eea1f6 fix #2132 + various minor code review 2016-11-08 15:53:08 -05:00
gorhill
ee4fc2aed6 code review re advanced settings + added popupFontSize 2016-11-06 16:27:21 -05:00
gorhill
8c3da95d65 fix #2067 (experimental) + support for hidden settings 2016-11-03 11:20:47 -04:00
gorhill
b2193a2b54 probably fix #2053 2016-10-29 11:15:04 -04:00
gorhill
3628de7a9d necessary changes for https://github.com/nikrolls/uBlock-Edge/pull/22 2016-10-28 08:40:38 -04:00
gorhill
e01a130bc5 changes required to use chromium platform code for webext platform code 2016-10-19 10:20:26 -04:00
gorhill
2e953b45c9 make cloud storage support optional
(currently not supported on FF-webext and MS Edge)
2016-10-16 13:04:31 -04:00
gorhill
da163bbe4b fix #1641 2016-10-13 13:25:57 -04:00
gorhill
3ff3ae7d70 fix #2053 2016-10-08 10:15:31 -04:00
gorhill
269c35a04a fix #1997 2016-09-16 17:41:17 -04:00
gorhill
e6d1a1f896 fix #1927 (revised commit msg due to missing quote) 2016-08-22 19:14:37 -04:00
gorhill
e9157bafb7 fix #1892, #1891 2016-08-13 16:42:58 -04:00
gorhill
6fd0bb4291 more refactoring of content script: better modularization of various components 2016-08-12 08:55:35 -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
6bd356dd2c fix #1856 2016-08-06 12:05:01 -04:00
gorhill
4da4709ed5 hopefully fix #1782: treat data: URI as 1st-party resources 2016-07-25 08:18:17 -04:00
gorhill
ed315d0a3b fix #1786 2016-07-07 16:42:01 -04:00
gorhill
8374799c7d various minor code review 2016-06-30 22:03:29 -04:00
gorhill
367e6ee8de fix #1726 2016-06-16 19:10:07 -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
e475e1ece8 this fixes #650; code reviewed changes re. #1202, #1545; fine tuning picker UI 2016-04-16 11:20:01 -04: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
abb6d1a610 this fixes #1403 2016-02-22 15:54:07 -05:00
gorhill
0adae9fb65 this fixes #1395 2016-02-17 09:28:20 -05:00
gorhill
89148351e8 #1163: this implements "block elements by size" 2016-01-17 13:30:43 -05:00
gorhill
7fbde83a28 this fixes #912 2016-01-04 10:48:28 -05:00
gorhill
ea49484dd3 this fixes #1067 + partially fixes #1070 2015-12-15 10:40:40 -05:00
gorhill
9c12ef02bb cosmetic filtering switch must disable ONLY cosmetic filtering.
Before this fix, the turning off cosmetic filtering through the per-site
cosmetic filtering switch was also disabling the blocked resources
collapser.
2015-12-13 00:33:53 -05:00
gorhill
fd1ccebf41 this fixes #1022 2015-12-07 08:59:22 -05:00
gorhill
2705432f43 code review 2015-12-02 00:59:51 -05:00
gorhill
72f5e44ec0 code review 2015-11-29 17:06:58 -05:00
gorhill
f2d2133d76 minor code review 2015-11-28 10:29:05 -05:00
gorhill
46d39838e3 redirect engine: more fine tuning + proof of concept for dayt.se 2015-11-26 17:56:30 -05:00
gorhill
2e8adfe944 this fixes #978 2015-11-26 11:11:28 -05:00
gorhill
135ad95d61 #760: reflect obsolete status immediately in UI 2015-10-14 14:16:43 -04:00
gorhill
6cc07a4027 removed unused code 2015-09-14 10:48:23 -04:00
gorhill
36a15e2e02 Experimental fix for #44
Disregard no-popups per-site switch for a URL which matches
a link clicked by the user.
2015-09-10 13:46:18 -04:00
gorhill
9b4b998364 #608: this fixes a bunch of strictness-related warnings 2015-08-18 11:44:24 -04:00
gorhill
690421aead sync feature (#80): draft 2015-08-11 15:29:14 -04:00
gorhill
8dd21c5f49 change of mind: removing 3p-passive because redundancy, better to work on doc 2015-07-27 09:20:47 -04:00
gorhill
35106dcd90 new dynamic rule type: "3p-passive", for css/images 2015-07-24 19:27:23 -04:00