Loading packages/SystemUI/Android.bp +12 −2 Original line number Diff line number Diff line Loading @@ -52,12 +52,18 @@ java_library { filegroup { name: "ReleaseJavaFiles", srcs: ["src/com/android/systemui/flags/FeatureFlagManager.java"], srcs: [ "src-release/**/*.kt", "src-release/**/*.java", ], } filegroup { name: "DebugJavaFiles", srcs: ["src-debug/com/android/systemui/flags/FeatureFlagManager.java"], srcs: [ "src-debug/**/*.kt", "src-debug/**/*.java", ], } android_library { Loading @@ -66,6 +72,8 @@ android_library { "src/**/*.kt", "src/**/*.java", "src/**/I*.aidl", "src-release/**/*.kt", "src-release/**/*.java", ], product_variables: { debuggable: { Loading Loading @@ -159,6 +167,8 @@ android_library { "src/**/*.kt", "src/**/*.java", "src/**/I*.aidl", "src-release/**/*.kt", "src-release/**/*.java", ], static_libs: [ "SystemUIAnimationLib", Loading packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { } /** Return a {@link BooleanFlag}'s value. */ @Override public boolean isEnabled(int id, boolean defaultValue) { if (!mBooleanFlagCache.containsKey(id)) { Boolean result = isEnabledInternal(id); Loading Loading @@ -105,6 +106,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { } /** Set whether a given {@link BooleanFlag} is enabled or not. */ @Override public void setEnabled(int id, boolean value) { Boolean currentValue = isEnabledInternal(id); if (currentValue != null && currentValue == value) { Loading Loading @@ -136,8 +138,10 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { Log.i(TAG, "Erase id " + id); } @Override public void addListener(Listener run) {} @Override public void removeListener(Listener run) {} private void restartSystemUI() { Loading Loading @@ -198,6 +202,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { pw.println("can override: true"); ArrayList<String> flagStrings = new ArrayList<>(mBooleanFlagCache.size()); for (Map.Entry<Integer, Boolean> entry : mBooleanFlagCache.entrySet()) { flagStrings.add(" sysui_flag_" + entry.getKey() + ": " + entry.getValue()); Loading packages/SystemUI/src/com/android/systemui/flags/FeatureFlagManager.java→packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java +6 −5 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.flags; import android.content.Context; import android.util.SparseBooleanArray; import androidx.annotation.NonNull; Loading @@ -39,21 +40,21 @@ import javax.inject.Inject; public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { SparseBooleanArray mAccessedFlags = new SparseBooleanArray(); @Inject public FeatureFlagManager(DumpManager dumpManager) { public FeatureFlagManager(SystemPropertiesHelper systemPropertiesHelper, Context context, DumpManager dumpManager) { dumpManager.registerDumpable("SysUIFlags", this); } public boolean isEnabled(String key, boolean defaultValue) { return defaultValue; } @Override public boolean isEnabled(int key, boolean defaultValue) { mAccessedFlags.append(key, defaultValue); return defaultValue; } public void setEnabled(String key, boolean value) {} @Override public void setEnabled(int key, boolean value) {} @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { pw.println("can override: false"); int size = mAccessedFlags.size(); for (int i = 0; i < size; i++) { pw.println(" sysui_flag_" + mAccessedFlags.keyAt(i) Loading packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java +25 −1 Original line number Diff line number Diff line Loading @@ -20,13 +20,21 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; 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 android.content.Context; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; Loading @@ -36,17 +44,33 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.io.StringWriter; /** * NOTE: This test is for the version of FeatureFlagManager in src-release, which should not allow * overriding, and should never return any value other than the one provided as the default. */ @SmallTest public class FeatureFlagManagerTest extends SysuiTestCase { FeatureFlagManager mFeatureFlagManager; @Mock private SystemPropertiesHelper mProps; @Mock private Context mContext; @Mock private DumpManager mDumpManager; @Before public void setup() { MockitoAnnotations.initMocks(this); mFeatureFlagManager = new FeatureFlagManager(mDumpManager); mFeatureFlagManager = new FeatureFlagManager(mProps, mContext, mDumpManager); } @After public void onFinished() { // SystemPropertiesHelper and Context are provided for constructor consistency with the // debug version of the FeatureFlagManager, but should never be used. verifyZeroInteractions(mProps, mContext); // The dump manager should be registered with even for the release version, but that's it. verify(mDumpManager).registerDumpable(anyString(), any()); verifyNoMoreInteractions(mDumpManager); } @Test Loading Loading
packages/SystemUI/Android.bp +12 −2 Original line number Diff line number Diff line Loading @@ -52,12 +52,18 @@ java_library { filegroup { name: "ReleaseJavaFiles", srcs: ["src/com/android/systemui/flags/FeatureFlagManager.java"], srcs: [ "src-release/**/*.kt", "src-release/**/*.java", ], } filegroup { name: "DebugJavaFiles", srcs: ["src-debug/com/android/systemui/flags/FeatureFlagManager.java"], srcs: [ "src-debug/**/*.kt", "src-debug/**/*.java", ], } android_library { Loading @@ -66,6 +72,8 @@ android_library { "src/**/*.kt", "src/**/*.java", "src/**/I*.aidl", "src-release/**/*.kt", "src-release/**/*.java", ], product_variables: { debuggable: { Loading Loading @@ -159,6 +167,8 @@ android_library { "src/**/*.kt", "src/**/*.java", "src/**/I*.aidl", "src-release/**/*.kt", "src-release/**/*.java", ], static_libs: [ "SystemUIAnimationLib", Loading
packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { } /** Return a {@link BooleanFlag}'s value. */ @Override public boolean isEnabled(int id, boolean defaultValue) { if (!mBooleanFlagCache.containsKey(id)) { Boolean result = isEnabledInternal(id); Loading Loading @@ -105,6 +106,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { } /** Set whether a given {@link BooleanFlag} is enabled or not. */ @Override public void setEnabled(int id, boolean value) { Boolean currentValue = isEnabledInternal(id); if (currentValue != null && currentValue == value) { Loading Loading @@ -136,8 +138,10 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { Log.i(TAG, "Erase id " + id); } @Override public void addListener(Listener run) {} @Override public void removeListener(Listener run) {} private void restartSystemUI() { Loading Loading @@ -198,6 +202,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { pw.println("can override: true"); ArrayList<String> flagStrings = new ArrayList<>(mBooleanFlagCache.size()); for (Map.Entry<Integer, Boolean> entry : mBooleanFlagCache.entrySet()) { flagStrings.add(" sysui_flag_" + entry.getKey() + ": " + entry.getValue()); Loading
packages/SystemUI/src/com/android/systemui/flags/FeatureFlagManager.java→packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java +6 −5 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.flags; import android.content.Context; import android.util.SparseBooleanArray; import androidx.annotation.NonNull; Loading @@ -39,21 +40,21 @@ import javax.inject.Inject; public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { SparseBooleanArray mAccessedFlags = new SparseBooleanArray(); @Inject public FeatureFlagManager(DumpManager dumpManager) { public FeatureFlagManager(SystemPropertiesHelper systemPropertiesHelper, Context context, DumpManager dumpManager) { dumpManager.registerDumpable("SysUIFlags", this); } public boolean isEnabled(String key, boolean defaultValue) { return defaultValue; } @Override public boolean isEnabled(int key, boolean defaultValue) { mAccessedFlags.append(key, defaultValue); return defaultValue; } public void setEnabled(String key, boolean value) {} @Override public void setEnabled(int key, boolean value) {} @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { pw.println("can override: false"); int size = mAccessedFlags.size(); for (int i = 0; i < size; i++) { pw.println(" sysui_flag_" + mAccessedFlags.keyAt(i) Loading
packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java +25 −1 Original line number Diff line number Diff line Loading @@ -20,13 +20,21 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; 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 android.content.Context; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; Loading @@ -36,17 +44,33 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.io.StringWriter; /** * NOTE: This test is for the version of FeatureFlagManager in src-release, which should not allow * overriding, and should never return any value other than the one provided as the default. */ @SmallTest public class FeatureFlagManagerTest extends SysuiTestCase { FeatureFlagManager mFeatureFlagManager; @Mock private SystemPropertiesHelper mProps; @Mock private Context mContext; @Mock private DumpManager mDumpManager; @Before public void setup() { MockitoAnnotations.initMocks(this); mFeatureFlagManager = new FeatureFlagManager(mDumpManager); mFeatureFlagManager = new FeatureFlagManager(mProps, mContext, mDumpManager); } @After public void onFinished() { // SystemPropertiesHelper and Context are provided for constructor consistency with the // debug version of the FeatureFlagManager, but should never be used. verifyZeroInteractions(mProps, mContext); // The dump manager should be registered with even for the release version, but that's it. verify(mDumpManager).registerDumpable(anyString(), any()); verifyNoMoreInteractions(mDumpManager); } @Test Loading