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 |