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

Commit 0d682a07 authored by Ted Bauer's avatar Ted Bauer Committed by Android (Google) Code Review
Browse files

Merge "Create separate `list_local_overrides` command." into main

parents 27d0b279 4870093a
Loading
Loading
Loading
Loading
+40 −50
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.providers.settings;
import static android.provider.Settings.Config.SYNC_DISABLED_MODE_NONE;
import static android.provider.Settings.Config.SYNC_DISABLED_MODE_PERSISTENT;
import static android.provider.Settings.Config.SYNC_DISABLED_MODE_UNTIL_REBOOT;

import static com.android.providers.settings.Flags.supportOverrides;

import android.annotation.SuppressLint;
@@ -180,6 +181,7 @@ public final class DeviceConfigService extends Binder {
            DELETE,
            LIST,
            LIST_NAMESPACES,
            LIST_LOCAL_OVERRIDES,
            RESET,
            SET_SYNC_DISABLED_FOR_TESTS,
            GET_SYNC_DISABLED_FOR_TESTS,
@@ -266,6 +268,11 @@ public final class DeviceConfigService extends Binder {
                if (peekNextArg() == null) {
                    isValid = true;
                }
            } else if (supportOverrides() && "list_local_overrides".equalsIgnoreCase(cmd)) {
                verb = CommandVerb.LIST_LOCAL_OVERRIDES;
                if (peekNextArg() == null) {
                    isValid = true;
                }
            } else if ("reset".equalsIgnoreCase(cmd)) {
                verb = CommandVerb.RESET;
            } else if ("set_sync_disabled_for_tests".equalsIgnoreCase(cmd)) {
@@ -418,62 +425,29 @@ public final class DeviceConfigService extends Binder {
                            : "Failed to delete " + key + " from " + namespace);
                    break;
                case LIST:
                    if (supportOverrides()) {
                        pout.println("Server overrides:");

                        Map<String, Map<String, String>> underlyingValues =
                                DeviceConfig.getUnderlyingValuesForOverriddenFlags();

                    if (namespace != null) {
                        DeviceConfig.Properties properties =
                                DeviceConfig.getProperties(namespace);
                        List<String> keys = new ArrayList<>(properties.getKeyset());
                        Collections.sort(keys);
                        for (String name : keys) {
                                String valueReadFromDeviceConfig = properties.getString(name, null);
                                String underlyingValue = underlyingValues.get(namespace).get(name);
                                String printValue = underlyingValue != null
                                        ? underlyingValue
                                        : valueReadFromDeviceConfig;
                                pout.println(name + "=" + printValue);
                            pout.println(name + "=" + properties.getString(name, null));
                        }
                    } else {
                        for (String line : listAll(iprovider)) {
                                boolean isPrivateNamespace = false;
                            if (supportOverrides()) {
                                boolean isPrivate = false;
                                for (String privateNamespace : PRIVATE_NAMESPACES) {
                                    if (line.startsWith(privateNamespace)) {
                                        isPrivateNamespace = true;
                                    }
                                }
                                if (!isPrivateNamespace) {
                                    pout.println(line);
                                }
                                        isPrivate = true;
                                        break;
                                    }
                                }

                        pout.println("");
                        pout.println("Local overrides (these take precedence):");
                        for (String overrideNamespace : underlyingValues.keySet()) {
                            Map<String, String> flagToValue =
                                    underlyingValues.get(overrideNamespace);
                            for (String flag : flagToValue.keySet()) {
                                String flagText = overrideNamespace + "/" + flag;
                                String valueText =
                                        DeviceConfig.getProperty(overrideNamespace, flag);
                                pout.println(flagText + "=" + valueText);
                            }
                        }
                    } else {
                        if (namespace != null) {
                            DeviceConfig.Properties properties =
                                    DeviceConfig.getProperties(namespace);
                            List<String> keys = new ArrayList<>(properties.getKeyset());
                            Collections.sort(keys);
                            for (String name : keys) {
                                pout.println(name + "=" + properties.getString(name, null));
                                if (!isPrivate) {
                                    pout.println(line);
                                }
                            } else {
                            for (String line : listAll(iprovider)) {
                                pout.println(line);
                            }
                        }
@@ -503,6 +477,22 @@ public final class DeviceConfigService extends Binder {
                        pout.println(namespaces.get(i));
                    }
                    break;
                case LIST_LOCAL_OVERRIDES:
                    if (supportOverrides()) {
                        Map<String, Map<String, String>> underlyingValues =
                                DeviceConfig.getUnderlyingValuesForOverriddenFlags();
                        for (String overrideNamespace : underlyingValues.keySet()) {
                            Map<String, String> flagToValue =
                                    underlyingValues.get(overrideNamespace);
                            for (String flag : flagToValue.keySet()) {
                                String flagText = overrideNamespace + "/" + flag;
                                String valueText =
                                        DeviceConfig.getProperty(overrideNamespace, flag);
                                pout.println(flagText + "=" + valueText);
                            }
                        }
                    }
                    break;
                case RESET:
                    DeviceConfig.resetToDefaults(resetMode, namespace);
                    break;