Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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
Loading
Loading
Loading
Loading
+25 −35
Original line number Diff line number Diff line
@@ -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) {