Skip to content
Snippets Groups Projects
Commit 71b041e8 authored by Alex Buynytskyy's avatar Alex Buynytskyy Committed by Android (Google) Code Review
Browse files

Revert^3 "Speed up large settings requests."

This reverts commit 33c0a886.

Reason for revert: b/319203694

Change-Id: I87963cb4bd3b0e2b3c0a36aaa152f4ebf2f17559
parent 33c0a886
No related branches found
No related tags found
No related merge requests found
......@@ -108,6 +108,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Field;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
......@@ -3584,12 +3585,10 @@ public final class Settings {
|| applicationInfo.isSignedWithPlatformKey();
}
 
private ArrayMap<String, String> getStringsForPrefixStripPrefix(
ContentResolver cr, String prefix, String[] names) {
public ArrayMap<String, String> getStringsForPrefix(ContentResolver cr, String prefix,
List<String> names) {
String namespace = prefix.substring(0, prefix.length() - 1);
ArrayMap<String, String> keyValues = new ArrayMap<>();
int substringLength = prefix.length();
int currentGeneration = -1;
boolean needsGenerationTracker = false;
 
......@@ -3614,13 +3613,10 @@ public final class Settings {
if (DEBUG) {
Log.i(TAG, "Cache hit for prefix:" + prefix);
}
if (names.length > 0) {
if (!names.isEmpty()) {
for (String name : names) {
String value = mValues.get(name);
if (value != null) {
keyValues.put(
name.substring(substringLength),
value);
if (mValues.containsKey(name)) {
keyValues.put(name, mValues.get(name));
}
}
} else {
......@@ -3629,10 +3625,7 @@ public final class Settings {
// Explicitly exclude the prefix as it is only there to
// signal that the prefix has been cached.
if (key.startsWith(prefix) && !key.equals(prefix)) {
String value = mValues.valueAt(i);
keyValues.put(
key.substring(substringLength),
value);
keyValues.put(key, mValues.get(key));
}
}
}
......@@ -3692,22 +3685,14 @@ public final class Settings {
Map<String, String> flagsToValues =
(HashMap) b.getSerializable(Settings.NameValueTable.VALUE, java.util.HashMap.class);
// Only the flags requested by the caller
if (names.length > 0) {
for (String name : names) {
String value = flagsToValues.get(name);
if (value != null) {
keyValues.put(
name.substring(substringLength),
value);
if (!names.isEmpty()) {
for (Map.Entry<String, String> flag : flagsToValues.entrySet()) {
if (names.contains(flag.getKey())) {
keyValues.put(flag.getKey(), flag.getValue());
}
}
} else {
keyValues.ensureCapacity(keyValues.size() + flagsToValues.size());
for (Map.Entry<String, String> flag : flagsToValues.entrySet()) {
keyValues.put(
flag.getKey().substring(substringLength),
flag.getValue());
}
keyValues.putAll(flagsToValues);
}
 
synchronized (NameValueCache.this) {
......@@ -19850,15 +19835,21 @@ public final class Settings {
@RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
public static Map<String, String> getStrings(@NonNull ContentResolver resolver,
@NonNull String namespace, @NonNull List<String> names) {
String[] compositeNames = new String[names.size()];
for (int i = 0, size = names.size(); i < size; ++i) {
compositeNames[i] = createCompositeName(namespace, names.get(i));
List<String> compositeNames = new ArrayList<>(names.size());
for (String name : names) {
compositeNames.add(createCompositeName(namespace, name));
}
 
String prefix = createPrefix(namespace);
ArrayMap<String, String> keyValues = sNameValueCache.getStringsForPrefixStripPrefix(
ArrayMap<String, String> rawKeyValues = sNameValueCache.getStringsForPrefix(
resolver, prefix, compositeNames);
int size = rawKeyValues.size();
int substringLength = prefix.length();
ArrayMap<String, String> keyValues = new ArrayMap<>(size);
for (int i = 0; i < size; ++i) {
keyValues.put(rawKeyValues.keyAt(i).substring(substringLength),
rawKeyValues.valueAt(i));
}
return keyValues;
}
 
......@@ -20184,13 +20175,12 @@ public final class Settings {
private static String createCompositeName(@NonNull String namespace, @NonNull String name) {
Preconditions.checkNotNull(namespace);
Preconditions.checkNotNull(name);
var sb = new StringBuilder(namespace.length() + 1 + name.length());
return sb.append(namespace).append('/').append(name).toString();
return createPrefix(namespace) + name;
}
 
private static String createPrefix(@NonNull String namespace) {
Preconditions.checkNotNull(namespace);
return namespace + '/';
return namespace + "/";
}
 
private static Uri createNamespaceUri(@NonNull String namespace) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment