From ba5c2a4f4177e8be65ce8f7626ccdda6c6820510 Mon Sep 17 00:00:00 2001 From: Arturo Mejia Date: Tue, 12 Dec 2023 15:08:22 -0500 Subject: [PATCH] Bug 1868940 - Cannot install an add-on a from local file on Android <10. --- .../org/mozilla/fenix/settings/SettingsFragment.kt | 5 ++++- .../mozilla/fenix/settings/SettingsFragmentTest.kt | 25 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt index 307710f1dee6..118662dacd7e 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -711,7 +711,10 @@ class SettingsFragment : PreferenceFragmentCompat() { @VisibleForTesting internal fun setupInstallAddonFromFilePreference(settings: Settings) { with(requirePreference(R.string.pref_key_install_local_addon)) { - isVisible = settings.showSecretDebugMenuThisSession + // Below Android 10, the OS doesn't seem to recognize + // the "application/x-xpinstall" mime type (for XPI files). + isVisible = + settings.showSecretDebugMenuThisSession && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q } } diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/SettingsFragmentTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/SettingsFragmentTest.kt index 8ef63d4ab1fb..9e8ad2f52a30 100644 --- a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/SettingsFragmentTest.kt +++ b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/SettingsFragmentTest.kt @@ -4,6 +4,7 @@ package org.mozilla.fenix.settings +import android.os.Build import androidx.core.app.NotificationManagerCompat import androidx.fragment.app.FragmentActivity import androidx.preference.Preference @@ -98,6 +99,7 @@ class SettingsFragmentTest { } @Test + @org.robolectric.annotation.Config(sdk = [Build.VERSION_CODES.Q]) fun `Install add-on from file pref is visible if debug menu active and feature is enabled`() = runTestOnMain { val settingsFragment = SettingsFragment() val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get() @@ -125,6 +127,29 @@ class SettingsFragmentTest { } @Test + @org.robolectric.annotation.Config(sdk = [Build.VERSION_CODES.P]) + fun `Install add-on from file pref is invisible below Android 10`() = runTestOnMain { + val settingsFragment = SettingsFragment() + val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get() + + activity.supportFragmentManager.beginTransaction() + .add(settingsFragment, "test") + .commitNow() + + advanceUntilIdle() + + val preference = settingsFragment.findPreference( + settingsFragment.getPreferenceKey(R.string.pref_key_install_local_addon), + ) + + val settings: Settings = mockk(relaxed = true) + + every { settings.showSecretDebugMenuThisSession } returns true + settingsFragment.setupInstallAddonFromFilePreference(settings) + assertFalse(preference!!.isVisible) + } + + @Test fun `Add-on collection override pref is visible if already configured and feature is enabled`() = runTestOnMain { val settingsFragment = SettingsFragment() val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get() -- 2.11.4.GIT