Merge "Make gradle build use debuggable FeatureFlagManager" into sc-v2-dev am: d2984e95cf
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16150895 Change-Id: I06eb2601dc83064f0cef69f0e9c2aca123523b9d
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user