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

Commit 81dd354d authored by Dave Mankoff's avatar Dave Mankoff Committed by Automerger Merge Worker
Browse files

RESTRICT AUTOMERGE Read flag resource overrides. am: 923cd9e7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16682031

Change-Id: I785f97b354d39b005feef3c3f2d8502e3cc18847
parents 527df1e0 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);