| Index: chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunGlueImpl.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunGlueImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunGlueImpl.java
|
| index a07eb1abc6b7a3ac558e5b0d1d344bdcca5f0b0a..3a7f7add7cc0c8fd87e23776efb2e081d3027977 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunGlueImpl.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunGlueImpl.java
|
| @@ -6,8 +6,10 @@ package org.chromium.chrome.browser.firstrun;
|
|
|
| import android.app.Fragment;
|
| import android.content.Context;
|
| +import android.content.SharedPreferences;
|
| import android.text.TextUtils;
|
|
|
| +import org.chromium.base.ContextUtils;
|
| import org.chromium.chrome.browser.metrics.UmaSessionStats;
|
| import org.chromium.chrome.browser.preferences.PrefServiceBridge;
|
| import org.chromium.chrome.browser.signin.AccountAdder;
|
| @@ -19,15 +21,36 @@ import java.util.List;
|
| * Provides preferences glue for FirstRunActivity.
|
| */
|
| public class FirstRunGlueImpl implements FirstRunGlue {
|
| + private static final String CACHED_TOS_ACCEPTED_PREF = "first_run_tos_accepted";
|
| +
|
| + /**
|
| + * Synchronizes first run native and Java preferences. Previous versions would
|
| + * set only the native pref so this function synchronizes that state to Java.
|
| + * Must be called after native initialization.
|
| + */
|
| + public static void cacheFirstRunPrefs() {
|
| + SharedPreferences javaPrefs = ContextUtils.getAppSharedPreferences();
|
| + if (!javaPrefs.getBoolean(CACHED_TOS_ACCEPTED_PREF, false)
|
| + && PrefServiceBridge.getInstance().isFirstRunEulaAccepted()) {
|
| + javaPrefs.edit().putBoolean(CACHED_TOS_ACCEPTED_PREF, true).apply();
|
| + }
|
| + }
|
| +
|
| @Override
|
| public boolean didAcceptTermsOfService(Context appContext) {
|
| - return ToSAckedReceiver.checkAnyUserHasSeenToS(appContext)
|
| - || PrefServiceBridge.getInstance().isFirstRunEulaAccepted();
|
| + // Note: Does not check PrefServiceBridge.getInstance().isFirstRunEulaAccepted()
|
| + // because this may be called before native is initialized.
|
| + return ContextUtils.getAppSharedPreferences().getBoolean(CACHED_TOS_ACCEPTED_PREF, false)
|
| + || ToSAckedReceiver.checkAnyUserHasSeenToS(appContext);
|
| }
|
|
|
| @Override
|
| public void acceptTermsOfService(boolean allowCrashUpload) {
|
| UmaSessionStats.changeMetricsReportingConsent(allowCrashUpload);
|
| + ContextUtils.getAppSharedPreferences()
|
| + .edit()
|
| + .putBoolean(CACHED_TOS_ACCEPTED_PREF, true)
|
| + .apply();
|
| PrefServiceBridge.getInstance().setEulaAccepted();
|
| }
|
|
|
|
|