Add-option-to-not-persist-tabs-across-sessions.patch 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. From: csagan5 <32685696+csagan5@users.noreply.github.com>
  2. Date: Sat, 7 Sep 2019 15:07:42 +0200
  3. Subject: Add option to not persist tabs across sessions
  4. ---
  5. .../android/java/res/xml/privacy_preferences.xml | 5 +++++
  6. .../chrome/browser/ChromeTabbedActivity.java | 4 +++-
  7. .../privacy/settings/PrivacySettings.java | 16 +++++++++++++++-
  8. .../android/strings/android_chrome_strings.grd | 6 ++++++
  9. 4 files changed, 29 insertions(+), 2 deletions(-)
  10. diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
  11. --- a/chrome/android/java/res/xml/privacy_preferences.xml
  12. +++ b/chrome/android/java/res/xml/privacy_preferences.xml
  13. @@ -37,6 +37,11 @@
  14. android:title="@string/always_incognito_title"
  15. android:summary="@string/always_incognito_summary"
  16. android:defaultValue="false" />
  17. + <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
  18. + android:key="close_tabs_on_exit"
  19. + android:title="@string/close_tabs_on_exit_title"
  20. + android:summary="@string/close_tabs_on_exit_summary"
  21. + android:defaultValue="false" />
  22. <Preference
  23. android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings"
  24. android:key="do_not_track"
  25. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  26. --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  27. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  28. @@ -1185,8 +1185,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
  29. boolean hadCipherData =
  30. CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  31. + String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
  32. boolean noRestoreState =
  33. - CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE);
  34. + CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE) ||
  35. + ContextUtils.getAppSharedPreferences().getBoolean(PREF_CLOSE_TABS_ON_EXIT, false);
  36. if (noRestoreState) {
  37. // Clear the state files because they are inconsistent and useless from now on.
  38. mTabModelOrchestrator.clearState();
  39. 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
  40. --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
  41. +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
  42. @@ -5,6 +5,7 @@
  43. package org.chromium.chrome.browser.privacy.settings;
  44. import android.os.Build;
  45. +import android.content.SharedPreferences;
  46. import android.os.Bundle;
  47. import android.text.SpannableString;
  48. import android.view.Menu;
  49. @@ -15,6 +16,8 @@ import androidx.preference.Preference;
  50. import androidx.preference.PreferenceFragmentCompat;
  51. import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
  52. +import org.chromium.base.ContextUtils;
  53. +import org.chromium.base.BuildInfo;
  54. import org.chromium.chrome.R;
  55. import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
  56. import org.chromium.chrome.browser.flags.ChromeFeatureList;
  57. @@ -59,6 +62,8 @@ public class PrivacySettings
  58. private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
  59. private static final String PREF_PRIVACY_REVIEW = "privacy_review";
  60. + private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
  61. +
  62. private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  63. @Override
  64. @@ -136,7 +141,11 @@ public class PrivacySettings
  65. @Override
  66. public boolean onPreferenceChange(Preference preference, Object newValue) {
  67. String key = preference.getKey();
  68. - if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
  69. + if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
  70. + SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
  71. + sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
  72. + sharedPreferencesEditor.apply();
  73. + } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
  74. UserPrefs.get(Profile.getLastUsedRegularProfile())
  75. .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
  76. } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
  77. @@ -188,6 +197,11 @@ public class PrivacySettings
  78. privacySandboxPreference.setSummary(
  79. PrivacySandboxSettingsFragment.getStatusString(getContext()));
  80. }
  81. +
  82. + ChromeSwitchPreference closeTabsOnExitPref =
  83. + (ChromeSwitchPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
  84. + closeTabsOnExitPref.setOnPreferenceChangeListener(this);
  85. + closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  86. }
  87. private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() {
  88. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  89. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  90. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  91. @@ -4081,6 +4081,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
  92. <message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
  93. IMAGE
  94. </message>
  95. + <message name="IDS_CLOSE_TABS_ON_EXIT_TITLE" desc="Text for 'Close tabs on exit' settings-privacy option.">
  96. + Close all open tabs on exit
  97. + </message>
  98. + <message name="IDS_CLOSE_TABS_ON_EXIT_SUMMARY" desc="Summary text for 'Close tabs on exit' settings-privacy option.">
  99. + Don't persist tabs between browsing sessions
  100. + </message>
  101. <message name="IDS_CONTEXTMENU_LINK_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the link.">
  102. LINK
  103. </message>
  104. --
  105. 2.20.1