1
0
Fork 0

For #5898: Default browser toggle sends user to SUMO on Android 5&6 (#5918)

master
Sawyer Blatz 2019-10-10 11:16:21 -07:00 committed by GitHub
parent b6d9bbda78
commit b0d796ccee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 46 additions and 29 deletions

View File

@ -22,5 +22,6 @@ enum class BrowserDirection(@IdRes val fragmentId: Int) {
FromHistory(R.id.historyFragment), FromHistory(R.id.historyFragment),
FromExceptions(R.id.exceptionsFragment), FromExceptions(R.id.exceptionsFragment),
FromAbout(R.id.aboutFragment), FromAbout(R.id.aboutFragment),
FromTrackingProtection(R.id.trackingProtectionFragment) FromTrackingProtection(R.id.trackingProtectionFragment),
FromDefaultBrowserSettingsFragment(R.id.defaultBrowserSettingsFragment)
} }

View File

@ -54,6 +54,7 @@ import org.mozilla.fenix.library.bookmarks.BookmarkFragmentDirections
import org.mozilla.fenix.library.history.HistoryFragmentDirections import org.mozilla.fenix.library.history.HistoryFragmentDirections
import org.mozilla.fenix.search.SearchFragmentDirections import org.mozilla.fenix.search.SearchFragmentDirections
import org.mozilla.fenix.settings.AboutFragmentDirections import org.mozilla.fenix.settings.AboutFragmentDirections
import org.mozilla.fenix.settings.DefaultBrowserSettingsFragmentDirections
import org.mozilla.fenix.settings.SettingsFragmentDirections import org.mozilla.fenix.settings.SettingsFragmentDirections
import org.mozilla.fenix.settings.TrackingProtectionFragmentDirections import org.mozilla.fenix.settings.TrackingProtectionFragmentDirections
import org.mozilla.fenix.theme.DefaultThemeManager import org.mozilla.fenix.theme.DefaultThemeManager
@ -275,6 +276,10 @@ open class HomeActivity : AppCompatActivity() {
TrackingProtectionFragmentDirections.actionTrackingProtectionFragmentToBrowserFragment( TrackingProtectionFragmentDirections.actionTrackingProtectionFragmentToBrowserFragment(
customTabSessionId customTabSessionId
) )
BrowserDirection.FromDefaultBrowserSettingsFragment ->
DefaultBrowserSettingsFragmentDirections.actionDefaultBrowserSettingsFragmentToBrowserFragment(
customTabSessionId
)
} }
private fun load( private fun load(

View File

@ -10,12 +10,13 @@ import android.os.Build
import android.os.Build.VERSION.SDK_INT import android.os.Build.VERSION.SDK_INT
import android.os.Bundle import android.os.Bundle
import android.provider.Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS import android.provider.Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.preference.CheckBoxPreference import androidx.preference.CheckBoxPreference
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import mozilla.components.support.utils.Browsers import mozilla.components.support.utils.Browsers
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.getPreferenceKey
@ -30,7 +31,11 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key -> SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
when (key) { when (key) {
getPreferenceKey(R.string.pref_key_telemetry) -> { getPreferenceKey(R.string.pref_key_telemetry) -> {
if (sharedPreferences.getBoolean(key, requireContext().settings().isTelemetryEnabled)) { if (sharedPreferences.getBoolean(
key,
requireContext().settings().isTelemetryEnabled
)
) {
context?.components?.analytics?.metrics?.start() context?.components?.analytics?.metrics?.start()
} else { } else {
context?.components?.analytics?.metrics?.stop() context?.components?.analytics?.metrics?.stop()
@ -42,7 +47,9 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
context?.let { context?.let {
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener) preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(
preferenceChangeListener
)
} }
val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser) val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser)
@ -54,7 +61,8 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
(activity as AppCompatActivity).title = getString(R.string.preferences_set_as_default_browser) (activity as AppCompatActivity).title =
getString(R.string.preferences_set_as_default_browser)
(activity as AppCompatActivity).supportActionBar?.show() (activity as AppCompatActivity).supportActionBar?.show()
updatePreferences() updatePreferences()
@ -62,7 +70,9 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
override fun onDestroy() { override fun onDestroy() {
context?.let { context?.let {
preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener) preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(
preferenceChangeListener
)
} }
super.onDestroy() super.onDestroy()
} }
@ -93,13 +103,17 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
true true
} }
} else { } else {
defaultClickListener Preference.OnPreferenceClickListener {
(activity as HomeActivity).openToBrowserAndLoad(
searchTermOrURL = SupportUtils.getSumoURLForTopic(
context!!,
SupportUtils.SumoTopic.SET_AS_DEFAULT_BROWSER
),
newTab = true,
from = BrowserDirection.FromSettings
)
true
}
} }
} }
private val defaultClickListener =
Preference.OnPreferenceClickListener { preference ->
Toast.makeText(context, "${preference.title} Clicked", Toast.LENGTH_SHORT).show()
true
}
} }

View File

@ -9,8 +9,6 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Build.VERSION.SDK_INT
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
@ -94,11 +92,6 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
updateAccountUIState(context!!, requireComponents.backgroundServices.accountManager.accountProfile()) updateAccountUIState(context!!, requireComponents.backgroundServices.accountManager.accountProfile())
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener) preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener)
if (SDK_INT <= Build.VERSION_CODES.M) {
findPreference<Preference>(getPreferenceKey(pref_key_make_default_browser))?.isVisible =
false
}
} }
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@ -159,7 +152,7 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "220") ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "220")
} }
resources.getString(pref_key_make_default_browser) -> { resources.getString(pref_key_make_default_browser) -> {
navigateToDefaultBrowserFragment() navigateToDefaultBrowserSettingsFragment()
} }
resources.getString(pref_key_data_choices) -> { resources.getString(pref_key_data_choices) -> {
navigateToDataChoices() navigateToDataChoices()
@ -281,8 +274,8 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
Navigation.findNavController(view!!).navigate(directions) Navigation.findNavController(view!!).navigate(directions)
} }
private fun navigateToDefaultBrowserFragment() { private fun navigateToDefaultBrowserSettingsFragment() {
val directions = SettingsFragmentDirections.actionSettingsFragmentToDefaultBrowserFragment() val directions = SettingsFragmentDirections.actionSettingsFragmentToDefaultBrowserSettingsFragment()
Navigation.findNavController(view!!).navigate(directions) Navigation.findNavController(view!!).navigate(directions)
} }

View File

@ -29,7 +29,8 @@ object SupportUtils {
YOUR_RIGHTS("your-rights"), YOUR_RIGHTS("your-rights"),
TRACKING_PROTECTION("tracking-protection-firefox-preview"), TRACKING_PROTECTION("tracking-protection-firefox-preview"),
WHATS_NEW("whats-new-firefox-preview"), WHATS_NEW("whats-new-firefox-preview"),
SEND_TABS("send-tab-preview") SEND_TABS("send-tab-preview"),
SET_AS_DEFAULT_BROWSER("set-firefox-preview-default")
} }
/** /**

View File

@ -360,8 +360,8 @@
android:id="@+id/action_settingsFragment_to_deleteBrowsingDataOnQuitFragment" android:id="@+id/action_settingsFragment_to_deleteBrowsingDataOnQuitFragment"
app:destination="@id/deleteBrowsingDataOnQuitFragment" /> app:destination="@id/deleteBrowsingDataOnQuitFragment" />
<action <action
android:id="@+id/action_settingsFragment_to_defaultBrowserFragment" android:id="@+id/action_settingsFragment_to_defaultBrowserSettingsFragment"
app:destination="@id/defaultBrowserFragment" /> app:destination="@id/defaultBrowserSettingsFragment" />
</fragment> </fragment>
<fragment <fragment
android:id="@+id/dataChoicesFragment" android:id="@+id/dataChoicesFragment"
@ -587,7 +587,11 @@
android:name="org.mozilla.fenix.share.AddNewDeviceFragment" android:name="org.mozilla.fenix.share.AddNewDeviceFragment"
android:label="AddNewDeviceFragment" /> android:label="AddNewDeviceFragment" />
<fragment <fragment
android:id="@+id/defaultBrowserFragment" android:id="@+id/defaultBrowserSettingsFragment"
android:name="org.mozilla.fenix.settings.DefaultBrowserSettingsFragment" android:name="org.mozilla.fenix.settings.DefaultBrowserSettingsFragment"
android:label="DefaultBrowserFragment" /> android:label="DefaultBrowserSettingsFragment">
<action
android:id="@+id/action_defaultBrowserSettingsFragment_to_browserFragment"
app:destination="@id/browserFragment" />
</fragment>
</navigation> </navigation>

View File

@ -161,7 +161,6 @@ object Deps {
const val leanplum = "com.leanplum:leanplum-core:${Versions.leanplum}" const val leanplum = "com.leanplum:leanplum-core:${Versions.leanplum}"
const val leanplumMessaging = "com.leanplum:leanplum-fcm:${Versions.leanplum}" const val leanplumMessaging = "com.leanplum:leanplum-fcm:${Versions.leanplum}"
const val androidx_annotation = "androidx.annotation:annotation:${Versions.androidx_annotation}" const val androidx_annotation = "androidx.annotation:annotation:${Versions.androidx_annotation}"
const val androidx_fragment = "androidx.fragment:fragment-ktx:${Versions.androidx_fragment}" const val androidx_fragment = "androidx.fragment:fragment-ktx:${Versions.androidx_fragment}"
const val androidx_appcompat = "androidx.appcompat:appcompat:${Versions.androidx_appcompat}" const val androidx_appcompat = "androidx.appcompat:appcompat:${Versions.androidx_appcompat}"