diff --git a/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt
new file mode 100644
index 000000000..46721e1f6
--- /dev/null
+++ b/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt
@@ -0,0 +1,23 @@
+/* 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.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.preference.PreferenceFragmentCompat
+import org.mozilla.fenix.R
+
+class AccessibilityFragment : PreferenceFragmentCompat() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ (activity as AppCompatActivity).title = getString(R.string.preferences_accessibility)
+ (activity as AppCompatActivity).supportActionBar?.show()
+ }
+
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ setPreferencesFromResource(R.xml.accessibility_preferences, rootKey)
+ }
+}
diff --git a/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt
new file mode 100644
index 000000000..c61f99f81
--- /dev/null
+++ b/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt
@@ -0,0 +1,23 @@
+/* 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.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.preference.PreferenceFragmentCompat
+import org.mozilla.fenix.R
+
+class DataChoicesFragment : PreferenceFragmentCompat() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ (activity as AppCompatActivity).title = getString(R.string.preferences_data_choices)
+ (activity as AppCompatActivity).supportActionBar?.show()
+ }
+
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ setPreferencesFromResource(R.xml.data_choices_preferences, rootKey)
+ }
+}
diff --git a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
index cc9097679..9a8cfcbac 100644
--- a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
@@ -20,17 +20,26 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
+import kotlin.coroutines.CoroutineContext
+import java.io.File
import mozilla.components.support.ktx.android.graphics.toDataUri
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.FenixApplication
-import org.mozilla.fenix.R
-import org.mozilla.fenix.R.string.pref_key_leakcanary
-import org.mozilla.fenix.R.string.pref_key_make_default_browser
import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.requireComponents
-import java.io.File
-import kotlin.coroutines.CoroutineContext
+import org.mozilla.fenix.R
+import org.mozilla.fenix.R.string.pref_key_leakcanary
+import org.mozilla.fenix.R.string.pref_key_feedback
+import org.mozilla.fenix.R.string.pref_key_help
+import org.mozilla.fenix.R.string.pref_key_make_default_browser
+import org.mozilla.fenix.R.string.pref_key_rate
+import org.mozilla.fenix.R.string.pref_key_site_permissions
+import org.mozilla.fenix.R.string.pref_key_accessibility
+import org.mozilla.fenix.R.string.pref_key_language
+import org.mozilla.fenix.R.string.pref_key_data_choices
+import org.mozilla.fenix.R.string.pref_key_about
+@Suppress("TooManyFunctions")
class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope {
private lateinit var job: Job
@@ -54,21 +63,34 @@ class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope {
setupPreferences()
}
+ @Suppress("ComplexMethod")
override fun onPreferenceTreeClick(preference: Preference): Boolean {
when (preference.key) {
- resources.getString(R.string.pref_key_help) -> {
+ resources.getString(pref_key_site_permissions) -> {
+ navigateToSitePermissions()
+ }
+ resources.getString(pref_key_accessibility) -> {
+ navigateToAccessibility()
+ }
+ resources.getString(pref_key_language) -> {
+ // TODO open language switcher
+ }
+ resources.getString(pref_key_data_choices) -> {
+ navigateToDataChoices()
+ }
+ resources.getString(pref_key_help) -> {
requireComponents.useCases.tabsUseCases.addTab
.invoke(SupportUtils.getSumoURLForTopic(context!!, SupportUtils.SumoTopic.HELP))
navigateToSettingsArticle()
}
- resources.getString(R.string.pref_key_rate) -> {
+ resources.getString(pref_key_rate) -> {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(SupportUtils.RATE_APP_URL)))
}
- resources.getString(R.string.pref_key_feedback) -> {
+ resources.getString(pref_key_feedback) -> {
requireComponents.useCases.tabsUseCases.addTab.invoke(SupportUtils.FEEDBACK_URL)
navigateToSettingsArticle()
}
- resources.getString(R.string.pref_key_about) -> {
+ resources.getString(pref_key_about) -> {
requireComponents.useCases.tabsUseCases.addTab.invoke(aboutURL, true)
navigateToSettingsArticle()
}
@@ -144,11 +166,26 @@ class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope {
}
}
+ private fun navigateToSitePermissions() {
+ val directions = SettingsFragmentDirections.actionSettingsFragmentToSitePermissionsFragment()
+ Navigation.findNavController(view!!).navigate(directions)
+ }
+
+ private fun navigateToAccessibility() {
+ val directions = SettingsFragmentDirections.actionSettingsFragmentToAccessibilityFragment()
+ Navigation.findNavController(view!!).navigate(directions)
+ }
+
+ private fun navigateToDataChoices() {
+ val directions = SettingsFragmentDirections.actionSettingsFragmentToDataChoicesFragment()
+ Navigation.findNavController(view!!).navigate(directions)
+ }
+
private fun navigateToSettingsArticle() {
- requireComponents.useCases.tabsUseCases.addTab.invoke(aboutURL, true)
+ val newSession = requireComponents.core.sessionManager.selectedSession?.id
view?.let {
Navigation.findNavController(it)
- .navigate(SettingsFragmentDirections.actionGlobalBrowser(null))
+ .navigate(SettingsFragmentDirections.actionGlobalBrowser(newSession))
}
}
diff --git a/app/src/main/java/org/mozilla/fenix/settings/SitePermissionsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/SitePermissionsFragment.kt
new file mode 100644
index 000000000..138b90ba5
--- /dev/null
+++ b/app/src/main/java/org/mozilla/fenix/settings/SitePermissionsFragment.kt
@@ -0,0 +1,23 @@
+/* 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.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.preference.PreferenceFragmentCompat
+import org.mozilla.fenix.R
+
+class SitePermissionsFragment : PreferenceFragmentCompat() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ (activity as AppCompatActivity).title = getString(R.string.preferences_site_permissions)
+ (activity as AppCompatActivity).supportActionBar?.show()
+ }
+
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ setPreferencesFromResource(R.xml.site_permissions_preferences, rootKey)
+ }
+}
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_logo_wordmark.png b/app/src/main/res/drawable-xxxhdpi/ic_logo_wordmark.png
deleted file mode 100644
index 45ec21118..000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_logo_wordmark.png and /dev/null differ
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 9d6b657e2..45ffdd959 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -87,5 +87,23 @@