Opened on 08/25/2017 at 06:50:12 AM

Last modified on 10/08/2019 at 05:56:07 PM

#5571 new defect

[abp2blocklist] Safari Technology Preview throws an error if *-domain is mixed with *-top-url

Reported by: mjethani Assignee:
Priority: P2 Milestone:
Module: Adblock-Plus-for-iOS/macOS Keywords: abp2blocklist, Acceptable Ads
Cc: sebastian, kzar, mario, BrentM Blocked By:
Blocking: Platform: Safari
Ready: yes Confidential: no
Tester: Unknown Verified working: no
Review URL(s):

Description

Environment

Safari Technology Preview Release 38 (Safari 11.1, WebKit 12605.1.3.1)
Adblock Plus for Safari based on the current safari bookmark (5e895ee5aee1)
macOS 10.12.5
EasyList+AA

How to reproduce

  1. Go into the options page
  2. Select EasyList+AA in your subscriptions
  3. Enable Safari's native content blocking

Observed behaviour

Error: "Rule list compilation failed: A list cannot have if-domain and unless-domain mixed with if-top-url and unless-top-url"

Expected behaviour

No error.

Notes

The Safari developers seem to have confirmed that this is intentional and not a bug in Safari. It is not allowed to mix the *-domain properties with the *-top-url properties in the same list, as we are doing.

This only affects desktop Safari for now, but it is very likely going to affect iOS as well because this restriction is most likely being imposed for performance reasons.

Attachments (0)

Change History (25)

comment:1 Changed on 08/25/2017 at 07:11:51 AM by mjethani

Now we have the following options:

  1. Drop unless-top-url and accept some more false positives
  2. Use unless-domain instead of unless-top-url, which would effectively make it like $third-party
  3. Generate separate lists for Safari 11+ and older versions: always use *-top-url (use regular expressions) in Safari 11+ and never otherwise

The last one would allow us to improve rule generation on Safari 11+

comment:2 Changed on 08/25/2017 at 07:18:30 AM by mjethani

  • Cc mario added

comment:3 follow-up: Changed on 08/29/2017 at 12:04:33 PM by kzar

My choice would be option 3, but if we decide the effort of having two lists isn't worth it I'd go with option 2. I don't think accepting more false positives is an option, those cause us a lot of trouble.

comment:4 Changed on 08/29/2017 at 12:05:00 PM by kzar

  • Platform changed from Unknown / Cross platform to Safari
  • Priority changed from Unknown to P3
  • Ready set

comment:5 Changed on 09/13/2017 at 04:38:37 PM by sebastian

  • Priority changed from P3 to P4

comment:6 Changed on 09/14/2017 at 03:20:11 AM by mjethani

  • Cc BrentM added

comment:7 Changed on 09/14/2017 at 04:14:46 AM by sebastian

  • Priority changed from P4 to P3

comment:8 follow-ups: Changed on 09/27/2017 at 05:27:15 PM by sebastian

Safari 11 came out a week ago. Did this limitation make it into the release version? If so we might want to prioritize this issue.

comment:9 in reply to: ↑ 8 Changed on 10/10/2017 at 05:35:14 PM by cakefoo

Replying to sebastian:

Safari 11 came out a week ago. Did this limitation make it into the release version? If so we might want to prioritize this issue.

In Safari 11 the observed behavior is Error: "Rule list compilation failed: Too many rules in JSON array."

comment:10 Changed on 10/10/2017 at 06:21:34 PM by sebastian

This is an unrelated issue. Ever since there were only up to 50k rules allowed for Content Blockers. Are you using Adblock Plus for Safari on macOS? Then you should see a warning telling you to reduce the number of filter lists.

comment:11 in reply to: ↑ 8 Changed on 10/17/2017 at 08:29:40 PM by mjethani

Replying to sebastian:

Safari 11 came out a week ago. Did this limitation make it into the release version? If so we might want to prioritize this issue.

Confirmed.

When if-domain and if-top-url are used together, you get an error: "Rule list compilation failed: A trigger cannot have more than one condition (if-domain, unless-domain, if-top-url, or unless-top-url)"

comment:12 Changed on 10/17/2017 at 08:33:01 PM by sebastian

  • Priority changed from P3 to P2

comment:13 Changed on 01/18/2018 at 04:33:28 PM by iOSAlookBrowser

I meet the same problem. Can anyone fix this problem please?
Best Regards.

comment:14 in reply to: ↑ 3 Changed on 01/19/2018 at 06:34:12 AM by mjethani

Replying to kzar:

My choice would be option 3, but if we decide the effort of having two lists isn't worth it I'd go with option 2. I don't think accepting more false positives is an option, those cause us a lot of trouble.

Unfortunately even with option 2 we'll still get some false positives. In the unit tests there are three cases: /foo, ||test.com, and http://example.com/foo. We can only use unless-domain for the second and third cases. There is no way around this.

On the other hand it seems that Safari 11 adoption has really picked up.

comment:15 Changed on 01/24/2018 at 03:29:54 AM by iOSAlookBrowser

iOS 11 (with Safari 11) have been increase to 65%.

comment:16 Changed on 06/11/2018 at 11:39:53 AM by mjethani

  • Milestone set to Adblock-Plus-for-Safari-next

comment:17 Changed on 07/10/2018 at 03:57:59 PM by sebastian

  • Component changed from Platform to Adblock-Plus-for-iOS

comment:18 Changed on 07/13/2018 at 06:11:28 PM by sebastian

  • Milestone Adblock-Plus-for-Safari-next deleted

comment:19 Changed on 09/18/2018 at 01:13:35 AM by gr

With the release of Safari 12, it's no longer possible to uncheck "Use Safari's native Content Blocking (experimental)", and I'm seeing this same behavior with:

macOS 10.12.6 (16G1510)
Safari 12.0 (12606.2.11)
Adblock Plus 1.12.5

Enabled filter lists:
*none*

I also see it with only the "ABP Testcase Subscription" filter list (from https://testpages.adblockplus.org/) selected. With more complicated lists, for example only EasyList, selected, I see the symptoms described at https://issues.adblockplus.org/ticket/6961.

comment:20 Changed on 09/18/2018 at 12:42:22 PM by mjethani

  • Owner mjethani deleted

This issue is no longer assigned to me as this work now belongs to a different team.

Last edited on 09/18/2018 at 12:42:33 PM by mjethani

comment:21 Changed on 09/18/2018 at 01:59:44 PM by sebastian

The old mechanism Adblock Plus uses by default (instead of Content Blocking) on Safari 11 and below, is no longer supported by Safari 12. Hence Content Blocking is used no matter what, and there is no option to disable Content Blocking.

comment:22 Changed on 09/18/2018 at 05:43:27 PM by mjethani

At least somebody on Twitter has run into this on Safari 12. I've left some suggestions above on how to address it.

comment:23 Changed on 12/28/2018 at 03:28:54 PM by johnson83

spam

Last edited on 10/08/2019 at 05:56:01 PM by kzar

comment:24 Changed on 09/05/2019 at 06:55:45 AM by Elegantitservices

spam

Last edited on 10/08/2019 at 05:56:04 PM by kzar

comment:25 Changed on 09/18/2019 at 09:41:07 AM by Lcx666iixx

spam

Last edited on 10/08/2019 at 05:56:07 PM by kzar

Add Comment

Modify Ticket

Change Properties
Action
as new .
as The resolution will be set. Next status will be 'closed'.
to The owner will be changed from (none).
Next status will be 'reviewing'.
 
Note: See TracTickets for help on using tickets.