Commit 8b4faf16 authored by Henrique Nakashima's avatar Henrique Nakashima Committed by Commit Bot

Move a SharedPref key from ToSAckedReceiver to ChromePreferenceKeys.

Use SharedPreferencesManager consistently instead of SharedPreferences
directly. Move the usages to methods in SigninPreferencesManager.

Bug: 1022108
Change-Id: Ic71a4986ecba4c33c7b7661b018533fa75f18e30
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2011286
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#733786}
parent c4596c3d
......@@ -7,17 +7,16 @@ package org.chromium.chrome.browser.firstrun;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import org.chromium.base.ContextUtils;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.init.ProcessInitializationHandler;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.components.signin.AccountManagerFacade;
import org.chromium.content_public.browser.UiThreadTaskTraits;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
......@@ -26,7 +25,6 @@ import java.util.Set;
* the Chrome ToS so that we don't show the ToS string during our first run.
*/
public class ToSAckedReceiver extends BroadcastReceiver {
static final String TOS_ACKED_ACCOUNTS = "ToS acknowledged accounts";
static final String EXTRA_ACCOUNT_NAME = "TosAckedReceiver.account";
@Override
......@@ -38,13 +36,8 @@ public class ToSAckedReceiver extends BroadcastReceiver {
String accountName = args.getString(EXTRA_ACCOUNT_NAME, null);
if (accountName == null) return;
SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
// Make sure to construct a new set so it can be modified safely. See crbug.com/568369.
Set<String> accounts =
new HashSet<String>(prefs.getStringSet(TOS_ACKED_ACCOUNTS, new HashSet<String>()));
accounts.add(accountName);
prefs.edit().remove(TOS_ACKED_ACCOUNTS).apply();
prefs.edit().putStringSet(TOS_ACKED_ACCOUNTS, accounts).apply();
SharedPreferencesManager prefs = SharedPreferencesManager.getInstance();
prefs.addToStringSet(ChromePreferenceKeys.TOS_ACKED_ACCOUNTS, accountName);
}
/**
......@@ -54,9 +47,8 @@ public class ToSAckedReceiver extends BroadcastReceiver {
public static boolean checkAnyUserHasSeenToS() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) return false;
Set<String> toSAckedAccounts =
ContextUtils.getAppSharedPreferences().getStringSet(
TOS_ACKED_ACCOUNTS, null);
Set<String> toSAckedAccounts = SharedPreferencesManager.getInstance().readStringSet(
ChromePreferenceKeys.TOS_ACKED_ACCOUNTS, null);
if (toSAckedAccounts == null || toSAckedAccounts.isEmpty()) return false;
PostTask.runSynchronously(UiThreadTaskTraits.DEFAULT,
() -> { ProcessInitializationHandler.getInstance().initializePreNative(); });
......
......@@ -18,8 +18,9 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
import org.chromium.base.ContextUtils;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.components.signin.AccountManagerDelegate;
import org.chromium.components.signin.AccountManagerDelegateException;
import org.chromium.components.signin.AccountManagerFacade;
......@@ -53,8 +54,8 @@ public class ToSAckedReceiverTest {
mReceiver.onReceive(RuntimeEnvironment.application, intent);
Assert.assertFalse(ToSAckedReceiver.checkAnyUserHasSeenToS());
Set<String> toSAckedAccounts = ContextUtils.getAppSharedPreferences().getStringSet(
ToSAckedReceiver.TOS_ACKED_ACCOUNTS, new HashSet<>());
Set<String> toSAckedAccounts = SharedPreferencesManager.getInstance().readStringSet(
ChromePreferenceKeys.TOS_ACKED_ACCOUNTS, new HashSet<>());
Assert.assertThat(toSAckedAccounts, Matchers.contains(GOOGLE_ACCOUNT));
AccountManagerDelegate accountManagerDelegate = Mockito.mock(AccountManagerDelegate.class);
......
......@@ -574,6 +574,8 @@ public final class ChromePreferenceKeys {
public static final String TAB_ID_MANAGER_NEXT_ID =
"org.chromium.chrome.browser.tab.TabIdManager.NEXT_ID";
public static final String TOS_ACKED_ACCOUNTS = "ToS acknowledged accounts";
/**
* 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.
......@@ -854,6 +856,7 @@ public final class ChromePreferenceKeys {
SYNC_SESSIONS_UUID,
TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF,
TAB_ID_MANAGER_NEXT_ID,
TOS_ACKED_ACCOUNTS,
TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_CLEAR_DATA,
TWA_DIALOG_NUMBER_OF_DISMISSALS_ON_UNINSTALL,
TWA_DISCLOSURE_ACCEPTED_PACKAGES,
......
......@@ -127,6 +127,7 @@ public class SharedPreferencesManager {
*/
public void addToStringSet(String key, String value) {
mKeyChecker.checkIsKeyInUse(key);
// Construct a new set so it can be modified safely. See crbug.com/568369.
Set<String> values = new HashSet<>(
ContextUtils.getAppSharedPreferences().getStringSet(key, Collections.emptySet()));
values.add(value);
......@@ -138,6 +139,7 @@ public class SharedPreferencesManager {
*/
public void removeFromStringSet(String key, String value) {
mKeyChecker.checkIsKeyInUse(key);
// Construct a new set so it can be modified safely. See crbug.com/568369.
Set<String> values = new HashSet<>(
ContextUtils.getAppSharedPreferences().getStringSet(key, Collections.emptySet()));
if (values.remove(value)) {
......
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