| 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..d2332b48a8c42ea4b7df49b9763cbf8e0f4729a5 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,25 @@ 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) return;
|
| + 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.");
|
| + }
|
| +
|
| + if (currentVersion <= 0) {
|
| + nativeMigrateJavascriptPreference();
|
| + }
|
| + preferences.edit().putInt(MIGRATION_PREF_KEY, MIGRATION_CURRENT_VERSION).commit();
|
| + }
|
| +
|
| + /**
|
| * Returns the path to the user's profile directory via a callback. The callback may be
|
| * called synchronously or asynchronously.
|
| */
|
| @@ -746,6 +772,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);
|
|
|