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

Commit d2984e95 authored by Jeff DeCew's avatar Jeff DeCew Committed by Android (Google) Code Review
Browse files

Merge "Make gradle build use debuggable FeatureFlagManager" into sc-v2-dev

parents e87ac876 86b8e77b
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