Commit bc532966 authored by ValentinTimisica's avatar ValentinTimisica
Browse files

For #11365: Reorganizes 'SettingsFragment' items

Moved all the functionality form 'DefaultBrowserSettingsFragment' to
'SettingsFragment'.
parent 11697c13
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ enum class BrowserDirection(@IdRes val fragmentId: Int) {
    FromExceptions(R.id.exceptionsFragment),
    FromAbout(R.id.aboutFragment),
    FromTrackingProtection(R.id.trackingProtectionFragment),
    FromDefaultBrowserSettingsFragment(R.id.defaultBrowserSettingsFragment),
    FromSavedLoginsFragment(R.id.savedLoginsFragment),
    FromAddNewDeviceFragment(R.id.addNewDeviceFragment),
    FromAddSearchEngineFragment(R.id.addSearchEngineFragment),
+0 −3
Original line number Diff line number Diff line
@@ -70,7 +70,6 @@ import org.mozilla.fenix.library.history.HistoryFragmentDirections
import org.mozilla.fenix.perf.Performance
import org.mozilla.fenix.perf.StartupTimeline
import org.mozilla.fenix.search.SearchFragmentDirections
import org.mozilla.fenix.settings.DefaultBrowserSettingsFragmentDirections
import org.mozilla.fenix.settings.SettingsFragmentDirections
import org.mozilla.fenix.settings.TrackingProtectionFragmentDirections
import org.mozilla.fenix.settings.about.AboutFragmentDirections
@@ -384,8 +383,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
            AboutFragmentDirections.actionGlobalBrowser(customTabSessionId)
        BrowserDirection.FromTrackingProtection ->
            TrackingProtectionFragmentDirections.actionGlobalBrowser(customTabSessionId)
        BrowserDirection.FromDefaultBrowserSettingsFragment ->
            DefaultBrowserSettingsFragmentDirections.actionGlobalBrowser(customTabSessionId)
        BrowserDirection.FromSavedLoginsFragment ->
            SavedLoginsAuthFragmentDirections.actionGlobalBrowser(customTabSessionId)
        BrowserDirection.FromAddNewDeviceFragment ->
+0 −73
Original line number Diff line number Diff line
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.mozilla.fenix.settings

import android.content.Intent
import android.os.Build
import android.os.Build.VERSION.SDK_INT
import android.os.Bundle
import android.provider.Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.showToolbar

/**
 * Lets the user control their default browser preferences
 */
class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser)
        val preferenceMakeDefaultBrowser = findPreference<Preference>(makeDefaultBrowserKey)

        preferenceMakeDefaultBrowser?.onPreferenceClickListener =
            getClickListenerForMakeDefaultBrowser()
    }

    override fun onResume() {
        super.onResume()
        showToolbar(getString(R.string.preferences_set_as_default_browser))

        updatePreferences()
    }

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.default_browser_preferences, rootKey)
        updatePreferences()
    }

    private fun updatePreferences() {
        findPreference<DefaultBrowserPreference>(getPreferenceKey(R.string.pref_key_make_default_browser))
            ?.updateSwitch()
    }

    private fun getClickListenerForMakeDefaultBrowser(): Preference.OnPreferenceClickListener {
        return if (SDK_INT >= Build.VERSION_CODES.N) {
            Preference.OnPreferenceClickListener {
                val intent = Intent(ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
                startActivity(intent)
                true
            }
        } else {
            Preference.OnPreferenceClickListener {
                (activity as HomeActivity).openToBrowserAndLoad(
                    searchTermOrURL = SupportUtils.getSumoURLForTopic(
                        requireContext(),
                        SupportUtils.SumoTopic.SET_AS_DEFAULT_BROWSER
                    ),
                    newTab = true,
                    from = BrowserDirection.FromDefaultBrowserSettingsFragment
                )
                true
            }
        }
    }
}
+37 −3
Original line number Diff line number Diff line
@@ -8,8 +8,10 @@ import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.provider.Settings
import android.widget.Toast
import androidx.appcompat.content.res.AppCompatResources
import androidx.lifecycle.lifecycleScope
@@ -114,6 +116,7 @@ class SettingsFragment : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.preferences, rootKey)
        updateMakeDefaultBrowserPreference()
    }

    override fun onResume() {
@@ -173,6 +176,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
                requireComponents.backgroundServices.accountManager.accountProfile()
            )
        }

        updateMakeDefaultBrowserPreference()
    }

    @Suppress("ComplexMethod", "LongMethod")
@@ -208,9 +213,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
                requireContext().metrics.track(Event.AddonsOpenInSettings)
                SettingsFragmentDirections.actionSettingsFragmentToAddonsFragment()
            }
            resources.getString(R.string.pref_key_make_default_browser) -> {
                SettingsFragmentDirections.actionSettingsFragmentToDefaultBrowserSettingsFragment()
            }
            resources.getString(R.string.pref_key_data_choices) -> {
                SettingsFragmentDirections.actionSettingsFragmentToDataChoicesFragment()
            }
@@ -289,9 +291,11 @@ class SettingsFragment : PreferenceFragmentCompat() {
    private fun setupPreferences() {
        val leakKey = getPreferenceKey(R.string.pref_key_leakcanary)
        val debuggingKey = getPreferenceKey(R.string.pref_key_remote_debugging)
        val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser)

        val preferenceLeakCanary = findPreference<Preference>(leakKey)
        val preferenceRemoteDebugging = findPreference<Preference>(debuggingKey)
        val preferenceMakeDefaultBrowser = findPreference<Preference>(makeDefaultBrowserKey)

        if (!Config.channel.isReleased) {
            preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue ->
@@ -308,6 +312,9 @@ class SettingsFragment : PreferenceFragmentCompat() {
            true
        }

        preferenceMakeDefaultBrowser?.onPreferenceClickListener =
            getClickListenerForMakeDefaultBrowser()

        val preferenceFxAOverride =
            findPreference<Preference>(getPreferenceKey(R.string.pref_key_override_fxa_server))
        val preferenceSyncOverride =
@@ -335,6 +342,33 @@ class SettingsFragment : PreferenceFragmentCompat() {
        )?.isVisible = requireContext().settings().showSecretDebugMenuThisSession
    }

    private fun getClickListenerForMakeDefaultBrowser(): Preference.OnPreferenceClickListener {
        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            Preference.OnPreferenceClickListener {
                val intent = Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
                startActivity(intent)
                true
            }
        } else {
            Preference.OnPreferenceClickListener {
                (activity as HomeActivity).openToBrowserAndLoad(
                    searchTermOrURL = SupportUtils.getSumoURLForTopic(
                        requireContext(),
                        SupportUtils.SumoTopic.SET_AS_DEFAULT_BROWSER
                    ),
                    newTab = true,
                    from = BrowserDirection.FromSettings
                )
                true
            }
        }
    }

    private fun updateMakeDefaultBrowserPreference() {
        findPreference<DefaultBrowserPreference>(getPreferenceKey(R.string.pref_key_make_default_browser))
            ?.updateSwitch()
    }

    private fun navigateFromSettings(directions: NavDirections) {
        view?.findNavController()?.let { navController ->
            if (navController.currentDestination?.id == R.id.settingsFragment) {
+0 −10
Original line number Diff line number Diff line
@@ -446,13 +446,6 @@
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right"
            app:destination="@id/deleteBrowsingDataOnQuitFragment" />
        <action
            android:id="@+id/action_settingsFragment_to_defaultBrowserSettingsFragment"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right"
            app:destination="@id/defaultBrowserSettingsFragment" />
        <action
            android:id="@+id/action_settingsFragment_to_localeSettingsFragment"
            app:enterAnim="@anim/slide_in_right"
@@ -709,9 +702,6 @@
    <fragment
        android:id="@+id/addNewDeviceFragment"
        android:name="org.mozilla.fenix.share.AddNewDeviceFragment" />
    <fragment
        android:id="@+id/defaultBrowserSettingsFragment"
        android:name="org.mozilla.fenix.settings.DefaultBrowserSettingsFragment"/>
    <fragment
        android:id="@+id/addSearchEngineFragment"
        android:name="org.mozilla.fenix.settings.search.AddSearchEngineFragment" />
Loading