Loading packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java +21 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); } Loading @@ -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 Loading packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java +22 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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); Loading Loading
packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java +21 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); } Loading @@ -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 Loading
packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java +22 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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); Loading