2
0
mirror of https://github.com/fork-maintainers/iceraven-browser synced 2024-11-03 23:15:31 +00:00

[fenix] For https://github.com/mozilla-mobile/fenix/issues/17915 - Do not launch system settings on Role Request Intent cancel

This commit is contained in:
ekager 2021-02-08 09:17:19 -07:00
parent aca5681026
commit cb641900d4

View File

@ -434,8 +434,14 @@ class SettingsFragment : PreferenceFragmentCompat() {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q -> {
Preference.OnPreferenceClickListener {
requireContext().getSystemService(RoleManager::class.java).also {
if (!it.isRoleHeld(RoleManager.ROLE_BROWSER)) {
startActivityForResult(it.createRequestRoleIntent(RoleManager.ROLE_BROWSER), 0)
if (it.isRoleAvailable(RoleManager.ROLE_BROWSER) && !it.isRoleHeld(
RoleManager.ROLE_BROWSER
)
) {
startActivityForResult(
it.createRequestRoleIntent(RoleManager.ROLE_BROWSER),
REQUEST_CODE_BROWSER_ROLE
)
} else {
navigateUserToDefaultAppsSettings()
}
@ -468,12 +474,9 @@ class SettingsFragment : PreferenceFragmentCompat() {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
/*
If role manager doesn't show in-app browser changing dialog for a reason, navigate user to
Default Apps Settings.
*/
if (resultCode == Activity.RESULT_CANCELED && requestCode == 0) {
navigateUserToDefaultAppsSettings()
// If the user made us the default browser, update the switch
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_BROWSER_ROLE) {
updateMakeDefaultBrowserPreference()
}
}
@ -547,6 +550,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
}
companion object {
private const val REQUEST_CODE_BROWSER_ROLE = 1
private const val SCROLL_INDICATOR_DELAY = 10L
private const val FXA_SYNC_OVERRIDE_EXIT_DELAY = 2000L
private const val AMO_COLLECTION_OVERRIDE_EXIT_DELAY = 3000L