Commit Graph

99 Commits

Author SHA1 Message Date
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 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 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 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 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 0c5e2eb7ee
code review for c5d85881181a: mind about:blank et al. iframes 2018-05-20 06:49:12 -04:00
Raymond Hill b4306e3297
code reivew of c5d85881181a: immediate scriptlets injection works well only on Chromium-based browsers for now 2018-05-18 10:19:14 -04:00
Raymond Hill 04d84cf92a
fix #3397 2018-01-03 13:59:38 -05:00
Raymond Hill ec29c9a127
fix #3382 2017-12-31 16:05:23 -05:00
Raymond Hill 17dfec5759
fix #3372 2017-12-30 18:55:01 -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 ca8917149d
fix #3341 2017-12-13 08:02:55 -05:00
gorhill 958a7c20ed
fix #3335 2017-12-10 15:03:03 -05:00
gorhill 374e157b11
fix #3159 2017-11-14 15:03:20 -05:00
gorhill 2db377f577
code review: lower timer delay = less risk of large backlog 2017-10-31 06:47:39 -04:00
gorhill 25e2452722
code review: use for..of instead of for(..;..;..) 2017-10-28 16:50:44 -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 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 9952e12aff
fine tune DOM surveyor 2017-10-24 16:38:51 -04:00
gorhill 2bea51cc63
fix silly regression regarding the DOM surveyor 2017-10-24 07:55: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 4f7aab695c
fix #3160 2017-10-22 08:59:29 -04:00
gorhill 6112a68faf
fix #2984 2017-10-21 13:43:46 -04:00
gorhill e7e390d2e2
fix #3077 2017-10-01 07:56:28 -04:00
gorhill 2660bee0d2
fix #2919 2017-09-05 19:49:48 -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 eb3519b075
fix #2839 2017-08-03 10:18:05 -04:00
gorhill 0d892a8856
fix #2810 2017-07-23 09:56:43 -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 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 64c92a96a3
fix https://github.com/nikrolls/uBlock-Edge/issues/64 2017-03-16 19:31:14 -04:00
gorhill cf123b9264
fix #2448 2017-03-13 13:03:51 -04:00
gorhill 7a023077b3
performance work for pseudo-user styles code 2017-03-12 10:22:46 -04:00
gorhill 28084e1dc9 code review: marginal performance improvement 2017-02-12 15:53:40 -05:00
gorhill c6dbdbd23b code review of procedural cosmetic filters + better validate :style option (#2278) 2016-12-30 10:32:17 -05:00
gorhill 7558fedc38 fix typo in new :if/:if-not procedural operators 2016-12-26 12:37:43 -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 c39adacc50 better abstraction of user styles 2016-12-16 16:25:36 -05:00