Unverified Commit b0726c30 authored by Matthew Finkel's avatar Matthew Finkel
Browse files

Merge remote-tracking branch 'acatgl/40062+1' into tor-browser-81.1.2-10.0-2

parents 6afc782a 78d91855
Pipeline #1326 failed with stages
in 10 minutes and 5 seconds
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -21,6 +21,7 @@ import kotlinx.coroutines.launch
import mozilla.components.feature.addons.Addon
import mozilla.components.feature.addons.AddonManagerException
import mozilla.components.feature.addons.ui.translatedName
import mozilla.components.support.webextensions.WebExtensionSupport.installedExtensions
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
......@@ -256,6 +257,8 @@ class InstalledAddonDetailsFragment : Fragment() {
}
}
private fun bindRemoveButton(view: View) {
val isBuiltin = installedExtensions[addon.id]?.isBuiltIn() ?: false
view.remove_add_on.isVisible = !isBuiltin
view.remove_add_on.setOnClickListener {
setAllInteractiveViewsClickable(view, false)
requireContext().components.addonManager.uninstallAddon(
......
......@@ -9,7 +9,6 @@ import android.content.Context
import android.content.Intent
import androidx.core.net.toUri
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.migration.SupportedAddonsChecker
import mozilla.components.feature.addons.update.AddonUpdater
......@@ -71,18 +70,7 @@ class Components(private val context: Context) {
)
}
val addonCollectionProvider by lazy {
if (!BuildConfig.AMO_COLLECTION.isNullOrEmpty()) {
AddonCollectionProvider(
context,
core.client,
collectionName = BuildConfig.AMO_COLLECTION,
maxCacheAgeInMinutes = DAY_IN_MINUTES
)
} else {
AddonCollectionProvider(context, core.client, maxCacheAgeInMinutes = DAY_IN_MINUTES)
}
}
val addonCollectionProvider by lazy { TorAddonCollectionProvider(context, core.client) }
val appStartupTelemetry by lazy { AppStartupTelemetry(analytics.metrics) }
......
/* 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?
): List<Addon> {
ensureCache()
return super.getAvailableAddons(true, readTimeoutInSeconds)
}
@Throws(IOException::class)
override suspend fun getAddonIconBitmap(addon: Addon): Bitmap? {
ensureCache()
return super.getAddonIconBitmap(addon)
}
@Throws(IOException::class)
private suspend fun ensureCache() {
if (isCacheLoaded) {
return
}
return withContext(Dispatchers.IO) {
val data = context.assets.open(ALLOWED_ADDONS_PATH).bufferedReader().use {
it.readText()
}
writeToDiskCache(data)
isCacheLoaded = true
}
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment