diff --git a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt index a2e2d6f66bce..ac4fcd91f990 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -271,7 +271,14 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs context = context, didFail = downloadJobStatus == AbstractFetchDownloadService.DownloadJobStatus.FAILED, download = download, - tryAgain = downloadFeature::tryAgain + tryAgain = downloadFeature::tryAgain, + onCannotOpenFile = { + FenixSnackbar.make(view, Snackbar.LENGTH_SHORT) + .setText(context.getString(R.string.mozac_feature_downloads_could_not_open_file)) + .setAnchorView(browserToolbarView.view) + .show() + } + ) dialog.show() } diff --git a/app/src/main/java/org/mozilla/fenix/downloads/DownloadNotificationBottomSheetDialog.kt b/app/src/main/java/org/mozilla/fenix/downloads/DownloadNotificationBottomSheetDialog.kt index fd98adae33ac..77e9af5ddbfb 100644 --- a/app/src/main/java/org/mozilla/fenix/downloads/DownloadNotificationBottomSheetDialog.kt +++ b/app/src/main/java/org/mozilla/fenix/downloads/DownloadNotificationBottomSheetDialog.kt @@ -24,7 +24,8 @@ class DownloadNotificationBottomSheetDialog( context: Context, private val download: DownloadState, private val didFail: Boolean, - private val tryAgain: (Long) -> Unit + private val tryAgain: (Long) -> Unit, + private val onCannotOpenFile: () -> Unit // We must pass in the BottomSheetDialog theme for the transparent window background to apply properly ) : BottomSheetDialog(context, R.style.Theme_MaterialComponents_BottomSheetDialog) { override fun onCreate(savedInstanceState: Bundle?) { @@ -64,11 +65,16 @@ class DownloadNotificationBottomSheetDialog( mozilla.components.feature.downloads.R.string.mozac_feature_downloads_button_open ) setOnClickListener { - AbstractFetchDownloadService.openFile( + val fileWasOpened = AbstractFetchDownloadService.openFile( context = context, contentType = download.contentType, filePath = download.filePath ) + + if (!fileWasOpened) { + onCannotOpenFile() + } + context.metrics.track(Event.InAppNotificationDownloadOpen) dismiss() } @@ -83,7 +89,6 @@ class DownloadNotificationBottomSheetDialog( setOnShowListener { window?.apply { - // setBackgroundDrawableResource(android.R.color.transparent) setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) setLayout( ViewGroup.LayoutParams.MATCH_PARENT,