Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java |
index c3005e17b81555db9ea8ccf8dd3c2f87c4c983e8..a27915fd1410469851afe261e8f48ba48cbbe7fb 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java |
@@ -4,7 +4,11 @@ |
package org.chromium.chrome.browser.preferences; |
+import android.content.Context; |
+import android.content.SharedPreferences; |
+import android.preference.PreferenceManager; |
import android.text.TextUtils; |
+import android.util.Log; |
import org.chromium.base.CalledByNative; |
import org.chromium.base.ThreadUtils; |
@@ -31,6 +35,9 @@ public final class PrefServiceBridge { |
public static final int SUPERVISED_USER_FILTERING_WARN = 1; |
public static final int SUPERVISED_USER_FILTERING_BLOCK = 2; |
+ private static final String MIGRATION_PREF_KEY = "PrefMigrationVersion"; |
+ private static final int MIGRATION_CURRENT_VERSION = 1; |
+ |
private static String sProfilePath; |
// Object to notify when "clear browsing data" completes. |
@@ -143,6 +150,30 @@ public final class PrefServiceBridge { |
} |
/** |
+ * Migrates (synchronously) the preferences to the most recent version. |
+ */ |
+ public void migratePreferences(Context context) { |
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); |
+ int currentVersion = preferences.getInt(MIGRATION_PREF_KEY, 0); |
+ if (currentVersion > MIGRATION_CURRENT_VERSION) { |
+ Log.e(LOG_TAG, "Saved preferences version is newer than supported. Attempting to " |
+ + "run an older version of Chrome without clearing data is unsupported and " |
+ + "the results may be unpredictable."); |
+ } |
+ while (currentVersion < MIGRATION_CURRENT_VERSION) { |
+ switch (currentVersion) { |
+ case 0: |
+ nativeMigrateJavascriptPreference(); |
+ break; |
+ default: |
+ break; |
+ } |
+ currentVersion++; |
+ preferences.edit().putInt(MIGRATION_PREF_KEY, currentVersion).commit(); |
newt (away)
2015/02/12 00:48:59
Why not put this at the end of the loop? Migrating
Ted C
2015/02/12 01:01:10
Done...
I was very conflicted on the style, so I'
|
+ } |
+ } |
+ |
+ /** |
* Returns the path to the user's profile directory via a callback. The callback may be |
* called synchronously or asynchronously. |
*/ |
@@ -746,6 +777,7 @@ public final class PrefServiceBridge { |
private native void nativeResetTranslateDefaults(); |
private native boolean nativeGetJavaScriptEnabled(); |
private native void nativeSetJavaScriptEnabled(boolean enabled); |
+ private native void nativeMigrateJavascriptPreference(); |
private native void nativeClearBrowsingData(boolean history, boolean cache, |
boolean cookiesAndSiteData, boolean passwords, boolean formData); |
private native void nativeSetAllowCookiesEnabled(boolean allow); |