Opened 4 months ago

Last modified 4 months ago

#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):

https://codereview.adblockplus.org/29500602/
https://codereview.adblockplus.org/29508555/
https://codereview.adblockplus.org/29508569/
https://codereview.adblockplus.org/29508591/

Description (last modified by sergz)

Background

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.

TODO:

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 README.md file.

Change History (11)

comment:1 Changed 4 months ago 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 4 months ago by sergz

  • Review URL(s) modified (diff)

comment:3 Changed 4 months ago by sergz

  • Description modified (diff)

comment:4 Changed 4 months ago by sergz

  • Description modified (diff)

comment:5 Changed 4 months ago by sergz

  • Review URL(s) modified (diff)

comment:6 Changed 4 months ago by sergz

  • Review URL(s) modified (diff)

comment:7 Changed 4 months ago by sergz

  • Review URL(s) modified (diff)

comment:9 Changed 4 months ago 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 4 months ago by sergz

  • Cc hfiguiere fhd added

comment:11 Changed 4 months ago by sergz

  • Description modified (diff)
Note: See TracTickets for help on using tickets.