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 @@
package org.chromium.chrome.browser.identity;
import android.content.Context;
import android.content.SharedPreferences;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import java.util.UUID;
......@@ -29,8 +28,8 @@ public class UuidBasedUniqueIdentificationGenerator implements UniqueIdentificat
@Override
public String getUniqueId(@Nullable String salt) {
SharedPreferences preferences = ContextUtils.getAppSharedPreferences();
String storedUniqueId = preferences.getString(mPreferenceKey, null);
SharedPreferencesManager preferences = SharedPreferencesManager.getInstance();
String storedUniqueId = preferences.readString(mPreferenceKey, null);
if (storedUniqueId != null) {
return storedUniqueId;
}
......@@ -39,9 +38,7 @@ public class UuidBasedUniqueIdentificationGenerator implements UniqueIdentificat
String uniqueId = getUUID();
// Store the field so we ensure we always return the same unique ID.
SharedPreferences.Editor editor = preferences.edit();
editor.putString(mPreferenceKey, uniqueId);
editor.apply();
preferences.writeString(mPreferenceKey, uniqueId);
return uniqueId;
}
......
......@@ -6,7 +6,6 @@ package org.chromium.chrome.browser.init;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.SystemClock;
import android.text.format.DateUtils;
......@@ -69,6 +68,8 @@ import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
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.rlz.RevenueStats;
import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;
......@@ -109,12 +110,10 @@ import java.util.Locale;
public class ProcessInitializationHandler {
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";
/** Prevents race conditions when deleting snapshot database. */
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 ProcessInitializationHandler sInstance;
......@@ -183,7 +182,8 @@ public class ProcessInitializationHandler {
// in the SyncController constructor.
UniqueIdentificationGeneratorFactory.registerGenerator(SyncController.GENERATOR_ID,
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
// after native is loaded.
......@@ -640,10 +640,10 @@ public class ProcessInitializationHandler {
@WorkerThread
private void removeSnapshotDatabase() {
synchronized (SNAPSHOT_DATABASE_LOCK) {
SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
if (!prefs.getBoolean(SNAPSHOT_DATABASE_REMOVED, false)) {
SharedPreferencesManager prefs = SharedPreferencesManager.getInstance();
if (!prefs.readBoolean(ChromePreferenceKeys.SNAPSHOT_DATABASE_REMOVED, false)) {
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;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator;
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.InvalidationClientNameProvider;
......@@ -19,17 +20,14 @@ import org.chromium.components.sync.notifier.InvalidationClientNameProvider;
* are unique and consistent across restarts.
*/
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.
*
* 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) {
UniqueIdentificationGenerator idGenerator =
new UuidBasedUniqueIdentificationGenerator(context, INVALIDATIONS_UUID_PREF_KEY);
UniqueIdentificationGenerator idGenerator = new UuidBasedUniqueIdentificationGenerator(
context, ChromePreferenceKeys.INVALIDATIONS_UUID_PREF_KEY);
InvalidationClientNameGenerator clientNameGenerator =
new UniqueIdInvalidationClientNameGenerator(idGenerator);
InvalidationClientNameProvider.get().setPreferredClientNameGenerator(clientNameGenerator);
......
......@@ -14,6 +14,7 @@ import org.junit.runner.RunWith;
import org.chromium.base.test.util.AdvancedMockContext;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
@RunWith(ChromeJUnit4ClassRunner.class)
......@@ -25,6 +26,7 @@ public class UuidBasedUniqueIdentificationGeneratorTest {
@Before
public void setUp() {
mContext = new AdvancedMockContext(InstrumentationRegistry.getTargetContext());
SharedPreferencesManager.getInstance().disableKeyCheckerForTesting();
}
@Test
......
......@@ -392,6 +392,11 @@ public final class ChromePreferenceKeys {
*/
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
* tap it to display the menu (which has additional information), we store the current version
......@@ -458,6 +463,10 @@ public final class ChromePreferenceKeys {
public static final String SIGNIN_PROMO_SETTINGS_PERSONALIZED_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
* Trusted Web Activity client apps are uninstalled or have their data cleared.
......@@ -667,6 +676,7 @@ public final class ChromePreferenceKeys {
HOMEPAGE_CUSTOM_URI,
HOMEPAGE_ENABLED,
HOMEPAGE_USE_DEFAULT_URI,
INVALIDATIONS_UUID_PREF_KEY,
LATEST_UNSUPPORTED_VERSION,
OFFLINE_INDICATOR_V2_ENABLED,
PRIVACY_ALLOW_PRERENDER_OLD,
......@@ -686,7 +696,9 @@ public final class ChromePreferenceKeys {
SIGNIN_PROMO_NTP_PROMO_SUPPRESSION_PERIOD_START,
SIGNIN_PROMO_PERSONALIZED_DECLINED,
SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED,
SNAPSHOT_DATABASE_REMOVED,
START_SURFACE_SINGLE_PANE_ENABLED_KEY,
SYNC_SESSIONS_UUID,
TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_CLEAR_DATA,
TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_UNINSTALL,
TWA_DISCLOSURE_ACCEPTED_PACKAGES,
......
......@@ -65,6 +65,11 @@ public class SharedPreferencesManager {
return swappedOut;
}
@VisibleForTesting
public void disableKeyCheckerForTesting() {
mKeyChecker = new BaseChromePreferenceKeyChecker();
}
/**
* 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