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

Commit 86b8e77b authored by Jeff DeCew's avatar Jeff DeCew
Browse files

Make gradle build use debuggable FeatureFlagManager

Fixes: 204129347
Test: gradle build & dump
Change-Id: I06ba95f4cc21b06519e676afee4bb6ae9c44c03e
parent 91da8a29
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -52,12 +52,18 @@ java_library {

filegroup {
    name: "ReleaseJavaFiles",
    srcs: ["src/com/android/systemui/flags/FeatureFlagManager.java"],
    srcs: [
        "src-release/**/*.kt",
        "src-release/**/*.java",
    ],
}

filegroup {
    name: "DebugJavaFiles",
    srcs: ["src-debug/com/android/systemui/flags/FeatureFlagManager.java"],
    srcs: [
        "src-debug/**/*.kt",
        "src-debug/**/*.java",
    ],
}

android_library {
@@ -66,6 +72,8 @@ android_library {
        "src/**/*.kt",
        "src/**/*.java",
        "src/**/I*.aidl",
        "src-release/**/*.kt",
        "src-release/**/*.java",
    ],
    product_variables: {
        debuggable: {
@@ -159,6 +167,8 @@ android_library {
        "src/**/*.kt",
        "src/**/*.java",
        "src/**/I*.aidl",
        "src-release/**/*.kt",
        "src-release/**/*.java",
    ],
    static_libs: [
        "SystemUIAnimationLib",
+5 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
    }

    /** Return a {@link BooleanFlag}'s value. */
    @Override
    public boolean isEnabled(int id, boolean defaultValue) {
        if (!mBooleanFlagCache.containsKey(id)) {
            Boolean result = isEnabledInternal(id);
@@ -105,6 +106,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
    }

    /** Set whether a given {@link BooleanFlag} is enabled or not. */
    @Override
    public void setEnabled(int id, boolean value) {
        Boolean currentValue = isEnabledInternal(id);
        if (currentValue != null && currentValue == value) {
@@ -136,8 +138,10 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
        Log.i(TAG, "Erase id " + id);
    }

    @Override
    public void addListener(Listener run) {}

    @Override
    public void removeListener(Listener run) {}

    private void restartSystemUI() {
@@ -198,6 +202,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {

    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        pw.println("can override: true");
        ArrayList<String> flagStrings = new ArrayList<>(mBooleanFlagCache.size());
        for (Map.Entry<Integer, Boolean> entry : mBooleanFlagCache.entrySet()) {
            flagStrings.add("  sysui_flag_" + entry.getKey() + ": " + entry.getValue());
+6 −5
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.flags;

import android.content.Context;
import android.util.SparseBooleanArray;

import androidx.annotation.NonNull;
@@ -39,21 +40,21 @@ import javax.inject.Inject;
public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
    SparseBooleanArray mAccessedFlags = new SparseBooleanArray();
    @Inject
    public FeatureFlagManager(DumpManager dumpManager) {
    public FeatureFlagManager(SystemPropertiesHelper systemPropertiesHelper, Context context,
            DumpManager dumpManager) {
        dumpManager.registerDumpable("SysUIFlags", this);
    }
    public boolean isEnabled(String key, boolean defaultValue) {
        return defaultValue;
    }
    @Override
    public boolean isEnabled(int key, boolean defaultValue) {
        mAccessedFlags.append(key, defaultValue);
        return defaultValue;
    }
    public void setEnabled(String key, boolean value) {}
    @Override
    public void setEnabled(int key, boolean value) {}

    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        pw.println("can override: false");
        int size = mAccessedFlags.size();
        for (int i = 0; i < size; i++) {
            pw.println("  sysui_flag_" + mAccessedFlags.keyAt(i)
+25 −1
Original line number Diff line number Diff line
@@ -20,13 +20,21 @@ import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions;

import android.content.Context;

import androidx.test.filters.SmallTest;

import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
@@ -36,17 +44,33 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.StringWriter;

/**
 * NOTE: This test is for the version of FeatureFlagManager in src-release, which should not allow
 * overriding, and should never return any value other than the one provided as the default.
 */
@SmallTest
public class FeatureFlagManagerTest extends SysuiTestCase {
    FeatureFlagManager mFeatureFlagManager;

    @Mock private SystemPropertiesHelper mProps;
    @Mock private Context mContext;
    @Mock private DumpManager mDumpManager;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);

        mFeatureFlagManager = new FeatureFlagManager(mDumpManager);
        mFeatureFlagManager = new FeatureFlagManager(mProps, mContext, mDumpManager);
    }

    @After
    public void onFinished() {
        // SystemPropertiesHelper and Context are provided for constructor consistency with the
        // debug version of the FeatureFlagManager, but should never be used.
        verifyZeroInteractions(mProps, mContext);
        // The dump manager should be registered with even for the release version, but that's it.
        verify(mDumpManager).registerDumpable(anyString(), any());
        verifyNoMoreInteractions(mDumpManager);
    }

    @Test