This change will eventually also be applied to the switches when they are converted to spinners.
blacklist have been removed from the project. In English these terms are offensive to some people because white and black are also used to describe the color of people’s skin. This change also has the added benefit of being more expressive. What used to be referred to as a
blocklist is now called a
filter list, what used to be referred to as a
white list is now called an
allow list, and what used to be referred to as a
blacklist is now called a
block list. A filter list is a combination of allow lists and block lists, which wasn’t as intuitive with the previous nomenclature.
The suggested file names were standardized. For this version they now are Privacy Browser Android 3.14 Logcat.txt, Privacy Browser Android 3.14 Settings – Schema 16.pbs, and Privacy Browser Android 3.14 Version.txt. The schema is now explicitly listed in the file name, which makes it easier to tell if the file can be used with an older version of Privacy Browser. The version numbers and schema are automatically generated to match the version of the system when the file names are suggested.
The app bar background color displayed when using a proxy was modified to not be as harsh. This also changed the color of the requests allowed background in the night theme.
The scroll position is now restored when changing the theme inside the settings activity. Sometimes it isn’t exactly the same position, which is probably due to a race condition between restoring the scroll position and populating some of the preference summaries, like the user agent.
This release marks the end of a multi-year process of refactoring all of the Java code into Kotlin (the first Kotlin code shipped with Privacy Browser Android 3.4 in March 2020). When I first started working on Privacy Browser Android Kotlin wasn’t an option for Android development. Since that time it has matured and Google has done the work of making it a tier 1 language on the platform. Switching to Kotlin has allowed for the removal of the deprecated
AsyncTask architecture, which was replaced in one case with a background task and in the other cases with Kotlin coroutines. The migration to Kotlin has some inherent performance benefits. Beyond these, several changes were made to improve the performance of common tasks in Privacy Browser. The domain settings set was moved to a class variable to reduce the number of times it had to be looked up (anything requiring a database read from flash storage instead of RAM has a significant performance hit). Similarly, the filter list helper was moved to a class variable so it is only instantiated once instead of for each tab. The filter list helper was also split into a parse filter list helper and a check filter list helper to prevent the initialization of unneeded code (although Android’s ART runtime might be smart enough to figure this out on its own).
The timing of this release was driven by Amazon opening up submission for apps to their Windows 11 Appstore. For reasons that make no sense to me, they required that I release an update to Privacy Browser Android to submit it for review for Windows 11, so I decided to just package up the changes that had already been implemented. Originally I was planning to wait until I had implemented the importing and exporting of bookmarks to other browsers for this release, but that will now be the major planned feature for 3.15. I will write a separate post about using Privacy Browser Android on Windows once it makes it through the approval process.