diff options
author | Dave Mankoff <mankoff@google.com> | 2022-01-20 11:36:29 -0500 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-01-21 01:28:21 +0000 |
commit | e392af28174684e1cf14e84fab4e11e2389b8a17 (patch) | |
tree | aa666705bb29f5ef58627287f72a2a81bb9b9832 | |
parent | 5e7baf632495b35b8f553fb342d8fab21492b96d (diff) | |
download | base-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.java | 23 | ||||
-rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java | 27 |
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); |