summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Mankoff <mankoff@google.com>2022-01-20 11:36:29 -0500
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-01-21 01:28:21 +0000
commite392af28174684e1cf14e84fab4e11e2389b8a17 (patch)
treeaa666705bb29f5ef58627287f72a2a81bb9b9832
parent5e7baf632495b35b8f553fb342d8fab21492b96d (diff)
downloadbase-e392af28174684e1cf14e84fab4e11e2389b8a17.tar.gz
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 923cd9e73ea4facb1e11a79db6865340fcc2a907) Merged-In:I40eb02d73faa4c2476d2a4e136e08c6dcd7795a2
-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);