Loading app/src/main/java/org/mozilla/fenix/addons/AddonsManagementFragment.kt +22 −11 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_add_ons_management.* import kotlinx.android.synthetic.main.fragment_add_ons_management.view.* import kotlinx.android.synthetic.main.overlay_add_on_progress.view.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.launch Loading @@ -35,6 +34,7 @@ import org.mozilla.fenix.ext.getRootView import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.theme.ThemeManager import java.util.concurrent.CancellationException /** * Fragment use for managing add-ons. Loading @@ -46,7 +46,6 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), * Whether or not an add-on installation is in progress. */ private var isInstallationInProgress = false private var scope: CoroutineScope? = null private var adapter: AddonsManagerAdapter? = null override fun onViewCreated(view: View, savedInstanceState: Bundle?) { Loading Loading @@ -244,7 +243,7 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), isInstallationInProgress = true requireContext().components.addonManager.installAddon( val installOperation = requireContext().components.addonManager.installAddon( addon, onSuccess = { runIfFragmentIsAttached { Loading @@ -254,8 +253,10 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), showInstallationDialog(it) } }, onError = { _, _ -> onError = { _, e -> this@AddonsManagementFragment.view?.let { view -> // No need to display an error message if installation was cancelled by the user. if (e !is CancellationException) { val rootView = activity?.getRootView() ?: view showSnackBar( rootView, Loading @@ -264,11 +265,21 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), addon.translatedName ) ) } addonProgressOverlay?.visibility = View.GONE isInstallationInProgress = false } } ) addonProgressOverlay.cancel_button.setOnClickListener { lifecycleScope.launch(Dispatchers.Main) { // Hide the installation progress overlay once cancellation is successful. if (installOperation.cancel().await()) { addonProgressOverlay.visibility = View.GONE } } } } private fun announceForAccessibility(announcementText: CharSequence) { Loading app/src/main/res/layout/overlay_add_on_progress.xml +29 −11 Original line number Diff line number Diff line Loading @@ -9,6 +9,10 @@ android:layout_height="wrap_content" android:elevation="1dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/add_ons_overlay_text" android:layout_width="wrap_content" Loading @@ -21,4 +25,18 @@ android:text="@string/mozac_add_on_install_progress_caption" app:drawableStartCompat="@drawable/mozac_ic_extensions_black" /> <Button android:id="@+id/cancel_button" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/add_ons_overlay_text" android:layout_alignParentEnd="true" android:layout_marginEnd="16dp" android:layout_marginBottom="16dp" android:text="@string/mozac_feature_addons_install_addon_dialog_cancel" android:textAllCaps="false" /> </RelativeLayout> </androidx.cardview.widget.CardView> Loading
app/src/main/java/org/mozilla/fenix/addons/AddonsManagementFragment.kt +22 −11 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_add_ons_management.* import kotlinx.android.synthetic.main.fragment_add_ons_management.view.* import kotlinx.android.synthetic.main.overlay_add_on_progress.view.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.launch Loading @@ -35,6 +34,7 @@ import org.mozilla.fenix.ext.getRootView import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.theme.ThemeManager import java.util.concurrent.CancellationException /** * Fragment use for managing add-ons. Loading @@ -46,7 +46,6 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), * Whether or not an add-on installation is in progress. */ private var isInstallationInProgress = false private var scope: CoroutineScope? = null private var adapter: AddonsManagerAdapter? = null override fun onViewCreated(view: View, savedInstanceState: Bundle?) { Loading Loading @@ -244,7 +243,7 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), isInstallationInProgress = true requireContext().components.addonManager.installAddon( val installOperation = requireContext().components.addonManager.installAddon( addon, onSuccess = { runIfFragmentIsAttached { Loading @@ -254,8 +253,10 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), showInstallationDialog(it) } }, onError = { _, _ -> onError = { _, e -> this@AddonsManagementFragment.view?.let { view -> // No need to display an error message if installation was cancelled by the user. if (e !is CancellationException) { val rootView = activity?.getRootView() ?: view showSnackBar( rootView, Loading @@ -264,11 +265,21 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), addon.translatedName ) ) } addonProgressOverlay?.visibility = View.GONE isInstallationInProgress = false } } ) addonProgressOverlay.cancel_button.setOnClickListener { lifecycleScope.launch(Dispatchers.Main) { // Hide the installation progress overlay once cancellation is successful. if (installOperation.cancel().await()) { addonProgressOverlay.visibility = View.GONE } } } } private fun announceForAccessibility(announcementText: CharSequence) { Loading
app/src/main/res/layout/overlay_add_on_progress.xml +29 −11 Original line number Diff line number Diff line Loading @@ -9,6 +9,10 @@ android:layout_height="wrap_content" android:elevation="1dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/add_ons_overlay_text" android:layout_width="wrap_content" Loading @@ -21,4 +25,18 @@ android:text="@string/mozac_add_on_install_progress_caption" app:drawableStartCompat="@drawable/mozac_ic_extensions_black" /> <Button android:id="@+id/cancel_button" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/add_ons_overlay_text" android:layout_alignParentEnd="true" android:layout_marginEnd="16dp" android:layout_marginBottom="16dp" android:text="@string/mozac_feature_addons_install_addon_dialog_cancel" android:textAllCaps="false" /> </RelativeLayout> </androidx.cardview.widget.CardView>