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

Commit 46227cac authored by Pechetty Sravani's avatar Pechetty Sravani Committed by Android (Google) Code Review
Browse files

Revert "Prevent local overrides and error for RO flags"

This reverts commit 5b4994a3.

Reason for revert: Droidmonitor created revert due to b/352601172. Will be verifying through ABTD before submission.

Change-Id: I3c8136fd0c607feaa038772293e0bfad880c8070
parent 5b4994a3
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -427,7 +427,6 @@ java_defaults {
        "modules-utils-expresslog",
        "perfetto_trace_javastream_protos_jarjar",
        "libaconfig_java_proto_nano",
        "aconfig_device_paths_java",
    ],
}

+7 −24
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.internal.pm.pkg.component;

import static com.android.internal.pm.pkg.parsing.ParsingUtils.ANDROID_RES_NAMESPACE;

import android.aconfig.DevicePaths;
import android.aconfig.nano.Aconfig;
import android.aconfig.nano.Aconfig.parsed_flag;
import android.aconfig.nano.Aconfig.parsed_flags;
@@ -41,6 +40,7 @@ import org.xmlpull.v1.XmlPullParserException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
@@ -54,20 +54,20 @@ import java.util.Map;
public class AconfigFlags {
    private static final String LOG_TAG = "AconfigFlags";

    public enum Permission {
        READ_WRITE,
        READ_ONLY
    }
    private static final List<String> sTextProtoFilesOnDevice = List.of(
            "/system/etc/aconfig_flags.pb",
            "/system_ext/etc/aconfig_flags.pb",
            "/product/etc/aconfig_flags.pb",
            "/vendor/etc/aconfig_flags.pb");

    private final ArrayMap<String, Boolean> mFlagValues = new ArrayMap<>();
    private final ArrayMap<String, Permission> mFlagPermissions = new ArrayMap<>();

    public AconfigFlags() {
        if (!Flags.manifestFlagging()) {
            Slog.v(LOG_TAG, "Feature disabled, skipped all loading");
            return;
        }
        for (String fileName : DevicePaths.parsedFlagsProtoPaths()) {
        for (String fileName : sTextProtoFilesOnDevice) {
            try (var inputStream = new FileInputStream(fileName)) {
                loadAconfigDefaultValues(inputStream.readAllBytes());
            } catch (IOException e) {
@@ -184,12 +184,6 @@ public class AconfigFlags {
            Slog.v(LOG_TAG, "Read Aconfig default flag value "
                    + flagPackageAndName + " = " + flagValue);
            mFlagValues.put(flagPackageAndName, flagValue);

            Permission permission = flag.permission == Aconfig.READ_ONLY
                    ? Permission.READ_ONLY
                    : Permission.READ_WRITE;

            mFlagPermissions.put(flagPackageAndName, permission);
        }
    }

@@ -205,17 +199,6 @@ public class AconfigFlags {
        return value;
    }

    /**
     * Get the flag permission, or null if the flag doesn't exist.
     * @param flagPackageAndName Full flag name formatted as 'package.flag'
     * @return the current permission of the given Aconfig flag, or null if there is no such flag
     */
    @Nullable
    public Permission getFlagPermission(@NonNull String flagPackageAndName) {
        Permission permission = mFlagPermissions.get(flagPackageAndName);
        return permission;
    }

    /**
     * Check if the element in {@code parser} should be skipped because of the feature flag.
     * @param parser XML parser object currently parsing an element
+1 −8
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ import android.provider.Settings.Config.SyncDisabledMode;
import android.provider.UpdatableDeviceConfigServiceReadiness;
import android.util.Slog;

import com.android.internal.pm.pkg.component.AconfigFlags;
import com.android.internal.util.FastPrintWriter;

import java.io.File;
@@ -426,13 +425,7 @@ public final class DeviceConfigService extends Binder {
                    DeviceConfig.setProperty(namespace, key, value, makeDefault);
                    break;
                case OVERRIDE:
                    AconfigFlags.Permission permission =
                            (new AconfigFlags()).getFlagPermission(key);
                    if (permission == AconfigFlags.Permission.READ_ONLY) {
                        pout.println("cannot override read-only flag " + key);
                    } else {
                    DeviceConfig.setLocalOverride(namespace, key, value);
                    }
                    break;
                case CLEAR_OVERRIDE:
                    DeviceConfig.clearLocalOverride(namespace, key);