[tbb-commits] [Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.5-1] fixup! Modify add-on support

Pier Angelo Vendrame (@pierov) git at gitlab.torproject.org
Mon Jun 10 16:36:07 UTC 2024



Pier Angelo Vendrame pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android


Commits:
9020793e by Pier Angelo Vendrame at 2024-06-10T16:02:49+02:00
fixup! Modify add-on support

Bug 42619: Remove our custom AddonCollectionProvider.

Our own custom list of allowed addons will get outdate very soon,
breaking the installation of addons from AMO, and maybe preventing the
update of the ones already installed.

However, the AMO collection might not be available until the boostrap is
done in some conditions (when it has never been cached, or if the cache
expired) and in these cases the installed addons will not be displayed
either.

- - - - -


3 changed files:

- − fenix/app/src/main/assets/allowed_addons.json
- fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt
- − fenix/app/src/main/java/org/mozilla/fenix/components/TorAddonCollectionProvider.kt


Changes:

=====================================
fenix/app/src/main/assets/allowed_addons.json deleted
=====================================
The diff for this file was not included because it is too large.

=====================================
fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt
=====================================
@@ -12,6 +12,7 @@ import androidx.compose.ui.platform.LocalContext
 import androidx.core.app.NotificationManagerCompat
 import com.google.android.play.core.review.ReviewManagerFactory
 import mozilla.components.feature.addons.AddonManager
+import mozilla.components.feature.addons.amo.AddonCollectionProvider
 import mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker
 import mozilla.components.feature.addons.update.DefaultAddonUpdater
 import mozilla.components.feature.autofill.AutofillConfiguration
@@ -113,7 +114,32 @@ class Components(private val context: Context) {
     }
 
     val addonCollectionProvider by lazyMonitored {
-        TorAddonCollectionProvider(context, core.client)
+        // Check if we have a customized (overridden) AMO collection (supported in Nightly & Beta)
+        if (FeatureFlags.customExtensionCollectionFeature && context.settings().amoCollectionOverrideConfigured()) {
+            AddonCollectionProvider(
+                context,
+                core.client,
+                collectionUser = context.settings().overrideAmoUser,
+                collectionName = context.settings().overrideAmoCollection,
+            )
+        }
+        // Use build config otherwise
+        else if (!BuildConfig.AMO_COLLECTION_USER.isNullOrEmpty() &&
+            !BuildConfig.AMO_COLLECTION_NAME.isNullOrEmpty()
+        ) {
+            AddonCollectionProvider(
+                context,
+                core.client,
+                serverURL = BuildConfig.AMO_SERVER_URL,
+                collectionUser = BuildConfig.AMO_COLLECTION_USER,
+                collectionName = BuildConfig.AMO_COLLECTION_NAME,
+                maxCacheAgeInMinutes = AMO_COLLECTION_MAX_CACHE_AGE,
+            )
+        }
+        // Fall back to defaults
+        else {
+            AddonCollectionProvider(context, core.client, maxCacheAgeInMinutes = AMO_COLLECTION_MAX_CACHE_AGE)
+        }
     }
 
     @Suppress("MagicNumber")


=====================================
fenix/app/src/main/java/org/mozilla/fenix/components/TorAddonCollectionProvider.kt deleted
=====================================
@@ -1,64 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// Copyright (c) 2020, The Tor Project, Inc.
-
-package org.mozilla.fenix.components
-
-import android.content.Context
-import android.graphics.Bitmap
-import kotlinx.coroutines.withContext
-import mozilla.components.concept.fetch.Client
-import mozilla.components.feature.addons.Addon
-import kotlinx.coroutines.Dispatchers
-import mozilla.components.feature.addons.amo.AddonCollectionProvider
-import java.io.IOException
-
-internal const val COLLECTION_NAME = "tor_browser_collection"
-internal const val ALLOWED_ADDONS_PATH = "allowed_addons.json"
-internal const val MAX_CACHE_AGE = 1000L * 365L * 24L * 60L // 1000 years
-
-class TorAddonCollectionProvider(
-    private val context: Context,
-    client: Client
-) : AddonCollectionProvider(
-    context, client, serverURL = "",
-    collectionName = COLLECTION_NAME,
-    maxCacheAgeInMinutes = MAX_CACHE_AGE
-) {
-    private var isCacheLoaded = false
-
-    @Throws(IOException::class)
-    override suspend fun getAvailableAddons(
-        allowCache: Boolean,
-        readTimeoutInSeconds: Long?,
-        language: String?
-    ): List<Addon> {
-        ensureCache(language)
-        return super.getAvailableAddons(true, readTimeoutInSeconds, language)
-    }
-
-    @Throws(IOException::class)
-    override suspend fun getAddonIconBitmap(addon: Addon): Bitmap? {
-        // super.getAddonIconBitmap does not look at the cache, so calling
-        // ensureCache here is not helpful. In addition, now the cache depends
-        // on a language, and that isn't available right now.
-        // ensureCache(language)
-        return super.getAddonIconBitmap(addon)
-    }
-
-    @Throws(IOException::class)
-    private suspend fun ensureCache(language: String?) {
-        if (isCacheLoaded) {
-            return
-        }
-        return withContext(Dispatchers.IO) {
-            val data = context.assets.open(ALLOWED_ADDONS_PATH).bufferedReader().use {
-                it.readText()
-            }
-            writeToDiskCache(data, language)
-            isCacheLoaded = true
-        }
-    }
-}



View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/9020793e44617345c57a97f399cb836d079d5db9

-- 
This project does not include diff previews in email notifications.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/9020793e44617345c57a97f399cb836d079d5db9
You're receiving this email because of your account on gitlab.torproject.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tbb-commits/attachments/20240610/14cf94c2/attachment-0001.htm>


More information about the tbb-commits mailing list