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

Commit debbf88d authored by Dave Mankoff's avatar Dave Mankoff Committed by Android (Google) Code Review
Browse files

Merge "RESTRICT AUTOMERGE Read flag resource overrides." into sc-v2-dev

parents cfe57a8e 923cd9e7
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -16,12 +16,15 @@

package com.android.systemui.flags;

import android.content.res.Resources;
import android.util.SparseBooleanArray;

import androidx.annotation.BoolRes;
import androidx.annotation.NonNull;

import com.android.systemui.Dumpable;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;

import java.io.FileDescriptor;
@@ -38,8 +41,11 @@ import javax.inject.Inject;
@SysUISingleton
public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
    SparseBooleanArray mAccessedFlags = new SparseBooleanArray();
    private Resources mResources;

    @Inject
    public FeatureFlagManager(DumpManager dumpManager) {
    public FeatureFlagManager(DumpManager dumpManager, @Main Resources resources) {
        mResources = resources;
        dumpManager.registerDumpable("SysUIFlags", this);
    }

@@ -51,7 +57,20 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {

    @Override
    public boolean isEnabled(BooleanFlag flag) {
        return isEnabled(flag.getId(), flag.getDefault());
        boolean def = flag.getDefault();
        if (flag.hasResourceOverride()) {
            try {
                def = isEnabledInOverlay(flag.getResourceOverride());
            } catch (Resources.NotFoundException e) {
                // no-op
            }
        }

        return isEnabled(flag.getId(), def);
    }

    private boolean isEnabledInOverlay(@BoolRes int resId) {
        return mResources.getBoolean(resId);
    }

    @Override
+22 −5
Original line number Diff line number Diff line
@@ -25,15 +25,14 @@ 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 static org.mockito.Mockito.when;

import android.content.Context;
import android.content.res.Resources;

import androidx.test.filters.SmallTest;

import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.util.settings.SecureSettings;

import org.junit.After;
import org.junit.Before;
@@ -53,14 +52,14 @@ import java.io.StringWriter;
public class FeatureFlagManagerTest extends SysuiTestCase {
    FeatureFlagManager mFeatureFlagManager;

    @Mock private Context mContext;
    @Mock private DumpManager mDumpManager;
    @Mock private Resources mResources;

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

        mFeatureFlagManager = new FeatureFlagManager(mDumpManager);
        mFeatureFlagManager = new FeatureFlagManager(mDumpManager, mResources);
    }

    @After
@@ -70,6 +69,24 @@ public class FeatureFlagManagerTest extends SysuiTestCase {
        verifyNoMoreInteractions(mDumpManager);
    }


    @Test
    public void testSimpleFlag() {
        BooleanFlag flagA = new BooleanFlag(100, false);
        BooleanFlag flagB = new BooleanFlag(200, true);

        assertThat(mFeatureFlagManager.isEnabled(flagA)).isFalse();
        assertThat(mFeatureFlagManager.isEnabled(flagB)).isTrue();
    }

    @Test
    public void testResourceOverride() {
        when(mResources.getBoolean(1)).thenReturn(true);
        BooleanFlag flag = new BooleanFlag(100, false, 1);

        assertThat(mFeatureFlagManager.isEnabled(flag)).isTrue();
    }

    @Test
    public void testIsEnabled() {
        mFeatureFlagManager.setEnabled(1, true);