Merge "Make gradle build use debuggable FeatureFlagManager" into sc-v2-dev

This commit is contained in:
Jeff DeCew
2021-11-01 16:53:31 +00:00
committed by Android (Google) Code Review
4 changed files with 48 additions and 8 deletions

View File

@@ -52,12 +52,18 @@ java_library {
filegroup { filegroup {
name: "ReleaseJavaFiles", name: "ReleaseJavaFiles",
srcs: ["src/com/android/systemui/flags/FeatureFlagManager.java"], srcs: [
"src-release/**/*.kt",
"src-release/**/*.java",
],
} }
filegroup { filegroup {
name: "DebugJavaFiles", name: "DebugJavaFiles",
srcs: ["src-debug/com/android/systemui/flags/FeatureFlagManager.java"], srcs: [
"src-debug/**/*.kt",
"src-debug/**/*.java",
],
} }
android_library { android_library {
@@ -66,6 +72,8 @@ android_library {
"src/**/*.kt", "src/**/*.kt",
"src/**/*.java", "src/**/*.java",
"src/**/I*.aidl", "src/**/I*.aidl",
"src-release/**/*.kt",
"src-release/**/*.java",
], ],
product_variables: { product_variables: {
debuggable: { debuggable: {
@@ -159,6 +167,8 @@ android_library {
"src/**/*.kt", "src/**/*.kt",
"src/**/*.java", "src/**/*.java",
"src/**/I*.aidl", "src/**/I*.aidl",
"src-release/**/*.kt",
"src-release/**/*.java",
], ],
static_libs: [ static_libs: [
"SystemUIAnimationLib", "SystemUIAnimationLib",

View File

@@ -75,6 +75,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
} }
/** Return a {@link BooleanFlag}'s value. */ /** Return a {@link BooleanFlag}'s value. */
@Override
public boolean isEnabled(int id, boolean defaultValue) { public boolean isEnabled(int id, boolean defaultValue) {
if (!mBooleanFlagCache.containsKey(id)) { if (!mBooleanFlagCache.containsKey(id)) {
Boolean result = isEnabledInternal(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. */ /** Set whether a given {@link BooleanFlag} is enabled or not. */
@Override
public void setEnabled(int id, boolean value) { public void setEnabled(int id, boolean value) {
Boolean currentValue = isEnabledInternal(id); Boolean currentValue = isEnabledInternal(id);
if (currentValue != null && currentValue == value) { if (currentValue != null && currentValue == value) {
@@ -136,8 +138,10 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
Log.i(TAG, "Erase id " + id); Log.i(TAG, "Erase id " + id);
} }
@Override
public void addListener(Listener run) {} public void addListener(Listener run) {}
@Override
public void removeListener(Listener run) {} public void removeListener(Listener run) {}
private void restartSystemUI() { private void restartSystemUI() {
@@ -198,6 +202,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
@Override @Override
public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("can override: true");
ArrayList<String> flagStrings = new ArrayList<>(mBooleanFlagCache.size()); ArrayList<String> flagStrings = new ArrayList<>(mBooleanFlagCache.size());
for (Map.Entry<Integer, Boolean> entry : mBooleanFlagCache.entrySet()) { for (Map.Entry<Integer, Boolean> entry : mBooleanFlagCache.entrySet()) {
flagStrings.add(" sysui_flag_" + entry.getKey() + ": " + entry.getValue()); flagStrings.add(" sysui_flag_" + entry.getKey() + ": " + entry.getValue());

View File

@@ -16,6 +16,7 @@
package com.android.systemui.flags; package com.android.systemui.flags;
import android.content.Context;
import android.util.SparseBooleanArray; import android.util.SparseBooleanArray;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -39,21 +40,21 @@ import javax.inject.Inject;
public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
SparseBooleanArray mAccessedFlags = new SparseBooleanArray(); SparseBooleanArray mAccessedFlags = new SparseBooleanArray();
@Inject @Inject
public FeatureFlagManager(DumpManager dumpManager) { public FeatureFlagManager(SystemPropertiesHelper systemPropertiesHelper, Context context,
DumpManager dumpManager) {
dumpManager.registerDumpable("SysUIFlags", this); dumpManager.registerDumpable("SysUIFlags", this);
} }
public boolean isEnabled(String key, boolean defaultValue) { @Override
return defaultValue;
}
public boolean isEnabled(int key, boolean defaultValue) { public boolean isEnabled(int key, boolean defaultValue) {
mAccessedFlags.append(key, defaultValue); mAccessedFlags.append(key, defaultValue);
return defaultValue; return defaultValue;
} }
public void setEnabled(String key, boolean value) {} @Override
public void setEnabled(int key, boolean value) {} public void setEnabled(int key, boolean value) {}
@Override @Override
public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("can override: false");
int size = mAccessedFlags.size(); int size = mAccessedFlags.size();
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
pw.println(" sysui_flag_" + mAccessedFlags.keyAt(i) pw.println(" sysui_flag_" + mAccessedFlags.keyAt(i)

View File

@@ -20,13 +20,21 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; 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.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 androidx.test.filters.SmallTest;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.Mock; import org.mockito.Mock;
@@ -36,17 +44,33 @@ import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; 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 @SmallTest
public class FeatureFlagManagerTest extends SysuiTestCase { public class FeatureFlagManagerTest extends SysuiTestCase {
FeatureFlagManager mFeatureFlagManager; FeatureFlagManager mFeatureFlagManager;
@Mock private SystemPropertiesHelper mProps;
@Mock private Context mContext;
@Mock private DumpManager mDumpManager; @Mock private DumpManager mDumpManager;
@Before @Before
public void setup() { public void setup() {
MockitoAnnotations.initMocks(this); 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 @Test