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:
committed by
Android Build Coastguard Worker
parent
5e7baf6324
commit
e392af2817
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user