summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java23
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java27
2 files changed, 43 insertions, 7 deletions
diff --git a/packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java b/packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java
index 0934b32a71e4..b920a17a0c1c 100644
--- a/packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java
+++ b/packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java
@@ -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
diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java
index 634763866d02..856bbeaa85e4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java
@@ -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);