Loading app/src/main/java/org/mozilla/fenix/settings/RadioButtonPreference.kt +5 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,11 @@ open class RadioButtonPreference @JvmOverloads constructor( } } fun setCheckedWithoutClickListener(isChecked: Boolean) { updateRadioValue(isChecked) toggleRadioGroups() } private fun updateRadioValue(isChecked: Boolean) { persistBoolean(isChecked) radioButton?.isChecked = isChecked Loading app/src/main/java/org/mozilla/fenix/settings/ToolbarSettingsFragment.kt +4 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar /** Loading Loading @@ -45,6 +46,9 @@ class ToolbarSettingsFragment : PreferenceFragmentCompat() { )) } topPreference.setCheckedWithoutClickListener(!requireContext().settings().shouldUseBottomToolbar) bottomPreference.setCheckedWithoutClickListener(requireContext().settings().shouldUseBottomToolbar) topPreference.addToRadioGroup(bottomPreference) bottomPreference.addToRadioGroup(topPreference) } Loading app/src/main/java/org/mozilla/fenix/utils/Settings.kt +31 −4 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ package org.mozilla.fenix.utils import android.accessibilityservice.AccessibilityServiceInfo.CAPABILITY_CAN_PERFORM_GESTURES import android.app.Application import android.content.Context import android.content.Context.MODE_PRIVATE Loading Loading @@ -205,9 +206,7 @@ class Settings private constructor( val shouldUseFixedTopToolbar: Boolean get() { val accessibilityManager = appContext.getSystemService(Context.ACCESSIBILITY_SERVICE) as? AccessibilityManager return accessibilityManager?.isTouchExplorationEnabled ?: false return touchExplorationIsEnabled || switchServiceIsEnabled } var shouldDeleteBrowsingDataOnQuit by booleanPreference( Loading @@ -217,9 +216,37 @@ class Settings private constructor( var shouldUseBottomToolbar by booleanPreference( appContext.getPreferenceKey(R.string.pref_key_toolbar_bottom), default = true // Default accessibility users to top toolbar default = !touchExplorationIsEnabled && !switchServiceIsEnabled ) /** * Check each active accessibility service to see if it can perform gestures, if any can, * then it is *likely* a switch service is enabled. We are assuming this to be the case based on #7486 */ private val switchServiceIsEnabled: Boolean get() { val accessibilityManager = appContext.getSystemService(Context.ACCESSIBILITY_SERVICE) as? AccessibilityManager accessibilityManager?.getEnabledAccessibilityServiceList(0)?.let { activeServices -> for (service in activeServices) { if (service.capabilities.and(CAPABILITY_CAN_PERFORM_GESTURES) == 1) { return true } } } return false } private val touchExplorationIsEnabled: Boolean get() { val accessibilityManager = appContext.getSystemService(Context.ACCESSIBILITY_SERVICE) as? AccessibilityManager return accessibilityManager?.isTouchExplorationEnabled ?: false } val toolbarSettingString: String get() = when { shouldUseBottomToolbar -> appContext.getString(R.string.preference_bottom_toolbar) Loading app/src/main/res/xml/toolbar_preferences.xml +0 −2 Original line number Diff line number Diff line Loading @@ -4,11 +4,9 @@ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <org.mozilla.fenix.settings.RadioButtonPreference android:defaultValue="false" android:key="@string/pref_key_toolbar_top" android:title="@string/preference_top_toolbar" /> <org.mozilla.fenix.settings.RadioButtonPreference android:defaultValue="true" android:key="@string/pref_key_toolbar_bottom" android:title="@string/preference_bottom_toolbar" /> </PreferenceScreen> Loading
app/src/main/java/org/mozilla/fenix/settings/RadioButtonPreference.kt +5 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,11 @@ open class RadioButtonPreference @JvmOverloads constructor( } } fun setCheckedWithoutClickListener(isChecked: Boolean) { updateRadioValue(isChecked) toggleRadioGroups() } private fun updateRadioValue(isChecked: Boolean) { persistBoolean(isChecked) radioButton?.isChecked = isChecked Loading
app/src/main/java/org/mozilla/fenix/settings/ToolbarSettingsFragment.kt +4 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar /** Loading Loading @@ -45,6 +46,9 @@ class ToolbarSettingsFragment : PreferenceFragmentCompat() { )) } topPreference.setCheckedWithoutClickListener(!requireContext().settings().shouldUseBottomToolbar) bottomPreference.setCheckedWithoutClickListener(requireContext().settings().shouldUseBottomToolbar) topPreference.addToRadioGroup(bottomPreference) bottomPreference.addToRadioGroup(topPreference) } Loading
app/src/main/java/org/mozilla/fenix/utils/Settings.kt +31 −4 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ package org.mozilla.fenix.utils import android.accessibilityservice.AccessibilityServiceInfo.CAPABILITY_CAN_PERFORM_GESTURES import android.app.Application import android.content.Context import android.content.Context.MODE_PRIVATE Loading Loading @@ -205,9 +206,7 @@ class Settings private constructor( val shouldUseFixedTopToolbar: Boolean get() { val accessibilityManager = appContext.getSystemService(Context.ACCESSIBILITY_SERVICE) as? AccessibilityManager return accessibilityManager?.isTouchExplorationEnabled ?: false return touchExplorationIsEnabled || switchServiceIsEnabled } var shouldDeleteBrowsingDataOnQuit by booleanPreference( Loading @@ -217,9 +216,37 @@ class Settings private constructor( var shouldUseBottomToolbar by booleanPreference( appContext.getPreferenceKey(R.string.pref_key_toolbar_bottom), default = true // Default accessibility users to top toolbar default = !touchExplorationIsEnabled && !switchServiceIsEnabled ) /** * Check each active accessibility service to see if it can perform gestures, if any can, * then it is *likely* a switch service is enabled. We are assuming this to be the case based on #7486 */ private val switchServiceIsEnabled: Boolean get() { val accessibilityManager = appContext.getSystemService(Context.ACCESSIBILITY_SERVICE) as? AccessibilityManager accessibilityManager?.getEnabledAccessibilityServiceList(0)?.let { activeServices -> for (service in activeServices) { if (service.capabilities.and(CAPABILITY_CAN_PERFORM_GESTURES) == 1) { return true } } } return false } private val touchExplorationIsEnabled: Boolean get() { val accessibilityManager = appContext.getSystemService(Context.ACCESSIBILITY_SERVICE) as? AccessibilityManager return accessibilityManager?.isTouchExplorationEnabled ?: false } val toolbarSettingString: String get() = when { shouldUseBottomToolbar -> appContext.getString(R.string.preference_bottom_toolbar) Loading
app/src/main/res/xml/toolbar_preferences.xml +0 −2 Original line number Diff line number Diff line Loading @@ -4,11 +4,9 @@ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <org.mozilla.fenix.settings.RadioButtonPreference android:defaultValue="false" android:key="@string/pref_key_toolbar_top" android:title="@string/preference_top_toolbar" /> <org.mozilla.fenix.settings.RadioButtonPreference android:defaultValue="true" android:key="@string/pref_key_toolbar_bottom" android:title="@string/preference_bottom_toolbar" /> </PreferenceScreen>