diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch
index 6de83d16..d7ba4453 100644
--- a/build/patches/Add-an-always-incognito-mode.patch
+++ b/build/patches/Add-an-always-incognito-mode.patch
@@ -17,14 +17,18 @@ Enable incognito custom tabs and fix crashes for incognito/custom tab intents (c
.../CustomTabActivityLifecycleUmaTracker.java | 25 ------
.../CustomTabIntentDataProvider.java | 5 +-
.../browser/init/StartupTabPreloader.java | 14 +++-
- .../privacy/settings/PrivacySettings.java | 1 +
+ .../privacy/settings/PrivacySettings.java | 37 ++++++++-
+ .../browser/settings/SettingsActivity.java | 4 +
.../browser/tabmodel/ChromeTabCreator.java | 16 +++-
.../browser/tabmodel/TabPersistentStore.java | 10 +++
.../webapps/WebappIntentDataProvider.java | 14 ++++
.../flags/android/chrome_feature_list.cc | 2 +-
- .../strings/android_chrome_strings.grd | 7 ++
- 16 files changed, 170 insertions(+), 34 deletions(-)
+ .../strings/android_chrome_strings.grd | 13 +++
+ chrome/browser/ui/messages/android/BUILD.gn | 1 +
+ .../snackbar/INeedSnackbarManager.java | 27 +++++++
+ 19 files changed, 243 insertions(+), 35 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
+ create mode 100644 chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/INeedSnackbarManager.java
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
@@ -335,14 +339,97 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -42,6 +42,7 @@ import org.chromium.ui.text.SpanApplier;
+@@ -27,6 +27,10 @@ import org.chromium.chrome.browser.profiles.Profile;
+ import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
+ import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
+ import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
++import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
++import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager;
++import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
++import org.chromium.chrome.browser.ApplicationLifetime;
+ import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
+ import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
+ import org.chromium.components.browser_ui.settings.SettingsLauncher;
+@@ -41,7 +45,12 @@ import org.chromium.ui.text.SpanApplier;
+ * Fragment to keep track of the all the privacy related preferences.
*/
public class PrivacySettings
- extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
+- extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
++ extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener,
++ INeedSnackbarManager {
++ private SnackbarManager mSnackbarManager;
++ private Snackbar mSnackbar;
++
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode";
+@@ -84,6 +93,25 @@ public class PrivacySettings
+ (ChromeSwitchPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
+ canMakePaymentPref.setOnPreferenceChangeListener(this);
+
++ ChromeSwitchPreference alwaysIncognitoPref =
++ (ChromeSwitchPreference) findPreference(PREF_ALWAYS_INCOGNITO);
++ alwaysIncognitoPref.setOnPreferenceChangeListener(this);
++
++ mSnackbar = Snackbar.make(getActivity().getString(R.string.ui_relaunch_notice),
++ new SnackbarManager.SnackbarController() {
++ @Override
++ public void onDismissNoAction(Object actionData) { }
++
++ @Override
++ public void onAction(Object actionData) {
++ ApplicationLifetime.terminate(true);
++ }
++ }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN)
++ .setSingleLine(false)
++ .setAction(getActivity().getString(R.string.relaunch),
++ /*actionData*/null)
++ .setDuration(/*durationMs*/70000);
++
+ ChromeSwitchPreference networkPredictionPref =
+ (ChromeSwitchPreference) findPreference(PREF_NETWORK_PREDICTIONS);
+ networkPredictionPref.setChecked(
+@@ -115,6 +143,9 @@ public class PrivacySettings
+ } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
+ PrivacyPreferencesManagerImpl.getInstance().setNetworkPredictionEnabled(
+ (boolean) newValue);
++ } else if (PREF_ALWAYS_INCOGNITO.equals(key)) {
++ if (!mSnackbarManager.isShowing())
++ mSnackbarManager.showSnackbar(mSnackbar);
+ } else if (PREF_HTTPS_FIRST_MODE.equals(key)) {
+ UserPrefs.get(Profile.getLastUsedRegularProfile())
+ .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue);
+@@ -192,4 +223,8 @@ public class PrivacySettings
+ }
+ return false;
+ }
++
++ public void setSnackbarManager(SnackbarManager manager) {
++ mSnackbarManager = manager;
++ }
+ }
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
+@@ -51,6 +51,7 @@ import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment;
+ import org.chromium.chrome.browser.safety_check.SafetyCheckUpdatesDelegateImpl;
+ import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings;
+ import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate;
++import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager;
+ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable;
+ import org.chromium.components.browser_ui.settings.FragmentSettingsLauncher;
+@@ -171,6 +172,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
+ .getSiteSettingsDelegate());
+ delegate.setSnackbarManager(mSnackbarManager);
+ }
++ if (fragment instanceof INeedSnackbarManager) {
++ ((INeedSnackbarManager)fragment).setSnackbarManager(mSnackbarManager);
++ }
+ }
+
+ @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
@@ -505,7 +592,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -907,6 +907,13 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -907,6 +907,19 @@ Your Google account may have other forms of browsing history like searches and a
Clears history from all synced devices.
@@ -515,10 +602,59 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
+
+
+ Opens links in incognito tabs when you click on new tab or on a link
++
++
++ Relaunch
++
++
++ Your changes will take effect the next time you relaunch Bromite.
+
Clears history and autocompletions in the address bar. Your Google Account may have other forms of browsing history at <link>myactivity.google.com</link>.
+diff --git a/chrome/browser/ui/messages/android/BUILD.gn b/chrome/browser/ui/messages/android/BUILD.gn
+--- a/chrome/browser/ui/messages/android/BUILD.gn
++++ b/chrome/browser/ui/messages/android/BUILD.gn
+@@ -22,6 +22,7 @@ android_resources("java_resources") {
+ android_library("java") {
+ sources = [
+ "java/src/org/chromium/chrome/browser/ui/messages/infobar/SimpleConfirmInfoBarBuilder.java",
++ "java/src/org/chromium/chrome/browser/ui/messages/snackbar/INeedSnackbarManager.java",
+ "java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java",
+ "java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarCollection.java",
+ "java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java",
+diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/INeedSnackbarManager.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/INeedSnackbarManager.java
+new file mode 100644
+--- /dev/null
++++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/INeedSnackbarManager.java
+@@ -0,0 +1,27 @@
++/*
++ This file is part of Bromite.
++
++ Bromite is free software: you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation, either version 3 of the License, or
++ (at your option) any later version.
++
++ Bromite is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with Bromite. If not, see .
++*/
++
++package org.chromium.chrome.browser.ui.messages.snackbar;
++
++import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
++
++/**
++ * An interface that allows using snackbars in the settings
++ */
++public interface INeedSnackbarManager {
++ void setSnackbarManager(SnackbarManager manager);
++}
--
2.17.1