diff options
-rw-r--r-- | packages/SystemUI/Android.bp | 14 | ||||
-rw-r--r-- | packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java | 5 | ||||
-rw-r--r-- | packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java (renamed from packages/SystemUI/src/com/android/systemui/flags/FeatureFlagManager.java) | 11 | ||||
-rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java | 26 |
4 files changed, 48 insertions, 8 deletions
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index c6cca5adaeb0..721b432099f5 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -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 { @@ -66,6 +72,8 @@ android_library { "src/**/*.kt", "src/**/*.java", "src/**/I*.aidl", + "src-release/**/*.kt", + "src-release/**/*.java", ], product_variables: { debuggable: { @@ -159,6 +167,8 @@ android_library { "src/**/*.kt", "src/**/*.java", "src/**/I*.aidl", + "src-release/**/*.kt", + "src-release/**/*.java", ], static_libs: [ "SystemUIAnimationLib", diff --git a/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java b/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java index 3a8ee2997025..1eeb51601682 100644 --- a/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java +++ b/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java @@ -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); @@ -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) { @@ -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() { @@ -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()); diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagManager.java b/packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java index 78f0b5f5196d..e501a073fe18 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagManager.java +++ b/packages/SystemUI/src-release/com/android/systemui/flags/FeatureFlagManager.java @@ -16,6 +16,7 @@ package com.android.systemui.flags; +import android.content.Context; import android.util.SparseBooleanArray; import androidx.annotation.NonNull; @@ -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) 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 b3c098c37dba..8243be8448c0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagManagerTest.java @@ -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; @@ -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 |