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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. From: samartnik <artem@brave.com>
  2. Date: Tue, 17 Apr 2018 17:14:00 +0300
  3. Subject: Add option to not persist tabs across sessions
  4. ---
  5. chrome/android/java/res/values/values.xml | 3 +++
  6. chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
  7. .../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
  8. .../browser/preferences/privacy/PrivacyPreferences.java | 14 ++++++++++++++
  9. chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++
  10. 5 files changed, 31 insertions(+), 1 deletion(-)
  11. diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
  12. --- a/chrome/android/java/res/values/values.xml
  13. +++ b/chrome/android/java/res/values/values.xml
  14. @@ -67,6 +67,9 @@
  15. <!-- TODO(peconn): Add help section. -->
  16. <!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
  17. + <string name="close_tabs_on_exit_title">Close tabs on exit</string>
  18. + <string name="close_tabs_on_exit_summary">Don\'t persist tabs between browsing sessions</string>
  19. +
  20. <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
  21. <string name="manage_space_activity"></string>
  22. diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
  23. --- a/chrome/android/java/res/xml/privacy_preferences.xml
  24. +++ b/chrome/android/java/res/xml/privacy_preferences.xml
  25. @@ -13,6 +13,11 @@
  26. android:summary="@string/navigation_error_summary"
  27. android:defaultValue="true" />
  28. <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
  29. + android:key="close_tabs_on_exit"
  30. + android:title="@string/close_tabs_on_exit_title"
  31. + android:summary="@string/close_tabs_on_exit_summary"
  32. + android:defaultValue="false" />
  33. + <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
  34. android:key="search_suggestions"
  35. android:title="@string/search_suggestions_title"
  36. android:summary="@string/search_suggestions_summary"
  37. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  38. --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  39. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  40. @@ -1138,8 +1138,10 @@ public class ChromeTabbedActivity
  41. boolean hadCipherData =
  42. CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  43. + String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
  44. boolean noRestoreState =
  45. - CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE);
  46. + CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE) ||
  47. + ContextUtils.getAppSharedPreferences().getBoolean(PREF_CLOSE_TABS_ON_EXIT, false);
  48. if (noRestoreState) {
  49. // Clear the state files because they are inconsistent and useless from now on.
  50. mTabModelSelectorImpl.clearState();
  51. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
  52. --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
  53. +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
  54. @@ -4,6 +4,7 @@
  55. package org.chromium.chrome.browser.preferences.privacy;
  56. +import android.content.SharedPreferences;
  57. import android.os.Bundle;
  58. import android.preference.CheckBoxPreference;
  59. import android.preference.Preference;
  60. @@ -15,6 +16,7 @@ import android.view.Menu;
  61. import android.view.MenuInflater;
  62. import android.view.MenuItem;
  63. +import org.chromium.base.ContextUtils;
  64. import org.chromium.base.BuildInfo;
  65. import org.chromium.base.metrics.RecordHistogram;
  66. import org.chromium.chrome.R;
  67. @@ -44,6 +46,7 @@ public class PrivacyPreferences extends PreferenceFragment
  68. private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
  69. private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
  70. private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
  71. + private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
  72. private static final String PREF_DO_NOT_TRACK = "do_not_track";
  73. private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
  74. private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
  75. @@ -71,6 +74,11 @@ public class PrivacyPreferences extends PreferenceFragment
  76. (ChromeBaseCheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
  77. canMakePaymentPref.setOnPreferenceChangeListener(this);
  78. + ChromeBaseCheckBoxPreference closeTabsOnExitPref =
  79. + (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
  80. + closeTabsOnExitPref.setOnPreferenceChangeListener(this);
  81. + closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  82. +
  83. ChromeBaseCheckBoxPreference networkPredictionPref =
  84. (ChromeBaseCheckBoxPreference) findPreference(PREF_NETWORK_PREDICTIONS);
  85. networkPredictionPref.setChecked(prefServiceBridge.getNetworkPredictionEnabled());
  86. @@ -143,6 +151,12 @@ public class PrivacyPreferences extends PreferenceFragment
  87. } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
  88. PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
  89. recordNetworkPredictionEnablingUMA((boolean) newValue);
  90. + } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
  91. +// PrefServiceBridge.getInstance().setBoolean(
  92. +// Pref.CLOSE_TABS_ON_EXIT_ENABLED, (boolean) newValue);
  93. + SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
  94. + sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
  95. + sharedPreferencesEditor.apply();
  96. } else if (PREF_NAVIGATION_ERROR.equals(key)) {
  97. PrefServiceBridge.getInstance().setResolveNavigationErrorEnabled((boolean) newValue);
  98. } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
  99. diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
  100. --- a/chrome/android/java/strings/android_chrome_strings.grd
  101. +++ b/chrome/android/java/strings/android_chrome_strings.grd
  102. @@ -3880,6 +3880,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
  103. <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.">
  104. IMAGE
  105. </message>
  106. + <message name="IDS_CLOSE_TABS_ON_EXIT_TITLE" desc="Text for 'Close tabs on exit' settings-privacy option.">
  107. + Close all open tabs on exit
  108. + </message>
  109. + <message name="IDS_CLOSE_TABS_ON_EXIT_SUMMARY" desc="Summary text for 'Close tabs on exit' settings-privacy option.">
  110. + Don't persist tabs between browsing sessions
  111. + </message>
  112. <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.">
  113. LINK
  114. </message>
  115. --
  116. 2.11.0