RESTRICT AUTOMERGE Read flag resource overrides.

We were only reading resource overrides on debug builds, not
release builds.

This issue is already addressed in the main branch.

Fixes: 210114714
Test: atest SystemUITests
Change-Id: I40eb02d73faa4c2476d2a4e136e08c6dcd7795a2
(cherry picked from commit 923cd9e73e)
Merged-In:I40eb02d73faa4c2476d2a4e136e08c6dcd7795a2
This commit is contained in:
Dave Mankoff
2022-01-20 11:36:29 -05:00
committed by Android Build Coastguard Worker
parent 5e7baf6324
commit e392af2817
2 changed files with 43 additions and 7 deletions

View File

@@ -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

View File

@@ -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);