Opened on 07/24/2017 at 01:30:43 PM

Last modified on 10/08/2019 at 05:54:23 PM

#5450 new change

Modularize libadblockplus

Reported by: sergz Assignee:
Priority: P2 Milestone:
Module: Libadblockplus Keywords:
Cc: hfiguiere, fhd Blocked By:
Blocking: Platform: Unknown / Cross platform
Ready: no Confidential: no
Tester: Unknown Verified working: no
Review URL(s):

Description (last modified by sergz)


In order to

  • do #1285, namely have separate Updater and FilterEngine classes
  • do #5198, some external class, looking after asynchronous operations
  • provide with fast access to settings, in android project there is a duplicated Prefs functionality because it takes too long to fully load ABP merely to show settings
  • (part of #4693) give a hint that FilterEngine and JsEngine are destroyed in a wrong order and in general they should not be used outside the scope of the lifespan of that ABP-platform class
  • avoid hacks with carrying ITimer in libadblockplus-android. ITimer is available during creation of JsEngine but it's needed in FilterEngine and one has to carry it via additional wrapper around native FilterEngine, however one could use that platform class and get access from it to all JsEngine, FilterEngine, Prefs and ITimer.

there is a need in some paltform class which is responsible for JsEngine, Updater, FilterEngine, Prefs, etc. and helps to deal with asynchronity.


Sort JS files out modules and add corresponding modules. In particular we need:

  • appInfo module, seems good to have it as a separate module, requires JsEngine
  • prefs module which loads a bare minimum required to work with preferences, requires JsEngine
  • filterEngine module which loads filterEngine, requires prefs and appInfo
  • updater module which requires prefs, downloader and appInfo (I think it makes sense for present to simply make filterEngine as a dependency for it).

Update file.

Attachments (0)

Change History (12)

comment:1 Changed on 07/25/2017 at 11:53:20 AM by sergz

  • Owner sergz deleted

I have a progress here but firstly it would be better to polish some parts of the existing code.

comment:2 Changed on 07/28/2017 at 12:47:45 PM by sergz

  • Review URL(s) modified (diff)

comment:3 Changed on 07/28/2017 at 01:22:07 PM by sergz

  • Description modified (diff)

comment:4 Changed on 07/28/2017 at 07:15:26 PM by sergz

  • Description modified (diff)

comment:5 Changed on 08/07/2017 at 08:36:24 AM by sergz

  • Review URL(s) modified (diff)

comment:6 Changed on 08/07/2017 at 08:46:15 AM by sergz

  • Review URL(s) modified (diff)

comment:7 Changed on 08/07/2017 at 08:50:43 AM by sergz

  • Review URL(s) modified (diff)

comment:9 Changed on 08/07/2017 at 03:07:37 PM by sergz

  • Description modified (diff)

The stub had been added, JsEngine and FilterEngine are moved into Platform as well as platform specific interfaces. Now we can work in parallel on threading issues (#5118, #5179) and on modules (the issue description has been updated).

comment:10 Changed on 08/07/2017 at 03:09:23 PM by sergz

  • Cc hfiguiere fhd added

comment:11 Changed on 08/07/2017 at 03:33:18 PM by sergz

  • Description modified (diff)

comment:12 Changed on 09/04/2019 at 04:12:26 AM by yoyo9996


Last edited on 10/08/2019 at 05:54:23 PM by kzar

Add Comment

Modify Ticket

Change Properties
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.