From 8909938c32a7156bc7eb0a0dec3bc74db07decd3 Mon Sep 17 00:00:00 2001 From: Tara Date: Wed, 23 Oct 2024 15:45:21 +0000 Subject: [PATCH] Bug 1917919 - Add 'Learn more' button to the addon installation dialog. r=android-reviewers,amejiamarmol,zmckenney,gmalekpour,willdurand Differential Revision: https://phabricator.services.mozilla.com/D221826 --- .../feature/addons/ui/AddonDialogFragment.kt | 2 ++ .../addons/ui/PermissionsDialogFragment.kt | 31 ++++++++++++++++++- ...dons_fragment_dialog_addon_permissions.xml | 9 ++++++ .../addons/src/main/res/values/strings.xml | 2 ++ .../ui/PermissionsDialogFragmentTest.kt | 8 +++++ .../java/org/mozilla/fenix/HomeActivity.kt | 14 ++++++++- .../extension/WebExtensionPromptFeature.kt | 29 +++++++++++++++++ .../WebExtensionPromptFeatureTest.kt | 26 ++++++++++++++++ 8 files changed, 119 insertions(+), 2 deletions(-) diff --git a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.kt b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.kt index ef465781c71e..73646d21f097 100644 --- a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.kt +++ b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.kt @@ -48,6 +48,8 @@ open class AddonDialogFragment : AppCompatDialogFragment() { @ColorRes val confirmButtonBackgroundColor: Int? = null, @ColorRes + val learnMoreLinkTextColor: Int? = null, + @ColorRes val confirmButtonTextColor: Int? = null, val confirmButtonRadius: Float? = null, ) diff --git a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/PermissionsDialogFragment.kt b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/PermissionsDialogFragment.kt index 66f7772e7ace..974f0995b07f 100644 --- a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/PermissionsDialogFragment.kt +++ b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/PermissionsDialogFragment.kt @@ -8,6 +8,7 @@ import android.annotation.SuppressLint import android.app.Dialog import android.content.DialogInterface import android.graphics.Color +import android.graphics.Paint import android.graphics.drawable.ColorDrawable import android.graphics.drawable.GradientDrawable import android.os.Bundle @@ -35,6 +36,7 @@ private const val KEY_DIALOG_WIDTH_MATCH_PARENT = "KEY_DIALOG_WIDTH_MATCH_PARENT private const val KEY_POSITIVE_BUTTON_BACKGROUND_COLOR = "KEY_POSITIVE_BUTTON_BACKGROUND_COLOR" private const val KEY_POSITIVE_BUTTON_TEXT_COLOR = "KEY_POSITIVE_BUTTON_TEXT_COLOR" private const val KEY_POSITIVE_BUTTON_RADIUS = "KEY_POSITIVE_BUTTON_RADIUS" +private const val KEY_LEARN_MORE_LINK_TEXT_COLOR = "KEY_LEARN_MORE_LINK_TEXT_COLOR" private const val KEY_FOR_OPTIONAL_PERMISSIONS = "KEY_FOR_OPTIONAL_PERMISSIONS" internal const val KEY_PERMISSIONS = "KEY_PERMISSIONS" private const val DEFAULT_VALUE = Int.MAX_VALUE @@ -55,6 +57,11 @@ class PermissionsDialogFragment : AddonDialogFragment() { */ var onNegativeButtonClicked: (() -> Unit)? = null + /** + * A lambda called when the learn more link is clicked. + */ + var onLearnMoreClicked: (() -> Unit)? = null + internal val addon get() = requireNotNull(safeArguments.getParcelableCompat(KEY_ADDON, Addon::class.java)) internal val positiveButtonRadius @@ -85,6 +92,13 @@ class PermissionsDialogFragment : AddonDialogFragment() { DEFAULT_VALUE, ) + internal val learnMoreLinkTextColor + get() = + safeArguments.getInt( + KEY_LEARN_MORE_LINK_TEXT_COLOR, + DEFAULT_VALUE, + ) + /** * This flag is used to adjust the permissions prompt for optional permissions (instead of asking * users to grant the required permissions at install time, which is the default). @@ -160,6 +174,9 @@ class PermissionsDialogFragment : AddonDialogFragment() { rootView.findViewById(R.id.optional_or_required_text).text = buildOptionalOrRequiredText(listPermissions.isNotEmpty()) + val learnMoreLink = rootView.findViewById(R.id.learn_more_link) + learnMoreLink.paintFlags = Paint.UNDERLINE_TEXT_FLAG + val permissionsRecyclerView = rootView.findViewById(R.id.permissions) val positiveButton = rootView.findViewById