From 6f3d7b4ee8637c3d37864cd85c3e7c58c8208244 Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Wed, 18 Sep 2019 09:47:30 -0700 Subject: [PATCH] For #5396: Adds "always launch in private mode" to settings --- .../java/org/mozilla/fenix/HomeActivity.kt | 2 +- .../mozilla/fenix/IntentReceiverActivity.kt | 8 +++++++- .../fenix/settings/SettingsFragment.kt | 11 +++++++++++ .../java/org/mozilla/fenix/utils/Settings.kt | 5 +++++ app/src/main/res/values/preference_keys.xml | 4 ++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences.xml | 4 ++++ .../org/mozilla/fenix/utils/SettingsTest.kt | 19 +++++++++++++++++++ 8 files changed, 53 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index c6b7d89b03..7106120808 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -35,8 +35,8 @@ import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager import org.mozilla.fenix.components.FenixSnackbar -import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.BreadcrumbsRecorder +import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.exceptions.ExceptionsFragmentDirections import org.mozilla.fenix.ext.alreadyOnDestination import org.mozilla.fenix.ext.components diff --git a/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt b/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt index 25642d3520..4833ba1ff4 100644 --- a/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt @@ -8,6 +8,7 @@ import android.app.Activity import android.content.Intent import android.os.Bundle import android.speech.RecognizerIntent +import androidx.annotation.VisibleForTesting import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import org.mozilla.fenix.components.metrics.Event @@ -17,6 +18,7 @@ import org.mozilla.fenix.customtabs.CustomTabActivity import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.home.intent.StartSearchIntentProcessor +import org.mozilla.fenix.utils.Settings class IntentReceiverActivity : Activity() { @@ -25,6 +27,7 @@ class IntentReceiverActivity : Activity() { private var previousIntent: Intent? = null @Suppress("ComplexMethod") + @VisibleForTesting override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -39,9 +42,12 @@ class IntentReceiverActivity : Activity() { // the HomeActivity. val intent = intent?.let { Intent(intent) } ?: Intent() + val intentProcessor = if (Settings.getInstance(applicationContext).alwaysOpenInPrivateMode) + components.intentProcessors.privateIntentProcessor else components.intentProcessors.intentProcessor + val intentProcessors = listOf( components.intentProcessors.customTabIntentProcessor, - components.intentProcessors.intentProcessor + intentProcessor ) if (intent.getBooleanExtra(SPEECH_PROCESSING, false)) { 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 a72321415f..2fe58371d4 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -22,6 +22,7 @@ import androidx.preference.Preference import androidx.preference.Preference.OnPreferenceClickListener import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat +import androidx.preference.SwitchPreference import kotlinx.coroutines.launch import mozilla.components.concept.sync.AccountObserver import mozilla.components.concept.sync.AuthType @@ -44,6 +45,7 @@ import org.mozilla.fenix.R.string.pref_key_delete_browsing_data import org.mozilla.fenix.R.string.pref_key_delete_browsing_data_on_quit_preference import org.mozilla.fenix.R.string.pref_key_help import org.mozilla.fenix.R.string.pref_key_language +import org.mozilla.fenix.R.string.pref_key_launch_links_in_private_mode import org.mozilla.fenix.R.string.pref_key_leakcanary import org.mozilla.fenix.R.string.pref_key_make_default_browser import org.mozilla.fenix.R.string.pref_key_privacy_link @@ -248,10 +250,19 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver { val makeDefaultBrowserKey = getPreferenceKey(pref_key_make_default_browser) val leakKey = getPreferenceKey(pref_key_leakcanary) val debuggingKey = getPreferenceKey(pref_key_remote_debugging) + val preferenceAlwaysOpenInPrivateModeKey = getPreferenceKey( + pref_key_launch_links_in_private_mode + ) val preferenceMakeDefaultBrowser = findPreference(makeDefaultBrowserKey) val preferenceLeakCanary = findPreference(leakKey) val preferenceRemoteDebugging = findPreference(debuggingKey) + val preferenceAlwaysOpenInPrivateMode = findPreference(preferenceAlwaysOpenInPrivateModeKey) + + preferenceAlwaysOpenInPrivateMode?.setOnPreferenceClickListener { + requireContext().settings.alwaysOpenInPrivateMode = !requireContext().settings.alwaysOpenInPrivateMode + true + } preferenceMakeDefaultBrowser?.onPreferenceClickListener = getClickListenerForMakeDefaultBrowser() diff --git a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt index 3df86a3556..d29430b41a 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -80,6 +80,11 @@ class Settings private constructor( default = false ) + var alwaysOpenInPrivateMode by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_launch_links_in_private_mode), + default = false + ) + var defaultSearchEngineName by stringPreference( appContext.getPreferenceKey(R.string.pref_key_search_engine), default = "" diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 4e1df3f66e..a935fb88d7 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -96,6 +96,10 @@ pref_key_tracking_protection_standard pref_key_tracking_protection_strict pref_key_tracking_protection_onboarding + + + pref_key_launch_links_in_private_mode + pref_key_bounce_quick_action pref_key_reader_mode_notification diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0796dbddc5..4d8fc37948 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -142,6 +142,8 @@ Privacy Site permissions + + Launch links in a private tab Add private browsing shortcut diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index af23cba609..f94db7b94e 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -58,6 +58,10 @@ android:icon="@drawable/ic_tracking_protection_enabled" android:key="@string/pref_key_tracking_protection_settings" android:title="@string/preference_enhanced_tracking_protection" /> +