Closed antonok-edm closed 1 month ago
Another use/test case: sponsored posts on stuff.co.nz
Should be handled by stuff.co.nz##[itemprop]:has(.sponsored-flag)
How many filters makes use of other procedural selector? (e.g. :has-text
)
I'd imagine Chrome's upcoming support for :has
is going to make this slightly less necessary.
How many filters makes use of other procedural selector? (e.g. :has-text)
I did a survey of procedural filter operator counts in Brave's default lists a few days ago:
:has
164
:has-text
336
:matches-css
15
:matches-css-before
19
:matches-css-after
2
:matches-path
12
:not
165
:upward
239
:xpath
49
It's not an exact metric since some filters can contain multiple chained operators, and :not
is a special case since it's also a valid CSS pseudo-class, but this list still gives a good idea of how important each is. has-text
in particular would be great to support.
I'd imagine Chrome's upcoming support for :has is going to make this slightly less necessary.
The recent efforts on :has
are commendable, but it actually has a really long history and who knows what else may delay the implementation. Plus, support procedural cosmetic filters in general should make :has
fairly simple anyways.
edit: 172 occurrences of has-text
, or roughly half, are actually from HTML filters (with a ##^
separator in the rule). That uses a totally separate system from procedural filtering, even though the rules look similar. I haven't seen any other procedural filters used for HTML filtering.
edit again: :has
is actually implemented now! So just the other procedural filters are left now.
Hi Braver, Is there any update on this open ticket. I happy to contribute.
Verification PASSED
using
Brave | 1.72.83 Chromium: 130.0.6723.58 (Official Build) beta (arm64)
-- | --
Revision | b49615851cd2dc4b1c3f5f13d3207d3c032bfd8d
OS | macOS Version 14.6.1 (Build 23G93)
brave://settings/shields/filters
in a new tabCustom lists
- 1,2.3
- 6,7,8,9
- 20,21
- 24
- 26
- 28,29
step 4 | step 5a | step 5b |
---|---|---|
Verification PASSED
using
Brave | 1.72.85 Chromium: 130.0.6723.58 (Official Build) beta (64-bit)
-- | --
Revision | 2c872aa4d2694bc73ec58e3b14538a4008a6381e
OS | Windows 11 Version 23H2 (Build 22631.4391)
brave://settings/shields/filters
in a new tabCustom lists
- 1,2.3
- 6,7,8,9
- 20,21
- 24
- 26
- 28,29
step 4 | step 5a | step 5b |
---|---|---|
Verified on Samsung Galaxy S21
using the following version(s):
Brave 1.72.90 Chromium: 130.0.6723.70 (Official Build) beta (64-bit)
Revision 5f14a2225ebf4fcd654e064bde93e77fcc5d8f39
OS Android 13; Build/TP1A.220624.014; 33; REL
Using test plan in https://github.com/brave/brave-core/pull/24688#issue-2412035316
Ensured the following test case numbers are passing on https://antonok.com/tmp/procedural-filter-tests/index.html
after adding https://antonok.com/tmp/procedural-filter-tests/test-extended-css-rules.txt
to custom filter list
example |
example |
example |
---|---|---|
Verified on Samsung Galaxy Tab S7
using the following version(s):
Brave 1.72.93 Chromium: 131.0.6778.14 (Official Build) beta (64-bit)
Revision 69e5dc20ca483a13316632df5bcd9279bb2a3cb7
OS Android 13; Build/TP1A.220624.014; 33; REL
Using test plan in https://github.com/brave/brave-core/pull/24688#issue-2412035316
Ensured the following test case numbers are passing on https://antonok.com/tmp/procedural-filter-tests/index.html
after adding https://antonok.com/tmp/procedural-filter-tests/test-extended-css-rules.txt
to custom filter list
example |
example |
example |
---|---|---|
Verification PASSED
using
Brave 1.72.95 Chromium: 131.0.6778.24 (Official Build) beta (64-bit)
Revision 006619fbaf6013cb3495b90fc3885eda343087e5
OS Linux
brave://settings/shields/filters
in a new tabCustom lists
- 1,2.3
- 6,7,8,9
- 20,21
- 24
- 26
- 28,29
step 4 | step 5a | step 5b |
---|---|---|
Procedural cosmetic filtering is useful for the most evasive kinds of in-content sponsored/promoted material. It'd be great to implement this and tie it to aggressive shields settings, to handle the last few examples of cosmetic items slipping through on Reddit, YouTube, Facebook, etc.
See also: