Index: components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java |
diff --git a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java |
index 3af546bf3bf62115b4ff37c4ff207f4c58f6a54d..4916b72bcbd7c8252031ee9acb176be9cdad8c74 100644 |
--- a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java |
+++ b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java |
@@ -5,7 +5,6 @@ |
package org.chromium.components.variations.firstrun; |
import android.content.Context; |
-import android.content.SharedPreferences; |
import android.preference.PreferenceManager; |
import android.util.Base64; |
@@ -22,9 +21,13 @@ public final class VariationsSeedBridge { |
private static final String VARIATIONS_FIRST_RUN_SEED_SIGNATURE = "variations_seed_signature"; |
private static final String VARIATIONS_FIRST_RUN_SEED_COUNTRY = "variations_seed_country"; |
+ // This pref is used to store information about successful seed storing on the C++ side, in |
+ // order to not fetch the seed again. |
+ private static final String VARIATIONS_FIRST_RUN_SEED_NATIVE_STORED = |
+ "variations_seed_native_stored"; |
+ |
private static String getVariationsFirstRunSeedPref(Context context, String prefName) { |
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); |
- return prefs.getString(prefName, ""); |
+ return PreferenceManager.getDefaultSharedPreferences(context).getString(prefName, ""); |
} |
/** |
@@ -32,8 +35,8 @@ public final class VariationsSeedBridge { |
*/ |
public static void setVariationsFirstRunSeed( |
Context context, byte[] rawSeed, String signature, String country) { |
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); |
- prefs.edit() |
+ PreferenceManager.getDefaultSharedPreferences(context) |
+ .edit() |
.putString(VARIATIONS_FIRST_RUN_SEED_BASE64, |
Base64.encodeToString(rawSeed, Base64.NO_WRAP)) |
.putString(VARIATIONS_FIRST_RUN_SEED_SIGNATURE, signature) |
@@ -42,6 +45,41 @@ public final class VariationsSeedBridge { |
} |
@CalledByNative |
+ private static void clearFirstRunPrefs(Context context) { |
+ PreferenceManager.getDefaultSharedPreferences(context) |
+ .edit() |
+ .remove(VARIATIONS_FIRST_RUN_SEED_BASE64) |
+ .remove(VARIATIONS_FIRST_RUN_SEED_SIGNATURE) |
+ .remove(VARIATIONS_FIRST_RUN_SEED_COUNTRY) |
+ .apply(); |
+ } |
+ |
+ /** |
+ * Returns the status of the variations first run fetch: was it successful or not. |
+ */ |
+ public static boolean hasJavaPref(Context context) { |
+ return !PreferenceManager.getDefaultSharedPreferences(context) |
+ .getString(VARIATIONS_FIRST_RUN_SEED_BASE64, "") |
+ .isEmpty(); |
+ } |
+ |
+ /** |
+ * Returns the status of the variations seed storing on the C++ side: was it successful or not. |
+ */ |
+ public static boolean hasNativePref(Context context) { |
+ return PreferenceManager.getDefaultSharedPreferences(context).getBoolean( |
+ VARIATIONS_FIRST_RUN_SEED_NATIVE_STORED, false); |
+ } |
+ |
+ @CalledByNative |
+ private static void markVariationsSeedAsStored(Context context) { |
+ PreferenceManager.getDefaultSharedPreferences(context) |
+ .edit() |
+ .putBoolean(VARIATIONS_FIRST_RUN_SEED_NATIVE_STORED, true) |
+ .apply(); |
+ } |
+ |
+ @CalledByNative |
private static byte[] getVariationsFirstRunSeedData(Context context) { |
return Base64.decode( |
getVariationsFirstRunSeedPref(context, VARIATIONS_FIRST_RUN_SEED_BASE64), |