Commit 8831f157 authored by Henrique Nakashima's avatar Henrique Nakashima Committed by Commit Bot

Migrate prefs used by UUID-based id generator to ChromePreferenceKeys.

Register them in ChromePreferenceKeys and use SharedPreferencesManager
consistently instead of SharedPreferences directly.

Bug: 1022108
Change-Id: Iadffe6c5d4a91ad5fde9cc481aaf9048e132d217
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1992912
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Reviewed-by: default avatarTommy Nyquist <nyquist@chromium.org>
Cr-Commit-Position: refs/heads/master@{#730212}
parent 7d49502b
...@@ -5,12 +5,11 @@ ...@@ -5,12 +5,11 @@
package org.chromium.chrome.browser.identity; package org.chromium.chrome.browser.identity;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import org.chromium.base.ContextUtils; import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import java.util.UUID; import java.util.UUID;
...@@ -29,8 +28,8 @@ public class UuidBasedUniqueIdentificationGenerator implements UniqueIdentificat ...@@ -29,8 +28,8 @@ public class UuidBasedUniqueIdentificationGenerator implements UniqueIdentificat
@Override @Override
public String getUniqueId(@Nullable String salt) { public String getUniqueId(@Nullable String salt) {
SharedPreferences preferences = ContextUtils.getAppSharedPreferences(); SharedPreferencesManager preferences = SharedPreferencesManager.getInstance();
String storedUniqueId = preferences.getString(mPreferenceKey, null); String storedUniqueId = preferences.readString(mPreferenceKey, null);
if (storedUniqueId != null) { if (storedUniqueId != null) {
return storedUniqueId; return storedUniqueId;
} }
...@@ -39,9 +38,7 @@ public class UuidBasedUniqueIdentificationGenerator implements UniqueIdentificat ...@@ -39,9 +38,7 @@ public class UuidBasedUniqueIdentificationGenerator implements UniqueIdentificat
String uniqueId = getUUID(); String uniqueId = getUUID();
// Store the field so we ensure we always return the same unique ID. // Store the field so we ensure we always return the same unique ID.
SharedPreferences.Editor editor = preferences.edit(); preferences.writeString(mPreferenceKey, uniqueId);
editor.putString(mPreferenceKey, uniqueId);
editor.apply();
return uniqueId; return uniqueId;
} }
......
...@@ -6,7 +6,6 @@ package org.chromium.chrome.browser.init; ...@@ -6,7 +6,6 @@ package org.chromium.chrome.browser.init;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build; import android.os.Build;
import android.os.SystemClock; import android.os.SystemClock;
import android.text.format.DateUtils; import android.text.format.DateUtils;
...@@ -69,6 +68,8 @@ import org.chromium.chrome.browser.ntp.NewTabPage; ...@@ -69,6 +68,8 @@ import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.partnercustomizations.HomepageManager; import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
import org.chromium.chrome.browser.photo_picker.PhotoPickerDialog; import org.chromium.chrome.browser.photo_picker.PhotoPickerDialog;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.profiles.ProfileManagerUtils; import org.chromium.chrome.browser.profiles.ProfileManagerUtils;
import org.chromium.chrome.browser.rlz.RevenueStats; import org.chromium.chrome.browser.rlz.RevenueStats;
import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider; import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;
...@@ -109,12 +110,10 @@ import java.util.Locale; ...@@ -109,12 +110,10 @@ import java.util.Locale;
public class ProcessInitializationHandler { public class ProcessInitializationHandler {
private static final String TAG = "ProcessInitHandler"; private static final String TAG = "ProcessInitHandler";
private static final String SESSIONS_UUID_PREF_KEY = "chromium.sync.sessions.id";
private static final String DEV_TOOLS_SERVER_SOCKET_PREFIX = "chrome"; private static final String DEV_TOOLS_SERVER_SOCKET_PREFIX = "chrome";
/** Prevents race conditions when deleting snapshot database. */ /** Prevents race conditions when deleting snapshot database. */
private static final Object SNAPSHOT_DATABASE_LOCK = new Object(); private static final Object SNAPSHOT_DATABASE_LOCK = new Object();
private static final String SNAPSHOT_DATABASE_REMOVED = "snapshot_database_removed";
private static final String SNAPSHOT_DATABASE_NAME = "snapshots.db"; private static final String SNAPSHOT_DATABASE_NAME = "snapshots.db";
private static ProcessInitializationHandler sInstance; private static ProcessInitializationHandler sInstance;
...@@ -183,7 +182,8 @@ public class ProcessInitializationHandler { ...@@ -183,7 +182,8 @@ public class ProcessInitializationHandler {
// in the SyncController constructor. // in the SyncController constructor.
UniqueIdentificationGeneratorFactory.registerGenerator(SyncController.GENERATOR_ID, UniqueIdentificationGeneratorFactory.registerGenerator(SyncController.GENERATOR_ID,
new UuidBasedUniqueIdentificationGenerator( new UuidBasedUniqueIdentificationGenerator(
application, SESSIONS_UUID_PREF_KEY), false); application, ChromePreferenceKeys.SYNC_SESSIONS_UUID),
false);
// Set up the DownloadCollectionBridge early as display names may be immediately retrieved // Set up the DownloadCollectionBridge early as display names may be immediately retrieved
// after native is loaded. // after native is loaded.
...@@ -640,10 +640,10 @@ public class ProcessInitializationHandler { ...@@ -640,10 +640,10 @@ public class ProcessInitializationHandler {
@WorkerThread @WorkerThread
private void removeSnapshotDatabase() { private void removeSnapshotDatabase() {
synchronized (SNAPSHOT_DATABASE_LOCK) { synchronized (SNAPSHOT_DATABASE_LOCK) {
SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); SharedPreferencesManager prefs = SharedPreferencesManager.getInstance();
if (!prefs.getBoolean(SNAPSHOT_DATABASE_REMOVED, false)) { if (!prefs.readBoolean(ChromePreferenceKeys.SNAPSHOT_DATABASE_REMOVED, false)) {
ContextUtils.getApplicationContext().deleteDatabase(SNAPSHOT_DATABASE_NAME); ContextUtils.getApplicationContext().deleteDatabase(SNAPSHOT_DATABASE_NAME);
prefs.edit().putBoolean(SNAPSHOT_DATABASE_REMOVED, true).apply(); prefs.writeBoolean(ChromePreferenceKeys.SNAPSHOT_DATABASE_REMOVED, true);
} }
} }
} }
......
...@@ -9,6 +9,7 @@ import android.content.Context; ...@@ -9,6 +9,7 @@ import android.content.Context;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator; import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator;
import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator; import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.components.sync.notifier.InvalidationClientNameGenerator; import org.chromium.components.sync.notifier.InvalidationClientNameGenerator;
import org.chromium.components.sync.notifier.InvalidationClientNameProvider; import org.chromium.components.sync.notifier.InvalidationClientNameProvider;
...@@ -19,17 +20,14 @@ import org.chromium.components.sync.notifier.InvalidationClientNameProvider; ...@@ -19,17 +20,14 @@ import org.chromium.components.sync.notifier.InvalidationClientNameProvider;
* are unique and consistent across restarts. * are unique and consistent across restarts.
*/ */
public class UniqueIdInvalidationClientNameGenerator implements InvalidationClientNameGenerator { public class UniqueIdInvalidationClientNameGenerator implements InvalidationClientNameGenerator {
// Pref key to use for UUID-based generator.
private static final String INVALIDATIONS_UUID_PREF_KEY = "chromium.invalidations.uuid";
/** /**
* Called during early init to make this InvalidationClientNameGenerator the default. * Called during early init to make this InvalidationClientNameGenerator the default.
* *
* This should be called very early during initialization to setup the invalidaiton client name. * This should be called very early during initialization to setup the invalidation client name.
*/ */
public static void doInitializeAndInstallGenerator(Context context) { public static void doInitializeAndInstallGenerator(Context context) {
UniqueIdentificationGenerator idGenerator = UniqueIdentificationGenerator idGenerator = new UuidBasedUniqueIdentificationGenerator(
new UuidBasedUniqueIdentificationGenerator(context, INVALIDATIONS_UUID_PREF_KEY); context, ChromePreferenceKeys.INVALIDATIONS_UUID_PREF_KEY);
InvalidationClientNameGenerator clientNameGenerator = InvalidationClientNameGenerator clientNameGenerator =
new UniqueIdInvalidationClientNameGenerator(idGenerator); new UniqueIdInvalidationClientNameGenerator(idGenerator);
InvalidationClientNameProvider.get().setPreferredClientNameGenerator(clientNameGenerator); InvalidationClientNameProvider.get().setPreferredClientNameGenerator(clientNameGenerator);
......
...@@ -14,6 +14,7 @@ import org.junit.runner.RunWith; ...@@ -14,6 +14,7 @@ import org.junit.runner.RunWith;
import org.chromium.base.test.util.AdvancedMockContext; import org.chromium.base.test.util.AdvancedMockContext;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
...@@ -25,6 +26,7 @@ public class UuidBasedUniqueIdentificationGeneratorTest { ...@@ -25,6 +26,7 @@ public class UuidBasedUniqueIdentificationGeneratorTest {
@Before @Before
public void setUp() { public void setUp() {
mContext = new AdvancedMockContext(InstrumentationRegistry.getTargetContext()); mContext = new AdvancedMockContext(InstrumentationRegistry.getTargetContext());
SharedPreferencesManager.getInstance().disableKeyCheckerForTesting();
} }
@Test @Test
......
...@@ -392,6 +392,11 @@ public final class ChromePreferenceKeys { ...@@ -392,6 +392,11 @@ public final class ChromePreferenceKeys {
*/ */
public static final String HOMEPAGE_LOCATION_POLICY = "Chrome.Policy.HomepageLocation"; public static final String HOMEPAGE_LOCATION_POLICY = "Chrome.Policy.HomepageLocation";
/**
* Key for UUID-based generator used for Chrome Invalidations (sync, etc.).
*/
public static final String INVALIDATIONS_UUID_PREF_KEY = "chromium.invalidations.uuid";
/** /**
* When the user is shown a badge that the current Android OS version is unsupported, and they * When the user is shown a badge that the current Android OS version is unsupported, and they
* tap it to display the menu (which has additional information), we store the current version * tap it to display the menu (which has additional information), we store the current version
...@@ -458,6 +463,10 @@ public final class ChromePreferenceKeys { ...@@ -458,6 +463,10 @@ public final class ChromePreferenceKeys {
public static final String SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED = public static final String SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED =
"settings_personalized_signin_promo_dismissed"; "settings_personalized_signin_promo_dismissed";
public static final String SNAPSHOT_DATABASE_REMOVED = "snapshot_database_removed";
public static final String SYNC_SESSIONS_UUID = "chromium.sync.sessions.id";
/** /**
* Keys for deferred recording of the outcomes of showing the clear data dialog after * Keys for deferred recording of the outcomes of showing the clear data dialog after
* Trusted Web Activity client apps are uninstalled or have their data cleared. * Trusted Web Activity client apps are uninstalled or have their data cleared.
...@@ -667,6 +676,7 @@ public final class ChromePreferenceKeys { ...@@ -667,6 +676,7 @@ public final class ChromePreferenceKeys {
HOMEPAGE_CUSTOM_URI, HOMEPAGE_CUSTOM_URI,
HOMEPAGE_ENABLED, HOMEPAGE_ENABLED,
HOMEPAGE_USE_DEFAULT_URI, HOMEPAGE_USE_DEFAULT_URI,
INVALIDATIONS_UUID_PREF_KEY,
LATEST_UNSUPPORTED_VERSION, LATEST_UNSUPPORTED_VERSION,
OFFLINE_INDICATOR_V2_ENABLED, OFFLINE_INDICATOR_V2_ENABLED,
PRIVACY_ALLOW_PRERENDER_OLD, PRIVACY_ALLOW_PRERENDER_OLD,
...@@ -686,7 +696,9 @@ public final class ChromePreferenceKeys { ...@@ -686,7 +696,9 @@ public final class ChromePreferenceKeys {
SIGNIN_PROMO_NTP_PROMO_SUPPRESSION_PERIOD_START, SIGNIN_PROMO_NTP_PROMO_SUPPRESSION_PERIOD_START,
SIGNIN_PROMO_PERSONALIZED_DECLINED, SIGNIN_PROMO_PERSONALIZED_DECLINED,
SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED, SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED,
SNAPSHOT_DATABASE_REMOVED,
START_SURFACE_SINGLE_PANE_ENABLED_KEY, START_SURFACE_SINGLE_PANE_ENABLED_KEY,
SYNC_SESSIONS_UUID,
TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_CLEAR_DATA, TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_CLEAR_DATA,
TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_UNINSTALL, TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_UNINSTALL,
TWA_DISCLOSURE_ACCEPTED_PACKAGES, TWA_DISCLOSURE_ACCEPTED_PACKAGES,
......
...@@ -65,6 +65,11 @@ public class SharedPreferencesManager { ...@@ -65,6 +65,11 @@ public class SharedPreferencesManager {
return swappedOut; return swappedOut;
} }
@VisibleForTesting
public void disableKeyCheckerForTesting() {
mKeyChecker = new BaseChromePreferenceKeyChecker();
}
/** /**
* Observes preference changes. * Observes preference changes.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment