Opened 3 months ago

Last modified 3 months ago

#7415 reviewing defect

ABP data is not being migrated

Reported by: diegocarloslima Assignee: diegocarloslima
Priority: P2 Milestone: Adblock-Browser-for-Android-1.4.1
Module: Adblock-Browser-for-Android Keywords:
Cc: Blocked By:
Blocking: Platform: Adblock Browser for Android
Ready: yes Confidential: no
Tester: Unknown Verified working: no
Review URL(s):

https://codereview.adblockplus.org/30033563/

Description (last modified by diegocarloslima)

Environment

OnePlus 5
Android 9

How to reproduce

Install version 1.4.0 from the Play Store
Launch ABB, and go to three-dots menu > Settings > Ad blocking
Subscribe to some filter lists under "Languages" and "More blocking options"
Add a domain under "Whitelisted websites"
Tap "Acceptable Ads" and deselect the checkbox
Quit ABB
Install version 1.5.0

Observed behaviour

Only the English filter list is enabled, the whitelisted sites list is empty, and Acceptable Ads are enabled again.

Expected behaviour

The same filter lists are enabled as prior to the upgrade, the whitelisted domain is still whitelisted, and Acceptable Ads setting is disabled.

Hints for testers

This can be verified working by installing ABB 1.4.0 -> 1.4.1 -> 1.5.0

There's just one remark: When 1.4.1 is installed, it doesn't migrate the data from the old location to the webextension storage right away.

The ABP extension storage needs to be in the dirty state to perform a save operation. Usually, without any specific user action, the dirty state is achieved after 1 hour the app is updated. Its important that a save is performed before updating to 1.5.0, otherwise the data wont be migrated.

Another way to force a save without having to wait is to change any ad blocking setting while in 1.4.1 (e.g. add a filter list language, whitelist some website, toggle AA)

Change History (5)

comment:1 Changed 3 months ago by diegocarloslima

After some digging into the extension code, I found the reason why this is happenning. Basically, ABB 1.4.0 is based on FF 56 and uses ABP 2.9.1. This extension version should be responsible for transitioning the storage location from the patterns.ini to the new webextensions storage system (more info here).

The thing is, that the extension doesnt perform this migration for adblockbrowser ID, only for firefox and fennec2. Thats why when ABB 1.5.0 is installed, which is based on FF 59.0.2 and uses ABP 3.2, it tries to read from the webextension storage and doesn't find anything, since the data hasn't been previously migrated.

The best way to solve this is to create an intermediate ABB version (1.4.1), which is still based on FF 56 and uses a modified version of ABP 2.9.1, which will properly migrate the data.

comment:2 Changed 3 months ago by diegocarloslima

  • Review URL(s) modified (diff)
  • Status changed from new to reviewing

comment:3 Changed 3 months ago by diegocarloslima

  • Description modified (diff)

comment:4 Changed 3 months ago by diegocarloslima

  • Description modified (diff)

comment:5 Changed 3 months ago by mario

  • Milestone set to Milestone Adblock-Browser-for-Android-1.4.1
Note: See TracTickets for help on using tickets.