summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/Android.bp12
-rw-r--r--packages/SystemUI/shared/Android.bp31
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt (renamed from packages/SystemUI/plugin/src/com/android/systemui/flags/Flag.kt)0
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt64
-rw-r--r--packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/Flags.java (renamed from packages/SystemUI/plugin/src/com/android/systemui/flags/Flags.java)0
6 files changed, 112 insertions, 4 deletions
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 721b432099f5..f44893e013ab 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -50,6 +50,17 @@ java_library {
srcs: ["src/com/android/systemui/EventLogTags.logtags"],
}
+java_library {
+ name: "SystemUI-flags",
+ srcs: [
+ "src/com/android/systemui/flags/Flags.java",
+ ],
+ libs: [
+ "SystemUI-flag-types",
+ ],
+ static_kotlin_stdlib: false,
+}
+
filegroup {
name: "ReleaseJavaFiles",
srcs: [
@@ -116,6 +127,7 @@ android_library {
"iconloader_base",
"SystemUI-tags",
"SystemUI-proto",
+ "SystemUI-flags",
"monet",
"dagger2",
"jsr330",
diff --git a/packages/SystemUI/shared/Android.bp b/packages/SystemUI/shared/Android.bp
index 23307de519c8..7cf22a38837b 100644
--- a/packages/SystemUI/shared/Android.bp
+++ b/packages/SystemUI/shared/Android.bp
@@ -45,9 +45,40 @@ android_library {
":wm_shell-aidls",
":wm_shell_util-sources",
],
+ libs: [
+ "SystemUI-flags",
+ ],
static_libs: [
"PluginCoreLib",
"androidx.dynamicanimation_dynamicanimation",
+ "androidx.concurrent_concurrent-futures",
+ ],
+ java_version: "1.8",
+ min_sdk_version: "current",
+}
+
+java_library {
+ name: "SystemUI-flag-types",
+ srcs: [
+ "src/com/android/systemui/flags/Flag.kt",
+ ],
+ static_kotlin_stdlib: false,
+ java_version: "1.8",
+ min_sdk_version: "current",
+}
+
+java_library {
+ name: "SystemUIFlagsLib",
+ srcs: [
+ "src/com/android/systemui/flags/**/*.kt",
+ ],
+ static_kotlin_stdlib: false,
+ libs: [
+ "androidx.concurrent_concurrent-futures",
+ "SystemUI-flags",
+ ],
+ static_libs: [
+ "SystemUI-flag-types",
],
java_version: "1.8",
min_sdk_version: "current",
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/flags/Flag.kt b/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt
index 68834bc2aa23..68834bc2aa23 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/flags/Flag.kt
+++ b/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt
diff --git a/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt b/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt
new file mode 100644
index 000000000000..89fee7084332
--- /dev/null
+++ b/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.flags
+
+import android.content.Context
+import android.content.Intent
+import androidx.concurrent.futures.CallbackToFutureAdapter
+import com.google.common.util.concurrent.ListenableFuture
+
+class FlagManager constructor(val context: Context) {
+ companion object {
+ const val RECEIVING_PACKAGE = "com.android.systemui"
+ const val ACTION_SET_FLAG = "com.android.systemui.action.SET_FLAG"
+ const val FLAGS_PERMISSION = "com.android.systemui.permission.FLAGS"
+ const val FIELD_ID = "id"
+ const val FIELD_VALUE = "value"
+ }
+
+ fun getFlagsFuture(): ListenableFuture<Collection<Flag<*>>> {
+ val knownFlagMap = Flags.collectFlags()
+ // Possible todo in the future: query systemui async to actually get the known flag ids.
+ return CallbackToFutureAdapter.getFuture(
+ CallbackToFutureAdapter.Resolver {
+ completer: CallbackToFutureAdapter.Completer<Collection<Flag<*>>> ->
+ completer.set(knownFlagMap.values as Collection<Flag<*>>)
+ "Retrieving Flags"
+ })
+ }
+
+ fun setFlagValue(id: Int, enabled: Boolean) {
+ val intent = createIntent(id)
+ intent.putExtra(FIELD_VALUE, enabled)
+
+ context.sendBroadcast(intent)
+ }
+
+ fun eraseFlag(id: Int) {
+ val intent = createIntent(id)
+
+ context.sendBroadcast(intent)
+ }
+
+ private fun createIntent(id: Int): Intent {
+ val intent = Intent(ACTION_SET_FLAG)
+ intent.setPackage(RECEIVING_PACKAGE)
+ intent.putExtra(FIELD_ID, id)
+
+ return intent
+ }
+} \ No newline at end of file
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 1eeb51601682..c2ed1ac6f0e8 100644
--- a/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java
+++ b/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java
@@ -16,6 +16,11 @@
package com.android.systemui.flags;
+import static com.android.systemui.flags.FlagManager.ACTION_SET_FLAG;
+import static com.android.systemui.flags.FlagManager.FIELD_ID;
+import static com.android.systemui.flags.FlagManager.FIELD_VALUE;
+import static com.android.systemui.flags.FlagManager.FLAGS_PERMISSION;
+
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -55,11 +60,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable {
private static final String SYSPROP_PREFIX = "persist.systemui.flag_";
private static final String FIELD_TYPE = "type";
- private static final String FIELD_ID = "id";
- private static final String FIELD_VALUE = "value";
private static final String TYPE_BOOLEAN = "boolean";
- private static final String ACTION_SET_FLAG = "com.android.systemui.action.SET_FLAG";
- private static final String FLAGS_PERMISSION = "com.android.systemui.permission.FLAGS";
private final SystemPropertiesHelper mSystemPropertiesHelper;
private final Map<Integer, Boolean> mBooleanFlagCache = new HashMap<>();
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java
index 3761d42ae98c..3761d42ae98c 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/flags/Flags.java
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.java